diff --git a/.astyleignore b/.astyleignore index 7efdc16bbd8..121b6f78cee 100644 --- a/.astyleignore +++ b/.astyleignore @@ -22,4 +22,5 @@ TESTS/mbed_hal/trng/pithy targets components/802.15.4_RF components/wifi +components/TARGET_PSA/TARGET_TFM tools diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index e3ecdd70b27..289c5740a39 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,15 +1,15 @@ ### Description - ### Pull request type - +### Release Notes + + diff --git a/.travis.yml b/.travis.yml index 6c2caa9a6c4..a40619f9993 100644 --- a/.travis.yml +++ b/.travis.yml @@ -323,6 +323,8 @@ matrix: - env: - NAME=psa-autogen script: - # Run SPM code generator and check that changes are not needed - - python tools/spm/generate_partition_code.py + # Run SPM code generators and check that changes are not needed + - python tools/psa/generate_mbed_spm_partition_code.py + - git diff --exit-code + - python tools/psa/generate_tfm_partition_code.py - git diff --exit-code 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..8e7c48b3951 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,23 @@ +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 +- [components/TARGET_PSA/TARGET_TFM](./components/TARGET_PSA/TARGET_TFM) - 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/reset_reason.py b/TESTS/host_tests/reset_reason.py new file mode 100644 index 00000000000..c8769e22a20 --- /dev/null +++ b/TESTS/host_tests/reset_reason.py @@ -0,0 +1,163 @@ +""" +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. +""" +import time +from mbed_host_tests import BaseHostTest +from mbed_host_tests.host_tests_runner.host_test_default import DefaultTestSelector + +DEFAULT_SYNC_DELAY = 4.0 + +MSG_VALUE_WATCHDOG_PRESENT = 'wdg_present' +MSG_VALUE_DUMMY = '0' +MSG_VALUE_RESET_REASON_GET = 'get' +MSG_VALUE_RESET_REASON_CLEAR = 'clear' +MSG_VALUE_DEVICE_RESET_NVIC = 'nvic' +MSG_VALUE_DEVICE_RESET_WATCHDOG = 'watchdog' + +MSG_KEY_DEVICE_READY = 'ready' +MSG_KEY_RESET_REASON_RAW = 'reason_raw' +MSG_KEY_RESET_REASON = 'reason' +MSG_KEY_DEVICE_RESET = 'reset' +MSG_KEY_SYNC = '__sync' + +RESET_REASONS = { + 'POWER_ON': '0', + 'PIN_RESET': '1', + 'BROWN_OUT': '2', + 'SOFTWARE': '3', + 'WATCHDOG': '4', + 'LOCKUP': '5', + 'WAKE_LOW_POWER': '6', + 'ACCESS_ERROR': '7', + 'BOOT_ERROR': '8', + 'MULTIPLE': '9', + 'PLATFORM': '10', + 'UNKNOWN': '11' +} + + +def raise_if_different(expected, actual, text=''): + """Raise a RuntimeError if actual is different than expected.""" + if expected != actual: + raise RuntimeError('{}Got {!r}, expected {!r}' + .format(text, actual, expected)) + + +class ResetReasonTest(BaseHostTest): + """Test for the Reset Reason HAL API. + + Given a device supporting a Reset Reason API. + When the device is restarted using various methods. + Then the device returns a correct reset reason for every restart. + """ + + def __init__(self): + super(ResetReasonTest, self).__init__() + self.device_has_watchdog = None + self.raw_reset_reasons = set() + self.sync_delay = DEFAULT_SYNC_DELAY + self.test_steps_sequence = self.test_steps() + # Advance the coroutine to it's first yield statement. + self.test_steps_sequence.send(None) + + def setup(self): + sync_delay = self.get_config_item('forced_reset_timeout') + self.sync_delay = sync_delay if sync_delay is not None else DEFAULT_SYNC_DELAY + self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready) + self.register_callback(MSG_KEY_RESET_REASON_RAW, self.cb_reset_reason_raw) + self.register_callback(MSG_KEY_RESET_REASON, self.cb_reset_reason) + self.register_callback(MSG_KEY_DEVICE_RESET, self.cb_reset_reason) + + def cb_device_ready(self, key, value, timestamp): + """Request a raw value of the reset_reason register. + + Additionally, save the device's watchdog status on the first call. + """ + if self.device_has_watchdog is None: + self.device_has_watchdog = (value == MSG_VALUE_WATCHDOG_PRESENT) + self.send_kv(MSG_KEY_RESET_REASON_RAW, MSG_VALUE_RESET_REASON_GET) + + def cb_reset_reason_raw(self, key, value, timestamp): + """Verify that the raw reset_reason register value is unique. + + Fail the test suite if the raw reset_reason value is not unique. + Request a platform independent reset_reason otherwise. + """ + if value in self.raw_reset_reasons: + self.log('TEST FAILED: The raw reset reason is not unique. ' + '{!r} is already present in {!r}.' + .format(value, self.raw_reset_reasons)) + self.notify_complete(False) + else: + self.raw_reset_reasons.add(value) + self.send_kv(MSG_KEY_RESET_REASON, MSG_VALUE_RESET_REASON_GET) + + def cb_reset_reason(self, key, value, timestamp): + """Feed the test_steps coroutine with reset_reason value. + + Pass the test suite if the coroutine yields True. + Fail the test suite if the iterator stops or raises a RuntimeError. + """ + try: + if self.test_steps_sequence.send(value): + self.notify_complete(True) + except (StopIteration, RuntimeError) as exc: + self.log('TEST FAILED: {}'.format(exc)) + self.notify_complete(False) + + def test_steps(self): + """Generate a sequence of test steps. + + This coroutine calls yield to wait for the input from the device + (the reset_reason). If the device gives the wrong response, the + generator raises a RuntimeError exception and fails the test. + """ + # Ignore the first reason. + __ignored_reset_reason = yield + self.raw_reset_reasons.clear() + self.send_kv(MSG_KEY_RESET_REASON, MSG_VALUE_RESET_REASON_CLEAR) + __ignored_clear_ack = yield + + # Request a NVIC_SystemReset() call. + self.send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_NVIC) + __ignored_reset_ack = yield + time.sleep(self.sync_delay) + self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY) + reset_reason = yield + raise_if_different(RESET_REASONS['SOFTWARE'], reset_reason, 'Wrong reset reason. ') + self.send_kv(MSG_KEY_RESET_REASON, MSG_VALUE_RESET_REASON_CLEAR) + __ignored_clear_ack = yield + + # Reset the device using DAP. + self.reset_dut(DefaultTestSelector.RESET_TYPE_SW_RST) + reset_reason = yield + raise_if_different(RESET_REASONS['PIN_RESET'], reset_reason, 'Wrong reset reason. ') + self.send_kv(MSG_KEY_RESET_REASON, MSG_VALUE_RESET_REASON_CLEAR) + __ignored_clear_ack = yield + + # Start a watchdog timer and wait for it to reset the device. + if not self.device_has_watchdog: + self.log('DUT does not have a watchdog. Skipping this reset reason.') + else: + self.send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_WATCHDOG) + __ignored_reset_ack = yield + time.sleep(self.sync_delay) + self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY) + reset_reason = yield + raise_if_different(RESET_REASONS['WATCHDOG'], reset_reason, 'Wrong reset reason. ') + + # The sequence is correct -- test passed. + yield True diff --git a/TESTS/host_tests/sync_on_reset.py b/TESTS/host_tests/sync_on_reset.py new file mode 100644 index 00000000000..de3cbc0ae35 --- /dev/null +++ b/TESTS/host_tests/sync_on_reset.py @@ -0,0 +1,73 @@ +""" +mbed SDK +Copyright (c) 2017 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. +""" +import time +from mbed_host_tests import BaseHostTest + +DEFAULT_SYNC_DELAY = 4.0 + +MSG_VALUE_DUMMY = '0' +MSG_KEY_DEVICE_READY = 'ready' +MSG_KEY_START_CASE = 'start_case' +MSG_KEY_DEVICE_RESET = 'reset_on_case_teardown' +MSG_KEY_SYNC = '__sync' + + +class SyncOnReset(BaseHostTest): + """Host side test that handles device reset during case teardown. + + Given a device that performs a reset during a test case teardown. + When the device notifies the host about the reset. + Then the host: + * keeps track of the test case index of the current test suite, + * performs a dev-host handshake, + * advances the test suite to next test case. + + Note: + Developed for a watchdog test, so that it can be run on devices that + do not support watchdog timeout updates after the initial setup. + As a solution, after testing watchdog with one set of settings, the + device performs a reset and notifies the host with the test case number, + so that the test suite may be advanced once the device boots again. + """ + + def __init__(self): + super(SyncOnReset, self).__init__() + self.test_case_num = 0 + self.sync_delay = DEFAULT_SYNC_DELAY + + def setup(self): + sync_delay = self.get_config_item('forced_reset_timeout') + self.sync_delay = sync_delay if sync_delay is not None else DEFAULT_SYNC_DELAY + self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready) + self.register_callback(MSG_KEY_DEVICE_RESET, self.cb_device_reset) + + def cb_device_ready(self, key, value, timestamp): + """Advance the device test suite to the next test case.""" + self.send_kv(MSG_KEY_START_CASE, self.test_case_num) + + def cb_device_reset(self, key, value, timestamp): + """Wait for the device to boot and perform a handshake. + + Additionally, keep track of the last test case number. + """ + try: + self.test_case_num = int(value) + except ValueError: + pass + self.test_case_num += 1 + time.sleep(self.sync_delay) + self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY) diff --git a/TESTS/host_tests/watchdog_reset.py b/TESTS/host_tests/watchdog_reset.py new file mode 100644 index 00000000000..4f12d420f82 --- /dev/null +++ b/TESTS/host_tests/watchdog_reset.py @@ -0,0 +1,145 @@ +""" +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. +""" +import collections +import threading +from mbed_host_tests import BaseHostTest + +TestCaseData = collections.namedtuple('TestCaseData', ['index', 'data_to_send']) + +DEFAULT_SYNC_DELAY = 4.0 +MAX_HB_PERIOD = 2.5 # [s] Max expected heartbeat period. + +MSG_VALUE_DUMMY = '0' +CASE_DATA_INVALID = 0xffffffff +CASE_DATA_PHASE2_OK = 0xfffffffe +CASE_DATA_INSUFF_HB = 0x0 + +MSG_KEY_SYNC = '__sync' +MSG_KEY_DEVICE_READY = 'ready' +MSG_KEY_START_CASE = 'start_case' +MSG_KEY_DEVICE_RESET = 'dev_reset' +MSG_KEY_HEARTBEAT = 'hb' + + +class WatchdogReset(BaseHostTest): + """Host side test that handles device reset. + + Given a device with a watchdog timer started. + When the device notifies the host about an incoming reset. + Then the host: + * keeps track of the test case index of the current test suite, + * performs a dev-host handshake. + """ + + def __init__(self): + super(WatchdogReset, self).__init__() + self.current_case = TestCaseData(0, CASE_DATA_INVALID) + self.__handshake_timer = None + self.sync_delay = DEFAULT_SYNC_DELAY + self.drop_heartbeat_messages = True + self.hb_timestamps_us = [] + + def handshake_timer_start(self, seconds=1.0, pre_sync_fun=None): + """Start a new handshake timer.""" + + def timer_handler(): + """Perform a dev-host handshake by sending a sync message.""" + if pre_sync_fun is not None: + pre_sync_fun() + self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY) + + self.__handshake_timer = threading.Timer(seconds, timer_handler) + self.__handshake_timer.start() + + def handshake_timer_cancel(self): + """Cancel the current handshake timer.""" + try: + self.__handshake_timer.cancel() + except AttributeError: + pass + finally: + self.__handshake_timer = None + + def heartbeat_timeout_handler(self): + """Handler for the heartbeat timeout. + + Compute the time span of the last heartbeat sequence. + Set self.current_case.data_to_send to CASE_DATA_INVALID if no heartbeat was received. + Set self.current_case.data_to_send to CASE_DATA_INSUFF_HB if only one heartbeat was + received. + """ + self.drop_heartbeat_messages = True + dev_data = CASE_DATA_INVALID + if len(self.hb_timestamps_us) == 1: + dev_data = CASE_DATA_INSUFF_HB + self.log('Not enough heartbeats received.') + elif len(self.hb_timestamps_us) >= 2: + dev_data = int(round(0.001 * (self.hb_timestamps_us[-1] - self.hb_timestamps_us[0]))) + self.log('Heartbeat time span was {} ms.'.format(dev_data)) + self.current_case = TestCaseData(self.current_case.index, dev_data) + + def setup(self): + sync_delay = self.get_config_item('forced_reset_timeout') + self.sync_delay = sync_delay if sync_delay is not None else DEFAULT_SYNC_DELAY + self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready) + self.register_callback(MSG_KEY_DEVICE_RESET, self.cb_device_reset) + self.register_callback(MSG_KEY_HEARTBEAT, self.cb_heartbeat) + + def teardown(self): + self.handshake_timer_cancel() + + def cb_device_ready(self, key, value, timestamp): + """Advance the device test suite to a proper test case. + + Additionally, send test case data to the device. + """ + self.handshake_timer_cancel() + msg_value = '{0.index:02x},{0.data_to_send:08x}'.format(self.current_case) + self.send_kv(MSG_KEY_START_CASE, msg_value) + self.drop_heartbeat_messages = False + self.hb_timestamps_us = [] + + def cb_device_reset(self, key, value, timestamp): + """Keep track of the test case number. + + Also set a new handshake timeout, so when the device gets + restarted by the watchdog, the communication will be restored + by the __handshake_timer. + """ + self.handshake_timer_cancel() + case_num, dev_reset_delay_ms = (int(i, base=16) for i in value.split(',')) + self.current_case = TestCaseData(case_num, CASE_DATA_PHASE2_OK) + self.handshake_timer_start(self.sync_delay + dev_reset_delay_ms / 1000.0) + + def cb_heartbeat(self, key, value, timestamp): + """Save the timestamp of a heartbeat message. + + Additionally, keep track of the test case number. + + Also each heartbeat sets a new timeout, so when the device gets + restarted by the watchdog, the communication will be restored + by the __handshake_timer. + """ + if self.drop_heartbeat_messages: + return + self.handshake_timer_cancel() + case_num, timestamp_us = (int(i, base=16) for i in value.split(',')) + self.current_case = TestCaseData(case_num, CASE_DATA_INVALID) + self.hb_timestamps_us.append(timestamp_us) + self.handshake_timer_start( + seconds=(MAX_HB_PERIOD + self.sync_delay), + pre_sync_fun=self.heartbeat_timeout_handler) diff --git a/TESTS/mbed-crypto/sanity/main.cpp b/TESTS/mbed-crypto/sanity/main.cpp index 4d9c972a54d..d71563dbcba 100644 --- a/TESTS/mbed-crypto/sanity/main.cpp +++ b/TESTS/mbed-crypto/sanity/main.cpp @@ -85,7 +85,7 @@ void test_crypto_random(void) void test_crypto_asymmetric_encrypt_decrypt(void) { psa_status_t status = PSA_SUCCESS; - psa_key_slot_t slot = 1; + psa_key_handle_t key_handle = 0; 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; @@ -94,21 +94,23 @@ void test_crypto_asymmetric_encrypt_decrypt(void) unsigned char encrypted[64]; unsigned char decrypted[sizeof(input)]; - psa_key_policy_init(&policy); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_allocate_key(&key_handle)); + + policy = psa_key_policy_init(); 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_set_key_policy(key_handle, &policy)); - status = psa_generate_key(slot, key_type, key_bits, NULL, 0); + status = psa_generate_key(key_handle, 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(PSA_SUCCESS, psa_get_key_information(key_handle, 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, + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_asymmetric_encrypt(key_handle, 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, + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_asymmetric_decrypt(key_handle, alg, encrypted, sizeof(encrypted), NULL, 0, decrypted, sizeof(decrypted), &output_length)); - TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(slot)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(key_handle)); TEST_ASSERT_EQUAL(sizeof(input), output_length); TEST_ASSERT_EQUAL_UINT8_ARRAY(input, decrypted, output_length); } @@ -124,6 +126,7 @@ void test_crypto_hash_verify(void) 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55 }; + operation = psa_hash_operation_init(); 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)); @@ -131,7 +134,7 @@ void test_crypto_hash_verify(void) void test_crypto_symmetric_cipher_encrypt_decrypt(void) { - psa_key_slot_t slot = 1; + psa_key_handle_t key_handle = 0; psa_key_type_t key_type = PSA_KEY_TYPE_AES; psa_algorithm_t alg = PSA_ALG_CBC_NO_PADDING; psa_cipher_operation_t operation; @@ -151,12 +154,16 @@ void test_crypto_symmetric_cipher_encrypt_decrypt(void) }; unsigned char encrypted[sizeof(input)], decrypted[sizeof(input)], iv[16]; + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_allocate_key(&key_handle)); + memset(iv, 0x2a, sizeof(iv)); - psa_key_policy_init(&policy); + policy = psa_key_policy_init(); 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_set_key_policy(key_handle, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_import_key(key_handle, key_type, key, sizeof(key))); + + operation = psa_cipher_operation_init(); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_encrypt_setup(&operation, key_handle, 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)); @@ -165,20 +172,21 @@ void test_crypto_symmetric_cipher_encrypt_decrypt(void) 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)); + operation = psa_cipher_operation_init(); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_cipher_decrypt_setup(&operation, key_handle, 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(PSA_SUCCESS, psa_destroy_key(key_handle)); TEST_ASSERT_EQUAL_HEX8_ARRAY(input, decrypted, sizeof(input)); } void test_crypto_asymmetric_sign_verify(void) { - psa_key_slot_t slot = 1; + psa_key_handle_t key_handle = 0; 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; @@ -252,47 +260,162 @@ void test_crypto_asymmetric_sign_verify(void) unsigned char signature[sizeof(expected_signature)]; size_t signature_len; - psa_key_policy_init(&policy); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_allocate_key(&key_handle)); + + policy = psa_key_policy_init(); 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), + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(key_handle, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_import_key(key_handle, key_type, key, sizeof(key))); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_asymmetric_sign(key_handle, 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), + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_asymmetric_verify(key_handle, alg, input, sizeof(input), signature, signature_len)); - TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(slot)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(key_handle)); } void test_crypto_key_derivation(void) { - psa_key_slot_t slot = 1, derived_slot = 2; + psa_key_handle_t key_handle = 0, derived_key_handle = 0; 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_type_t key_type = PSA_KEY_TYPE_DERIVE, 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); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_allocate_key(&key_handle)); + + policy = psa_key_policy_init(); 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, + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(key_handle, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generate_key(key_handle, key_type, key_bits, NULL, 0)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_key_derivation(&generator, key_handle, alg, NULL, 0, NULL, 0, PSA_BITS_TO_BYTES(derived_key_bits))); + + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_allocate_key(&derived_key_handle)); 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, + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(derived_key_handle, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generator_import_key(derived_key_handle, 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(PSA_SUCCESS, psa_get_key_information(derived_key_handle, &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)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(key_handle)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(derived_key_handle)); +} + +void test_crypto_key_handles(void) +{ + psa_key_id_t id = 999; + psa_key_type_t type = PSA_KEY_TYPE_AES; + size_t bits = 256; + psa_key_usage_t usage = PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT; + psa_algorithm_t alg = PSA_ALG_CBC_NO_PADDING; + psa_key_handle_t key_handle; + psa_key_policy_t policy; + + key_handle = 0; + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_allocate_key(&key_handle)); + TEST_ASSERT_NOT_EQUAL(0, key_handle); + policy = psa_key_policy_init(); + psa_key_policy_set_usage(&policy, usage, alg); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(key_handle, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generate_key(key_handle, type, bits, NULL, 0)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_close_key(key_handle)); + + key_handle = 0; + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_allocate_key(&key_handle)); + TEST_ASSERT_NOT_EQUAL(0, key_handle); + policy = psa_key_policy_init(); + psa_key_policy_set_usage(&policy, usage, alg); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(key_handle, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generate_key(key_handle, type, bits, NULL, 0)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(key_handle)); + + key_handle = 0; + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_create_key(PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle)); + TEST_ASSERT_NOT_EQUAL(0, key_handle); + policy = psa_key_policy_init(); + psa_key_policy_set_usage(&policy, usage, alg); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_set_key_policy(key_handle, &policy)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_generate_key(key_handle, type, bits, NULL, 0)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_close_key(key_handle)); + + key_handle = 0; + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_open_key(PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle)); + TEST_ASSERT_NOT_EQUAL(0, key_handle); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_destroy_key(key_handle)); + + key_handle = 0; + TEST_ASSERT_EQUAL(PSA_ERROR_DOES_NOT_EXIST, psa_open_key(PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle)); } +void test_crypto_hash_clone(void) +{ + psa_algorithm_t alg = PSA_ALG_SHA_256; + unsigned char hash[PSA_HASH_MAX_SIZE]; + size_t hash_len; + psa_hash_operation_t source; + psa_hash_operation_t target; + /* SHA-256 hash of an empty string */ + static const unsigned char expected_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 + }; + + source = psa_hash_operation_init(); + target = psa_hash_operation_init(); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_setup(&source, alg)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_finish(&source, hash, sizeof(hash), &hash_len)); + /* should fail because psa_hash_finish has been called on source */ + TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, psa_hash_clone(&source, &target)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&source)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&target)); + + source = psa_hash_operation_init(); + target = psa_hash_operation_init(); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_setup(&source, alg)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_verify(&source, expected_hash, sizeof(expected_hash))); + /* should fail because psa_hash_verify has been called on source */ + TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, psa_hash_clone(&source, &target)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&source)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&target)); + + source = psa_hash_operation_init(); + target = psa_hash_operation_init(); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_setup(&source, alg)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&source)); + /* should fail because psa_hash_abort has been called on source */ + TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, psa_hash_clone(&source, &target)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&target)); + + source = psa_hash_operation_init(); + target = psa_hash_operation_init(); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_setup(&source, alg)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_setup(&target, alg)); + /* should fail because psa_hash_setup has been called on target */ + TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, psa_hash_clone(&source, &target)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&source)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&target)); + + source = psa_hash_operation_init(); + target = psa_hash_operation_init(); + /* should fail because psa_hash_setup has not been called on source */ + TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, psa_hash_clone(&source, &target)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&source)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&target)); + + source = psa_hash_operation_init(); + target = psa_hash_operation_init(); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_setup(&source, alg)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_clone(&source, &target)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&source)); + TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_hash_abort(&target)); +} utest::v1::status_t case_setup_handler(const Case *const source, const size_t index_of_case) { @@ -326,6 +449,8 @@ Case cases[] = { 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), + Case("mbed-crypto key handles", case_setup_handler, test_crypto_key_handles, case_teardown_handler), + Case("mbed-crypto hash clone", case_setup_handler, test_crypto_hash_clone, case_teardown_handler), }; Specification specification(test_setup, cases); diff --git a/TESTS/mbed_drivers/flashiap/main.cpp b/TESTS/mbed_drivers/flashiap/main.cpp index 9cd3cd861bc..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); } diff --git a/TESTS/mbed_drivers/reset_reason/ResetReason_tests.h b/TESTS/mbed_drivers/reset_reason/ResetReason_tests.h new file mode 100644 index 00000000000..7311c24f7e4 --- /dev/null +++ b/TESTS/mbed_drivers/reset_reason/ResetReason_tests.h @@ -0,0 +1,41 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 drivers_reset_reason_tests + * @{ + */ + +#ifndef MBED_DRIVERS_RESET_REASON_TESTS_H +#define MBED_DRIVERS_RESET_REASON_TESTS_H + +#if DEVICE_RESET_REASON + +/** Test the ResetReason driver API + * + * Given a device supporting a ResetReason API, + * when the device is restarted, + * then the device returns a correct reset reason for every restart. + */ +void test_reset_reason(); + +#endif + +#endif + +/** @}*/ + diff --git a/TESTS/mbed_drivers/reset_reason/main.cpp b/TESTS/mbed_drivers/reset_reason/main.cpp new file mode 100644 index 00000000000..4b1eaa8e3a7 --- /dev/null +++ b/TESTS/mbed_drivers/reset_reason/main.cpp @@ -0,0 +1,142 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 !DEVICE_RESET_REASON +#error [NOT_SUPPORTED] Reset reason API not supported for this target +#endif + +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "drivers/ResetReason.h" +#include "ResetReason_tests.h" +#include "mbed.h" + +#if DEVICE_WATCHDOG +#include "drivers/Watchdog.h" + +#define MSG_VALUE_WATCHDOG_STATUS "wdg_present" +#define WDG_TIMEOUT_MS 50UL +#define WDG_TIMEOUT_DELTA_MS 50UL + +#else +#define MSG_VALUE_WATCHDOG_STATUS "no_wdg" +#endif + +#define MSG_VALUE_DUMMY "0" +#define MSG_VALUE_RESET_REASON_GET "get" +#define MSG_VALUE_RESET_REASON_CLEAR "clear" +#define MSG_VALUE_RESET_REASON_CLEAR_ACK "cleared" +#define MSG_VALUE_DEVICE_RESET_ACK "ack" +#define MSG_VALUE_DEVICE_RESET_NVIC "nvic" +#define MSG_VALUE_DEVICE_RESET_WATCHDOG "watchdog" +#define MSG_VALUE_LEN 16 +#define MSG_KEY_LEN 16 + +#define MSG_KEY_DEVICE_READY "ready" +#define MSG_KEY_RESET_REASON_RAW "reason_raw" +#define MSG_KEY_RESET_REASON "reason" +#define MSG_KEY_DEVICE_RESET "reset" + +typedef enum { + CMD_STATUS_CONTINUE, + CMD_STATUS_ERROR +} cmd_status_t; + +static cmd_status_t handle_command(const char *key, const char *value) +{ + if (strcmp(key, MSG_KEY_RESET_REASON_RAW) == 0) { + uint32_t raw_reason = ResetReason::get_raw(); + char raw_reason_hex_str[9] = { }; + int raw_reason_hex_str_len = snprintf(raw_reason_hex_str, + sizeof raw_reason_hex_str, "%08lx", raw_reason); + + if (raw_reason_hex_str_len != (sizeof raw_reason_hex_str) - 1) { + TEST_ASSERT_MESSAGE(0, "Failed to compose raw reset reason hex string."); + return CMD_STATUS_ERROR; + } + + greentea_send_kv(MSG_KEY_RESET_REASON_RAW, raw_reason_hex_str); + return CMD_STATUS_CONTINUE; + } + + if (strcmp(key, MSG_KEY_RESET_REASON) == 0 && strcmp(value, MSG_VALUE_RESET_REASON_GET) == 0) { + int reason = (int) ResetReason::get(); + greentea_send_kv(MSG_KEY_RESET_REASON, reason); + return CMD_STATUS_CONTINUE; + } + + if (strcmp(key, MSG_KEY_RESET_REASON) == 0 && strcmp(value, MSG_VALUE_RESET_REASON_CLEAR) == 0) { + /* In order to keep this code compatible with a host script common for + * both HAL API tests and driver API tests, ignore the 'clear' command + * received from host. + * + * The driver API does not provide clear() function directly. + */ + greentea_send_kv(MSG_KEY_RESET_REASON, MSG_VALUE_RESET_REASON_CLEAR_ACK); + return CMD_STATUS_CONTINUE; + } + + if (strcmp(key, MSG_KEY_DEVICE_RESET) == 0 && strcmp(value, MSG_VALUE_DEVICE_RESET_NVIC) == 0) { + greentea_send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_ACK); + wait_ms(10); // Wait for the serial buffers to flush. + NVIC_SystemReset(); + TEST_ASSERT_MESSAGE(0, "NVIC_SystemReset did not reset the device as expected."); + return CMD_STATUS_ERROR; + } + +#if DEVICE_WATCHDOG + if (strcmp(key, MSG_KEY_DEVICE_RESET) == 0 && strcmp(value, MSG_VALUE_DEVICE_RESET_WATCHDOG) == 0) { + greentea_send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_ACK); + wait_ms(10); // Wait for the serial buffers to flush. + Watchdog watchdog; + if (watchdog.start(WDG_TIMEOUT_MS) != WATCHDOG_STATUS_OK) { + TEST_ASSERT_MESSAGE(0, "watchdog.start() error."); + return CMD_STATUS_ERROR; + } + wait_ms(WDG_TIMEOUT_MS + WDG_TIMEOUT_DELTA_MS); + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); + return CMD_STATUS_ERROR; + } +#endif + + TEST_ASSERT_MESSAGE(0, "Invalid message key."); + return CMD_STATUS_ERROR; +} + +void test_reset_reason() +{ + // Report readiness and watchdog status. + greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_WATCHDOG_STATUS); + + cmd_status_t cmd_status = CMD_STATUS_CONTINUE; + static char _key[MSG_KEY_LEN + 1] = { }; + static char _value[MSG_VALUE_LEN + 1] = { }; + + // Let the host side decide what to do and just handle the commands. + while (CMD_STATUS_CONTINUE == cmd_status) { + memset(_key, 0, sizeof _key); + memset(_value, 0, sizeof _value); + greentea_parse_kv(_key, _value, MSG_KEY_LEN, MSG_VALUE_LEN); + cmd_status = handle_command(_key, _value); + } +} + +int main() +{ + GREENTEA_SETUP(60, "reset_reason"); + test_reset_reason(); // The result of this test suite is reported by the host side. + GREENTEA_TESTSUITE_RESULT(0); // Fail on any error. +} diff --git a/TESTS/mbed_drivers/watchdog/Watchdog_tests.h b/TESTS/mbed_drivers/watchdog/Watchdog_tests.h new file mode 100644 index 00000000000..86f20fc84e0 --- /dev/null +++ b/TESTS/mbed_drivers/watchdog/Watchdog_tests.h @@ -0,0 +1,114 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 drivers_watchdog_tests + * @{ + */ + +#ifndef MBED_DRIVERS_WATCHDOG_TESTS_H +#define MBED_DRIVERS_WATCHDOG_TESTS_H + +#if DEVICE_WATCHDOG + +/** Test Watchdog max_timeout validity + * + * Given a device supporting Watchdog driver API, + * when @a Watchdog::max_timeout() is called, + * then the returned value is greater than 1. + */ +void test_max_timeout_is_valid(); + +/** Test Watchdog stop + * + * Given the Watchdog is *NOT* running, + * when @a Watchdog::stop() is called, + * then WATCHDOG_STATUS_OK is returned. + * + * Given the Watchdog is running, + * when @a Watchdog::stop() is called before the timeout expires, + * then WATCHDOG_STATUS_OK is returned and the device is not restarted. + * + * Given the Watchdog is *NOT* running (it has already been stopped), + * when @a Watchdog::stop() is called, + * then WATCHDOG_STATUS_OK is returned. + */ +void test_stop(); + +/** Test Watchdog start multiple times + * + * Given @a max_timeout value returned by @a Watchdog::max_timeout(), + * + * when @a Watchdog::start(max_timeout - delta) is called, + * then @a WATCHDOG_STATUS_OK is returned + * and @a Watchdog::reload_value() returns max_timeout - delta; + * + * when @a Watchdog::start(max_timeout) is called, + * then @a WATCHDOG_STATUS_OK is returned + * and @a Watchdog::reload_value() returns max_timeout; + * + * when @a Watchdog::start(max_timeout + delta) is called, + * then @a WATCHDOG_STATUS_INVALID_ARGUMENT is returned + * and @a Watchdog::reload_value() returns previously set value (max_timeout); + * + * when @a Watchdog::start(0) is called, + * then @a WATCHDOG_STATUS_INVALID_ARGUMENT is returned + * and @a Watchdog::reload_value() returns previously set value (max_timeout). + */ +void test_restart(); + +/** Test Watchdog start with 0 ms timeout + * + * Given a device supporting Watchdog driver API, + * when @a Watchdog::start() is called with @a timeout set to 0 ms, + * then @a WATCHDOG_STATUS_INVALID_ARGUMENT is returned. + */ +void test_start_zero(); + +/** Test Watchdog start + * + * Given a value of X ms which is within supported Watchdog timeout range, + * when @a Watchdog::start() is called with @a timeout set to X ms, + * then @a WATCHDOG_STATUS_OK is returned + * and @a Watchdog::reload_value() returns X. + */ +template +void test_start(); + +/** Test Watchdog start with max_timeout + * + * Given @a max_timeout value returned by @a Watchdog::max_timeout(), + * when @a Watchdog::start() is called with @a timeout set to max_timeout, + * then @a WATCHDOG_STATUS_OK is returned + * and @a Watchdog::reload_value() returns max_timeout. + */ +void test_start_max_timeout(); + +/** Test Watchdog start with a timeout value greater than max_timeout + * + * Given @a max_timeout value returned by @a Watchdog::max_timeout(), + * when @a Watchdog::start() is called with @a timeout set to max_timeout + 1, + * then @a WATCHDOG_STATUS_INVALID_ARGUMENT is retuned. + */ +void test_start_max_timeout_exceeded(); + +#endif + +#endif + +/** @}*/ + diff --git a/TESTS/mbed_drivers/watchdog/main.cpp b/TESTS/mbed_drivers/watchdog/main.cpp new file mode 100644 index 00000000000..d9ed790055f --- /dev/null +++ b/TESTS/mbed_drivers/watchdog/main.cpp @@ -0,0 +1,227 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 !DEVICE_WATCHDOG +#error [NOT_SUPPORTED] Watchdog not supported for this target +#endif + +#define __STDC_LIMIT_MACROS +#include "drivers/Watchdog.h" +#include "greentea-client/test_env.h" +#include "mbed_wait_api.h" +#include "unity/unity.h" +#include "utest/utest.h" +#include "Watchdog_tests.h" + +#include +#include + +/* This is platform specific and depends on the watchdog timer implementation, + * e.g. STM32F4 uses 32kHz internal RC oscillator to clock the IWDG, so + * when the prescaler divider is set to max value of 256 the resolution + * drops to 8 ms. + */ +#define WORST_TIMEOUT_RESOLUTION_MS 8UL + +#define TIMEOUT_DELTA_MS (WORST_TIMEOUT_RESOLUTION_MS) +#define WDG_TIMEOUT_MS 500UL + +#define MSG_VALUE_DUMMY "0" +#define MSG_VALUE_LEN 24 +#define MSG_KEY_LEN 24 + +#define MSG_KEY_DEVICE_READY "ready" +#define MSG_KEY_START_CASE "start_case" +#define MSG_KEY_DEVICE_RESET "reset_on_case_teardown" + +int CASE_INDEX_START; +int CASE_INDEX_CURRENT; + +using utest::v1::Case; +using utest::v1::Specification; +using utest::v1::Harness; + +using namespace mbed; + +void test_max_timeout_is_valid() +{ + Watchdog watchdog; + TEST_ASSERT(watchdog.max_timeout() > 1UL); +} + +void test_stop() +{ + Watchdog watchdog; + if (watchdog.stop() == WATCHDOG_STATUS_NOT_SUPPORTED) { + TEST_IGNORE_MESSAGE("Disabling watchdog not supported for this platform"); + return; + } + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.stop()); + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(WDG_TIMEOUT_MS)); + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.stop()); + // Make sure that a disabled watchdog does not reset the core. + wait_ms(WDG_TIMEOUT_MS + TIMEOUT_DELTA_MS); + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.stop()); +} + +void test_restart() +{ + Watchdog watchdog; + watchdog.start(watchdog.max_timeout()); + uint64_t timeout = watchdog.max_timeout() - 2ULL * WORST_TIMEOUT_RESOLUTION_MS; + watchdog_status_t status = watchdog.start(timeout); + + if (status == WATCHDOG_STATUS_NOT_SUPPORTED) { + TEST_IGNORE_MESSAGE("Updating watchdog config not supported for this platform"); + return; + } + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, status); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, timeout, watchdog.reload_value()); + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(watchdog.max_timeout())); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, watchdog.max_timeout(), watchdog.reload_value()); + + timeout = watchdog.max_timeout() + 2ULL * WORST_TIMEOUT_RESOLUTION_MS; + // Make sure requested timeout does not overflow uint32_t. + if (timeout <= UINT32_MAX) { + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_INVALID_ARGUMENT, watchdog.start(timeout)); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, watchdog.max_timeout(), watchdog.reload_value()); + } + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_INVALID_ARGUMENT, watchdog.start(0UL)); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, watchdog.max_timeout(), watchdog.reload_value()); +} + +utest::v1::status_t case_setup_sync_on_reset(const Case *const source, const size_t index_of_case) +{ + CASE_INDEX_CURRENT = index_of_case; + return utest::v1::greentea_case_setup_handler(source, index_of_case); +} + +utest::v1::status_t case_teardown_sync_on_reset(const Case *const source, const size_t passed, const size_t failed, + const utest::v1::failure_t failure) +{ + utest::v1::status_t status = utest::v1::greentea_case_teardown_handler(source, passed, failed, failure); + if (failed) { + /* Return immediately and skip the device reset, if the test case failed. + * Provided that the device won't be restarted by other means (i.e. watchdog timer), + * this should allow the test suite to finish in a defined manner + * and report failure to host. + * In case of watchdog reset during test suite teardown, the loss of serial + * connection is possible, so the host-test-runner may return 'TIMEOUT' + * instead of 'FAIL'. + */ + return status; + } + greentea_send_kv(MSG_KEY_DEVICE_RESET, CASE_INDEX_START + CASE_INDEX_CURRENT); + utest_printf("The device will now restart.\n"); + wait_ms(10); // Wait for the serial buffers to flush. + NVIC_SystemReset(); + return status; // Reset is instant so this line won't be reached. +} + +void test_start_zero() +{ + Watchdog watchdog; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_INVALID_ARGUMENT, watchdog.start(0UL)); +} + +template +void test_start() +{ + Watchdog watchdog; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(timeout_ms)); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, timeout_ms, watchdog.reload_value()); +} + +void test_start_max_timeout() +{ + Watchdog watchdog; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(watchdog.max_timeout())); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, watchdog.max_timeout(), watchdog.reload_value()); +} + +void test_start_max_timeout_exceeded() +{ + Watchdog watchdog; + uint64_t timeout = watchdog.max_timeout() + 2ULL * WORST_TIMEOUT_RESOLUTION_MS; + // Make sure requested timeout does not overflow uint32_t. + if (timeout > UINT32_MAX) { + TEST_IGNORE_MESSAGE("Requested timeout overflows uint32_t -- ignoring test case."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_INVALID_ARGUMENT, watchdog.start(timeout)); +} + +int testsuite_setup_sync_on_reset(const size_t number_of_cases) +{ + GREENTEA_SETUP(45, "sync_on_reset"); + utest::v1::status_t status = utest::v1::greentea_test_setup_handler(number_of_cases); + if (status != utest::v1::STATUS_CONTINUE) { + return status; + } + + char key[MSG_KEY_LEN + 1] = { }; + char value[MSG_VALUE_LEN + 1] = { }; + + greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_DUMMY); + greentea_parse_kv(key, value, MSG_KEY_LEN, MSG_VALUE_LEN); + + if (strcmp(key, MSG_KEY_START_CASE) != 0) { + utest_printf("Invalid message key.\n"); + return utest::v1::STATUS_ABORT; + } + + char *tailptr = NULL; + CASE_INDEX_START = (int) strtol(value, &tailptr, 10); + if (*tailptr != '\0' || CASE_INDEX_START < 0) { + utest_printf("Invalid start case index received from host\n"); + return utest::v1::STATUS_ABORT; + } + + utest_printf("Starting with test case index %i of all %i defined test cases.\n", CASE_INDEX_START, number_of_cases); + return CASE_INDEX_START; +} + +Case cases[] = { + Case("max_timeout is valid", test_max_timeout_is_valid), + Case("Stop", test_stop), + Case("Restart multiple times", (utest::v1::case_setup_handler_t) case_setup_sync_on_reset, + test_restart, (utest::v1::case_teardown_handler_t) case_teardown_sync_on_reset), + + // Do not set watchdog timeout shorter than 500 ms as it may cause the + // host-test-runner return 'TIMEOUT' instead of 'FAIL' / 'PASS' if watchdog + // performs reset during test suite teardown. + Case("Start, 500 ms", (utest::v1::case_setup_handler_t) case_setup_sync_on_reset, + test_start<500UL>, (utest::v1::case_teardown_handler_t) case_teardown_sync_on_reset), + Case("Start, max_timeout", (utest::v1::case_setup_handler_t) case_setup_sync_on_reset, + test_start_max_timeout, (utest::v1::case_teardown_handler_t) case_teardown_sync_on_reset), + + Case("Start, 0 ms", test_start_zero), + Case("Start, max_timeout exceeded", test_start_max_timeout_exceeded), +}; + +Specification specification((utest::v1::test_setup_handler_t) testsuite_setup_sync_on_reset, cases); + +int main() +{ + // Harness will start with a test case index provided by host script. + return !Harness::run(specification); +} diff --git a/TESTS/mbed_drivers/watchdog_reset/Watchdog_reset_tests.h b/TESTS/mbed_drivers/watchdog_reset/Watchdog_reset_tests.h new file mode 100644 index 00000000000..548dea1c2a0 --- /dev/null +++ b/TESTS/mbed_drivers/watchdog_reset/Watchdog_reset_tests.h @@ -0,0 +1,77 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 drivers_watchdog_tests + * @{ + */ + +#ifndef MBED_DRIVERS_WATCHDOG_RESET_TESTS_H +#define MBED_DRIVERS_WATCHDOG_RESET_TESTS_H + +#if DEVICE_WATCHDOG + +/** Test Watchdog reset + * + * Given a device with a Watchdog started, + * when the Watchdog timeout expires, + * then the device is restarted. + */ +void test_simple_reset(); + +/** Test Watchdog reset in sleep mode + * + * Given a device with a Watchdog started, + * when the Watchdog timeout expires while the device is in sleep mode, + * then the device is restarted. + */ +void test_sleep_reset(); + +/** Test Watchdog reset in deepsleep mode + * + * Given a device with a Watchdog started, + * when the Watchdog timeout expires while the device is in deepsleep mode, + * then the device is restarted. + */ +void test_deepsleep_reset(); + +/** Test Watchdog reset after Watchdog restart + * + * Given a device with a Watchdog started, + * when the Watchdog is stopped before its timeout expires, + * then the device is not restarted. + * When the Watchdog is started again and its timeout expires, + * then the device is restarted. + */ +void test_restart_reset(); + +/** Test Watchdog kick + * + * Given a device with a Watchdog started, + * when the Watchdog is kicked before its timeout expires, + * then the device restart is prevented. + * When the Watchdog is *NOT* kicked again before next timeout expires, + * then the device is restarted. + */ +void test_kick_reset(); + +#endif + +#endif + +/** @}*/ + diff --git a/TESTS/mbed_drivers/watchdog_reset/main.cpp b/TESTS/mbed_drivers/watchdog_reset/main.cpp new file mode 100644 index 00000000000..2ce3c845648 --- /dev/null +++ b/TESTS/mbed_drivers/watchdog_reset/main.cpp @@ -0,0 +1,286 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 !DEVICE_WATCHDOG +#error [NOT_SUPPORTED] Watchdog not supported for this target +#endif + +#include "greentea-client/test_env.h" +#include "utest/utest.h" +#include "unity/unity.h" +#include "drivers/Watchdog.h" +#include "Watchdog_reset_tests.h" +#include "mbed.h" + +#define TIMEOUT_MS 500UL +#define TIMEOUT_DELTA_MS 50UL + +#define MSG_VALUE_DUMMY "0" +#define CASE_DATA_INVALID 0xffffffffUL +#define CASE_DATA_PHASE2_OK 0xfffffffeUL + +#define MSG_VALUE_LEN 24 +#define MSG_KEY_LEN 24 + +#define MSG_KEY_DEVICE_READY "ready" +#define MSG_KEY_START_CASE "start_case" +#define MSG_KEY_DEVICE_RESET "dev_reset" + +using utest::v1::Case; +using utest::v1::Specification; +using utest::v1::Harness; + +struct testcase_data { + int index; + int start_index; + uint32_t received_data; +}; + +void release_sem(Semaphore *sem) +{ + sem->release(); +} + +testcase_data current_case; + +bool send_reset_notification(testcase_data *tcdata, uint32_t delay_ms) +{ + char msg_value[12]; + int str_len = snprintf(msg_value, sizeof msg_value, "%02x,%08lx", tcdata->start_index + tcdata->index, delay_ms); + if (str_len != (sizeof msg_value) - 1) { + utest_printf("Failed to compose a value string to be sent to host."); + return false; + } + greentea_send_kv(MSG_KEY_DEVICE_RESET, msg_value); + return true; +} + +void test_simple_reset() +{ + // Phase 2. -- verify the test results. + // Verify if this test case passed based on data received from host. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + // Init the watchdog and wait for a device reset. + Watchdog watchdog; + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(TIMEOUT_MS)); + wait_ms(TIMEOUT_MS + TIMEOUT_DELTA_MS); // Device reset expected. + + // Watchdog reset should have occurred during wait_ms() above; + + watchdog.kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} + +#if DEVICE_SLEEP +void test_sleep_reset() +{ + // Phase 2. -- verify the test results. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + Watchdog watchdog; + Semaphore sem(0, 1); + Timeout timeout; + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(TIMEOUT_MS)); + sleep_manager_lock_deep_sleep(); + timeout.attach_us(mbed::callback(release_sem, &sem), 1000ULL * (TIMEOUT_MS + TIMEOUT_DELTA_MS)); + if (sleep_manager_can_deep_sleep()) { + TEST_ASSERT_MESSAGE(0, "Deepsleep should be disallowed."); + return; + } + while (sem.wait(0) != 1) { + sleep(); // Device reset expected. + } + sleep_manager_unlock_deep_sleep(); + + // Watchdog reset should have occurred during sleep() above; + + watchdog.kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} + +#if DEVICE_LOWPOWERTIMER +void test_deepsleep_reset() +{ + // Phase 2. -- verify the test results. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + Watchdog watchdog; + Semaphore sem(0, 1); + LowPowerTimeout lp_timeout; + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(TIMEOUT_MS)); + lp_timeout.attach_us(mbed::callback(release_sem, &sem), 1000ULL * (TIMEOUT_MS + TIMEOUT_DELTA_MS)); + wait_ms(10); // Wait for the serial buffers to flush. + if (!sleep_manager_can_deep_sleep()) { + TEST_ASSERT_MESSAGE(0, "Deepsleep should be allowed."); + } + while (sem.wait(0) != 1) { + sleep(); // Device reset expected. + } + + // Watchdog reset should have occurred during that sleep() above; + + watchdog.kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} +#endif +#endif + +void test_restart_reset() +{ + Watchdog watchdog; + if (watchdog.stop() == WATCHDOG_STATUS_NOT_SUPPORTED) { + TEST_IGNORE_MESSAGE("Disabling watchdog not supported for this platform"); + return; + } + + // Phase 2. -- verify the test results. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(TIMEOUT_MS)); + wait_ms(TIMEOUT_MS / 2UL); + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.stop()); + // Check that stopping the watchdog prevents a device reset. + wait_ms(TIMEOUT_MS / 2UL + TIMEOUT_DELTA_MS); + + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(TIMEOUT_MS)); + wait_ms(TIMEOUT_MS + TIMEOUT_DELTA_MS); // Device reset expected. + + // Watchdog reset should have occurred during that wait() above; + + watchdog.kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} + +void test_kick_reset() +{ + // Phase 2. -- verify the test results. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + Watchdog watchdog; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, watchdog.start(TIMEOUT_MS)); + for (int i = 3; i; i--) { + wait_ms(TIMEOUT_MS / 2UL); + watchdog.kick(); + } + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + wait_ms(TIMEOUT_MS + TIMEOUT_DELTA_MS); // Device reset expected. + + // Watchdog reset should have occurred during that wait() above; + + watchdog.kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} + +utest::v1::status_t case_setup(const Case *const source, const size_t index_of_case) +{ + current_case.index = index_of_case; + return utest::v1::greentea_case_setup_handler(source, index_of_case); +} + +int testsuite_setup(const size_t number_of_cases) +{ + GREENTEA_SETUP(90, "watchdog_reset"); + utest::v1::status_t status = utest::v1::greentea_test_setup_handler(number_of_cases); + if (status != utest::v1::STATUS_CONTINUE) { + return status; + } + + char key[MSG_KEY_LEN + 1] = { }; + char value[MSG_VALUE_LEN + 1] = { }; + + greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_DUMMY); + greentea_parse_kv(key, value, MSG_KEY_LEN, MSG_VALUE_LEN); + + if (strcmp(key, MSG_KEY_START_CASE) != 0) { + utest_printf("Invalid message key.\n"); + return utest::v1::STATUS_ABORT; + } + + int num_args = sscanf(value, "%02x,%08lx", &(current_case.start_index), &(current_case.received_data)); + if (num_args == 0 || num_args == EOF) { + utest_printf("Invalid data received from host\n"); + return utest::v1::STATUS_ABORT; + } + + utest_printf("This test suite is composed of %i test cases. Starting at index %i.\n", number_of_cases, + current_case.start_index); + return current_case.start_index; +} + +Case cases[] = { + Case("Watchdog reset", case_setup, test_simple_reset), +#if DEVICE_SLEEP + Case("Watchdog reset in sleep mode", case_setup, test_sleep_reset), +#if DEVICE_LOWPOWERTIMER + Case("Watchdog reset in deepsleep mode", case_setup, test_deepsleep_reset), +#endif +#endif + Case("Watchdog started again", case_setup, test_restart_reset), + Case("Kicking the watchdog prevents reset", case_setup, test_kick_reset), +}; + +Specification specification((utest::v1::test_setup_handler_t) testsuite_setup, cases); + +int main() +{ + // Harness will start with a test case index provided by host script. + return !Harness::run(specification); +} diff --git a/TESTS/mbed_hal/pinmap/main.cpp b/TESTS/mbed_hal/pinmap/main.cpp new file mode 100644 index 00000000000..d5ca3f2305f --- /dev/null +++ b/TESTS/mbed_hal/pinmap/main.cpp @@ -0,0 +1,127 @@ +/* mbed Microcontroller Library + * Copyright (c) 2019 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 "utest/utest.h" +#include "unity/unity.h" +#include "greentea-client/test_env.h" + +using namespace utest::v1; + +#include "analogin_api.h" +#include "analogout_api.h" +#include "can_api.h" +#include "i2c_api.h" +#include "pwmout_api.h" +#include "qspi_api.h" +#include "serial_api.h" +#include "spi_api.h" + +#define PINMAP_TEST_ENTRY(function) {function, #function} + +typedef const PinMap *(*get_pinmap_func_t)(void); +typedef struct { + get_pinmap_func_t function; + const char *name; +} pinmap_info_t; + +const pinmap_info_t pinmap_functions[] = { +#if DEVICE_ANALOGIN + PINMAP_TEST_ENTRY(analogin_pinmap), +#endif +#if DEVICE_ANALOGOUT + PINMAP_TEST_ENTRY(analogout_pinmap), +#endif +#if DEVICE_CAN + PINMAP_TEST_ENTRY(can_rd_pinmap), + PINMAP_TEST_ENTRY(can_td_pinmap), +#endif +#if DEVICE_I2C + PINMAP_TEST_ENTRY(i2c_master_sda_pinmap), + PINMAP_TEST_ENTRY(i2c_master_scl_pinmap), +#if DEVICE_I2CSLAVE + PINMAP_TEST_ENTRY(i2c_slave_sda_pinmap), + PINMAP_TEST_ENTRY(i2c_slave_scl_pinmap), +#endif +#endif +#if DEVICE_PWMOUT + PINMAP_TEST_ENTRY(pwmout_pinmap), +#endif +#if DEVICE_QSPI + PINMAP_TEST_ENTRY(qspi_master_sclk_pinmap), + PINMAP_TEST_ENTRY(qspi_master_ssel_pinmap), + PINMAP_TEST_ENTRY(qspi_master_data0_pinmap), + PINMAP_TEST_ENTRY(qspi_master_data1_pinmap), + PINMAP_TEST_ENTRY(qspi_master_data2_pinmap), + PINMAP_TEST_ENTRY(qspi_master_data3_pinmap), +#endif +#if DEVICE_SERIAL + PINMAP_TEST_ENTRY(serial_tx_pinmap), + PINMAP_TEST_ENTRY(serial_rx_pinmap), +#if DEVICE_SERIAL_FC + PINMAP_TEST_ENTRY(serial_cts_pinmap), + PINMAP_TEST_ENTRY(serial_rts_pinmap), +#endif +#endif +#if DEVICE_SPI + PINMAP_TEST_ENTRY(spi_master_mosi_pinmap), + PINMAP_TEST_ENTRY(spi_master_miso_pinmap), + PINMAP_TEST_ENTRY(spi_master_clk_pinmap), + PINMAP_TEST_ENTRY(spi_master_cs_pinmap), +#if DEVICE_SPISLAVE + PINMAP_TEST_ENTRY(spi_slave_mosi_pinmap), + PINMAP_TEST_ENTRY(spi_slave_miso_pinmap), + PINMAP_TEST_ENTRY(spi_slave_clk_pinmap), + PINMAP_TEST_ENTRY(spi_slave_cs_pinmap), +#endif +#endif + {NULL, NULL} +}; + +void pinmap_validation() +{ + for (size_t i = 0; i < sizeof(pinmap_functions) / sizeof(pinmap_functions[0]) - 1; i++) { + printf("Testing pinmap %s\r\n", pinmap_functions[i].name); + + get_pinmap_func_t function = pinmap_functions[i].function; + TEST_ASSERT_NOT_EQUAL(NULL, function); + + const PinMap *map = function(); + TEST_ASSERT_NOT_EQUAL(NULL, map); + + while (map->pin != NC) { + map++; + } + + TEST_ASSERT_EQUAL(NC, map->peripheral); + } +} + +Case cases[] = { + Case("pinmap - validation", pinmap_validation) +}; + +utest::v1::status_t greentea_test_setup(const size_t number_of_cases) +{ + GREENTEA_SETUP(20, "default_auto"); + return greentea_test_setup_handler(number_of_cases); +} + +Specification specification(greentea_test_setup, cases, greentea_test_teardown_handler); + +int main() +{ + Harness::run(specification); +} diff --git a/TESTS/mbed_hal/reset_reason/main.cpp b/TESTS/mbed_hal/reset_reason/main.cpp new file mode 100644 index 00000000000..2dc68f63557 --- /dev/null +++ b/TESTS/mbed_hal/reset_reason/main.cpp @@ -0,0 +1,151 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 !DEVICE_RESET_REASON +#error [NOT_SUPPORTED] Reset reason API not supported for this target +#endif + +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "hal/reset_reason_api.h" +#include "reset_reason_api_tests.h" +#include "mbed.h" + +#if DEVICE_WATCHDOG +#include "hal/watchdog_api.h" + +#define MSG_VALUE_WATCHDOG_STATUS "wdg_present" +#define WDG_TIMEOUT_MS 50UL +#define WDG_TIMEOUT_DELTA_MS 50UL + +#else +#define MSG_VALUE_WATCHDOG_STATUS "no_wdg" +#endif + +#define MSG_VALUE_DUMMY "0" +#define MSG_VALUE_RESET_REASON_GET "get" +#define MSG_VALUE_RESET_REASON_CLEAR "clear" +#define MSG_VALUE_RESET_REASON_CLEAR_ACK "cleared" +#define MSG_VALUE_DEVICE_RESET_ACK "ack" +#define MSG_VALUE_DEVICE_RESET_NVIC "nvic" +#define MSG_VALUE_DEVICE_RESET_WATCHDOG "watchdog" +#define MSG_VALUE_LEN 16 +#define MSG_KEY_LEN 16 + +#define MSG_KEY_DEVICE_READY "ready" +#define MSG_KEY_RESET_REASON_RAW "reason_raw" +#define MSG_KEY_RESET_REASON "reason" +#define MSG_KEY_DEVICE_RESET "reset" + +/* To prevent loss of Greentea data, flush serial buffers before the UART peripheral shutdown. The UART shutdown happens when the + * device is entering the deepsleep mode or performing a reset. + * + * With the current API, it is not possible to check if the hardware buffers + * are empty. However, you can determine the amount of time required for the + * buffers to flush. + * + * For example, NUMAKER_PFM_NUC472: + * The UART peripheral has 16-byte Tx FIFO. With a baud rate of 9600, + * flushing the Tx FIFO would take: 16 * 8 * 1000 / 9600 = 13.3 ms. + * To be on the safe side, set the wait time to 20 ms. + */ +#define SERIAL_FLUSH_TIME_MS 20 + +typedef enum { + CMD_STATUS_CONTINUE, + CMD_STATUS_ERROR +} cmd_status_t; + +static cmd_status_t handle_command(const char *key, const char *value) +{ + if (strcmp(key, MSG_KEY_RESET_REASON_RAW) == 0) { + uint32_t raw_reason = hal_reset_reason_get_raw(); + char raw_reason_hex_str[9] = { }; + int raw_reason_hex_str_len = snprintf(raw_reason_hex_str, + sizeof raw_reason_hex_str, "%08lx", raw_reason); + + if (raw_reason_hex_str_len != (sizeof raw_reason_hex_str) - 1) { + TEST_ASSERT_MESSAGE(0, "Failed to compose raw reset reason hex string."); + return CMD_STATUS_ERROR; + } + + greentea_send_kv(MSG_KEY_RESET_REASON_RAW, raw_reason_hex_str); + return CMD_STATUS_CONTINUE; + } + + if (strcmp(key, MSG_KEY_RESET_REASON) == 0 && strcmp(value, MSG_VALUE_RESET_REASON_GET) == 0) { + int reason = (int) hal_reset_reason_get(); + greentea_send_kv(MSG_KEY_RESET_REASON, reason); + return CMD_STATUS_CONTINUE; + } + + if (strcmp(key, MSG_KEY_RESET_REASON) == 0 && strcmp(value, MSG_VALUE_RESET_REASON_CLEAR) == 0) { + hal_reset_reason_clear(); + greentea_send_kv(MSG_KEY_RESET_REASON, MSG_VALUE_RESET_REASON_CLEAR_ACK); + return CMD_STATUS_CONTINUE; + } + + if (strcmp(key, MSG_KEY_DEVICE_RESET) == 0 && strcmp(value, MSG_VALUE_DEVICE_RESET_NVIC) == 0) { + greentea_send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_ACK); + wait_ms(SERIAL_FLUSH_TIME_MS); // Wait for the serial buffers to flush. + NVIC_SystemReset(); + TEST_ASSERT_MESSAGE(0, "NVIC_SystemReset did not reset the device as expected."); + return CMD_STATUS_ERROR; + } + +#if DEVICE_WATCHDOG + if (strcmp(key, MSG_KEY_DEVICE_RESET) == 0 && strcmp(value, MSG_VALUE_DEVICE_RESET_WATCHDOG) == 0) { + greentea_send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_ACK); + wait_ms(SERIAL_FLUSH_TIME_MS); // Wait for the serial buffers to flush. + watchdog_config_t config = { .timeout_ms = WDG_TIMEOUT_MS }; + if (hal_watchdog_init(&config) != WATCHDOG_STATUS_OK) { + TEST_ASSERT_MESSAGE(0, "hal_watchdog_init() error."); + return CMD_STATUS_ERROR; + } + wait_ms(WDG_TIMEOUT_MS + WDG_TIMEOUT_DELTA_MS); + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); + return CMD_STATUS_ERROR; + } +#endif + + TEST_ASSERT_MESSAGE(0, "Invalid message key."); + return CMD_STATUS_ERROR; +} + +void test_reset_reason() +{ + // Report readiness and watchdog status. + greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_WATCHDOG_STATUS); + + cmd_status_t cmd_status = CMD_STATUS_CONTINUE; + static char _key[MSG_KEY_LEN + 1] = { }; + static char _value[MSG_VALUE_LEN + 1] = { }; + + // Let the host side decide what to do and just handle the commands. + while (CMD_STATUS_CONTINUE == cmd_status) { + memset(_key, 0, sizeof _key); + memset(_value, 0, sizeof _value); + greentea_parse_kv(_key, _value, MSG_KEY_LEN, MSG_VALUE_LEN); + cmd_status = handle_command(_key, _value); + } +} + +int main() +{ + GREENTEA_SETUP(60, "reset_reason"); + test_reset_reason(); // The result of this test suite is reported by the host side. + GREENTEA_TESTSUITE_RESULT(0); // Fail on any error. +} diff --git a/TESTS/mbed_hal/reset_reason/reset_reason_api_tests.h b/TESTS/mbed_hal/reset_reason/reset_reason_api_tests.h new file mode 100644 index 00000000000..5bf3fecdd95 --- /dev/null +++ b/TESTS/mbed_hal/reset_reason/reset_reason_api_tests.h @@ -0,0 +1,49 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 hal_reset_reason_tests + * @{ + */ + +#ifndef MBED_HAL_RESET_REASON_API_TESTS_H +#define MBED_HAL_RESET_REASON_API_TESTS_H + +#if DEVICE_RESET_REASON + +#ifdef __cplusplus +extern "C" { +#endif + +/** Test the Reset Reason HAL API + * + * Given a device supporting a Reset Reason API, + * when the device is restarted, + * then the device returns a correct reset reason for every restart. + */ +void test_reset_reason(); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif + +/** @}*/ + diff --git a/TESTS/mbed_hal/trng/main.cpp b/TESTS/mbed_hal/trng/main.cpp index 31be677758e..6166219888e 100644 --- a/TESTS/mbed_hal/trng/main.cpp +++ b/TESTS/mbed_hal/trng/main.cpp @@ -43,6 +43,8 @@ #include "base64b.h" #include "pithy.h" #include +#include "mbedtls/config.h" +#include "mbedtls/platform.h" #if !DEVICE_TRNG #error [NOT_SUPPORTED] TRNG API not supported for this target @@ -268,11 +270,17 @@ Specification specification(greentea_test_setup, cases, greentea_test_teardown_h int main() { + int ret = 0; +#if defined(MBEDTLS_PLATFORM_C) + ret = mbedtls_platform_setup(NULL); +#endif /* MBEDTLS_PLATFORM_C */ #if (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) inject_entropy_for_psa(); #endif - bool ret = !Harness::run(specification); - + ret = !Harness::run(specification); +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ return ret; } diff --git a/TESTS/mbed_hal/watchdog/main.cpp b/TESTS/mbed_hal/watchdog/main.cpp new file mode 100644 index 00000000000..04c5b0d5186 --- /dev/null +++ b/TESTS/mbed_hal/watchdog/main.cpp @@ -0,0 +1,238 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 !DEVICE_WATCHDOG +#error [NOT_SUPPORTED] Watchdog not supported for this target +#endif + +#include "greentea-client/test_env.h" +#include "hal/watchdog_api.h" +#include "mbed_wait_api.h" +#include "unity/unity.h" +#include "utest/utest.h" +#include "watchdog_api_tests.h" + +#include + +/* This is platform specific and depends on the watchdog timer implementation, + * e.g. STM32F4 uses 32kHz internal RC oscillator to clock the IWDG, so + * when the prescaler divider is set to max value of 256 the resolution + * drops to 8 ms. + */ +#define WORST_TIMEOUT_RESOLUTION_MS 8UL + +#define TIMEOUT_DELTA_MS (WORST_TIMEOUT_RESOLUTION_MS) +#define WDG_TIMEOUT_MS 500UL + +#define MSG_VALUE_DUMMY "0" +#define MSG_VALUE_LEN 24 +#define MSG_KEY_LEN 24 + +#define MSG_KEY_DEVICE_READY "ready" +#define MSG_KEY_START_CASE "start_case" +#define MSG_KEY_DEVICE_RESET "reset_on_case_teardown" + +/* To prevent a loss of Greentea data, the serial buffers have to be flushed + * before the UART peripheral shutdown. The UART shutdown happens when the + * device is entering the deepsleep mode or performing a reset. + * + * With the current API, it is not possible to check if the hardware buffers + * are empty. However, it is possible to determine the time required for the + * buffers to flush. + * + * Take NUMAKER_PFM_NUC472 as an example: + * The UART peripheral has 16-byte Tx FIFO. With a baud rate set to 9600, + * flushing the Tx FIFO would take: 16 * 8 * 1000 / 9600 = 13.3 ms. + * To be on the safe side, set the wait time to 20 ms. + */ +#define SERIAL_FLUSH_TIME_MS 20 + +int CASE_INDEX_START; +int CASE_INDEX_CURRENT; + +using utest::v1::Case; +using utest::v1::Specification; +using utest::v1::Harness; + +const watchdog_config_t WDG_CONFIG_DEFAULT = { .timeout_ms = WDG_TIMEOUT_MS }; + +void test_max_timeout_is_valid() +{ + TEST_ASSERT(hal_watchdog_get_platform_features().max_timeout > 1UL); +} + +void test_restart_is_possible() +{ + watchdog_features_t features = hal_watchdog_get_platform_features(); + if (!features.disable_watchdog) { + TEST_IGNORE_MESSAGE("Disabling watchdog not supported for this platform"); + return; + } + TEST_ASSERT(features.update_config); +} + +void test_stop() +{ + watchdog_features_t features = hal_watchdog_get_platform_features(); + if (!features.disable_watchdog) { + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_NOT_SUPPORTED, hal_watchdog_stop()); + TEST_IGNORE_MESSAGE("Disabling watchdog not supported for this platform"); + return; + } + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_stop()); + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&WDG_CONFIG_DEFAULT)); + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_stop()); + // Make sure that a disabled watchdog does not reset the core. + wait_ms(WDG_TIMEOUT_MS + TIMEOUT_DELTA_MS); + + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_stop()); +} + +void test_update_config() +{ + watchdog_features_t features = hal_watchdog_get_platform_features(); + if (!features.update_config) { + TEST_IGNORE_MESSAGE("Updating watchdog config not supported for this platform"); + return; + } + + watchdog_config_t config = WDG_CONFIG_DEFAULT; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, config.timeout_ms, hal_watchdog_get_reload_value()); + + config.timeout_ms = features.max_timeout - 2 * WORST_TIMEOUT_RESOLUTION_MS; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, config.timeout_ms, hal_watchdog_get_reload_value()); + + config.timeout_ms = features.max_timeout; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, config.timeout_ms, hal_watchdog_get_reload_value()); +} + +utest::v1::status_t case_setup_sync_on_reset(const Case *const source, const size_t index_of_case) +{ + CASE_INDEX_CURRENT = index_of_case; + return utest::v1::greentea_case_setup_handler(source, index_of_case); +} + +utest::v1::status_t case_teardown_sync_on_reset(const Case *const source, const size_t passed, const size_t failed, + const utest::v1::failure_t failure) +{ + utest::v1::status_t status = utest::v1::greentea_case_teardown_handler(source, passed, failed, failure); + if (failed) { + /* Return immediately and skip the device reset, if the test case failed. + * Provided that the device won't be restarted by other means (i.e. watchdog timer), + * this should allow the test suite to finish in a defined manner + * and report failure to host. + * In case of watchdog reset during test suite teardown, the loss of serial + * connection is possible, so the host-test-runner may return 'TIMEOUT' + * instead of 'FAIL'. + */ + return status; + } + greentea_send_kv(MSG_KEY_DEVICE_RESET, CASE_INDEX_START + CASE_INDEX_CURRENT); + utest_printf("The device will now restart.\n"); + wait_ms(SERIAL_FLUSH_TIME_MS); // Wait for the serial buffers to flush. + NVIC_SystemReset(); + return status; // Reset is instant so this line won't be reached. +} + +utest::v1::status_t case_teardown_wdg_stop_or_reset(const Case *const source, const size_t passed, const size_t failed, + const utest::v1::failure_t failure) +{ + watchdog_features_t features = hal_watchdog_get_platform_features(); + if (features.disable_watchdog) { + hal_watchdog_stop(); + return utest::v1::greentea_case_teardown_handler(source, passed, failed, failure); + } + + return case_teardown_sync_on_reset(source, passed, failed, failure); +} + +template +void test_init() +{ + watchdog_config_t config = { timeout_ms }; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, timeout_ms, hal_watchdog_get_reload_value()); +} + +void test_init_max_timeout() +{ + watchdog_features_t features = hal_watchdog_get_platform_features(); + watchdog_config_t config = { .timeout_ms = features.max_timeout }; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + TEST_ASSERT_UINT32_WITHIN(WORST_TIMEOUT_RESOLUTION_MS, features.max_timeout, hal_watchdog_get_reload_value()); +} + +int testsuite_setup_sync_on_reset(const size_t number_of_cases) +{ + GREENTEA_SETUP(45, "sync_on_reset"); + utest::v1::status_t status = utest::v1::greentea_test_setup_handler(number_of_cases); + if (status != utest::v1::STATUS_CONTINUE) { + return status; + } + + char key[MSG_KEY_LEN + 1] = { }; + char value[MSG_VALUE_LEN + 1] = { }; + + greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_DUMMY); + greentea_parse_kv(key, value, MSG_KEY_LEN, MSG_VALUE_LEN); + + if (strcmp(key, MSG_KEY_START_CASE) != 0) { + utest_printf("Invalid message key.\n"); + return utest::v1::STATUS_ABORT; + } + + char *tailptr = NULL; + CASE_INDEX_START = (int) strtol(value, &tailptr, 10); + if (*tailptr != '\0' || CASE_INDEX_START < 0) { + utest_printf("Invalid start case index received from host\n"); + return utest::v1::STATUS_ABORT; + } + + utest_printf("Starting with test case index %i of all %i defined test cases.\n", CASE_INDEX_START, number_of_cases); + return CASE_INDEX_START; +} + +Case cases[] = { + Case("Platform feature max_timeout is valid", test_max_timeout_is_valid), + Case("Stopped watchdog can be started again", test_restart_is_possible), + Case("Watchdog can be stopped", test_stop), + + Case("Update config with multiple init calls", + (utest::v1::case_setup_handler_t) case_setup_sync_on_reset, + test_update_config, + (utest::v1::case_teardown_handler_t) case_teardown_wdg_stop_or_reset), + + // Do not set watchdog timeout shorter than 500 ms as it may cause the + // host-test-runner return 'TIMEOUT' instead of 'FAIL' / 'PASS' if watchdog + // performs reset during test suite teardown. + Case("Init, 500 ms", (utest::v1::case_setup_handler_t) case_setup_sync_on_reset, + test_init<500UL>, (utest::v1::case_teardown_handler_t) case_teardown_sync_on_reset), + Case("Init, max_timeout", (utest::v1::case_setup_handler_t) case_setup_sync_on_reset, + test_init_max_timeout, (utest::v1::case_teardown_handler_t) case_teardown_sync_on_reset), +}; + +Specification specification((utest::v1::test_setup_handler_t) testsuite_setup_sync_on_reset, cases); + +int main() +{ + // Harness will start with a test case index provided by host script. + return !Harness::run(specification); +} diff --git a/TESTS/mbed_hal/watchdog/watchdog_api_tests.h b/TESTS/mbed_hal/watchdog/watchdog_api_tests.h new file mode 100644 index 00000000000..e89cf4317ab --- /dev/null +++ b/TESTS/mbed_hal/watchdog/watchdog_api_tests.h @@ -0,0 +1,113 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 hal_watchdog_tests + * @{ + */ + +#ifndef MBED_HAL_WATCHDOG_API_TESTS_H +#define MBED_HAL_WATCHDOG_API_TESTS_H + +#if DEVICE_WATCHDOG + +/** Test max_timeout validity + * + * Given a device supporting Watchdog HAL API, + * when @a hal_watchdog_get_platform_features() is called, + * then max_timeout member of returned watchdog_features_t struct is greater than 1. + */ +void test_max_timeout_is_valid(); + +/** Test Watchdog features if a stopped Watchdog can be started again + * + * Given a device supporting Watchdog HAL API, + * when the device supports the @a disable_watchdog feature, + * then the device also supports @a update_config feature. + */ +void test_restart_is_possible(); + +/** Test Watchdog stop + * + * Given a device without a support for the @a disable_watchdog feature, + * when @a hal_watchdog_stop() is called, + * then WATCHDOG_STATUS_NOT_SUPPORTED is returned. + * + * Otherwise, given the device with @a disable_watchdog feature support: + * + * Given the Watchdog is *NOT* running, + * when @a hal_watchdog_stop() is called, + * then WATCHDOG_STATUS_OK is returned. + * + * Given the Watchdog is running, + * when @a hal_watchdog_stop() is called before the timeout expires, + * then WATCHDOG_STATUS_OK is returned and the device is not restarted. + * + * Given the Watchdog is *NOT* running (it has already been stopped), + * when @a hal_watchdog_stop() is called, + * then WATCHDOG_STATUS_OK is returned. + */ +void test_stop(); + +/** Test Watchdog init multiple times + * + * Given @a max_timeout value returned by @a hal_watchdog_get_platform_features(): + * + * Given @a config.timeout_ms is set to WDG_TIMEOUT_MS, + * when @a hal_watchdog_init() is called, + * then @a WATCHDOG_STATUS_OK is returned + * and @a hal_watchdog_get_reload_value() returns WDG_TIMEOUT_MS. + * + * Given @a config.timeout_ms is set to max_timeout-delta, + * when @a hal_watchdog_init() is called, + * then @a WATCHDOG_STATUS_OK is returned + * and @a hal_watchdog_get_reload_value() returns max_timeout-delta. + * + * Given @a config.timeout_ms is set to max_timeout, + * when @a hal_watchdog_init() is called, + * then @a WATCHDOG_STATUS_OK is returned + * and @a hal_watchdog_get_reload_value() returns max_timeout. + */ +void test_update_config(); + +/** Test Watchdog init with a valid config + * + * Given @a config.timeout_ms is set to X ms, + * which is within supported Watchdog timeout range, + * when @a hal_watchdog_init() is called, + * then @a WATCHDOG_STATUS_OK is returned + * and @a hal_watchdog_get_reload_value() returns X. + */ +template +void test_init(); + +/** Test Watchdog init with a max_timeout + * + * Given @a config.timeout_ms is set to max_timeout, + * which is a value returned by @a hal_watchdog_get_platform_features(), + * when @a hal_watchdog_init() is called, + * then @a WATCHDOG_STATUS_OK is returned + * and @a hal_watchdog_get_reload_value() returns max_timeout. + */ +void test_init_max_timeout(); + +#endif + +#endif + +/** @}*/ + diff --git a/TESTS/mbed_hal/watchdog_reset/main.cpp b/TESTS/mbed_hal/watchdog_reset/main.cpp new file mode 100644 index 00000000000..9421f222cf6 --- /dev/null +++ b/TESTS/mbed_hal/watchdog_reset/main.cpp @@ -0,0 +1,308 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 !DEVICE_WATCHDOG +#error [NOT_SUPPORTED] Watchdog not supported for this target +#endif + +#include "greentea-client/test_env.h" +#include "utest/utest.h" +#include "unity/unity.h" +#include "hal/watchdog_api.h" +#include "watchdog_reset_tests.h" +#include "mbed.h" + +#define TIMEOUT_MS 500UL +#if TARGET_NUMAKER_PFM_NANO130 +/* On NUMAKER_PFM_NANO130 target, WDT's clock source is fixed to LIRC, which is more + * inaccurate than other targets. Enlarge this delta define to pass this test. */ +#define TIMEOUT_DELTA_MS 100UL +#else +#define TIMEOUT_DELTA_MS 50UL +#endif + +#define MSG_VALUE_DUMMY "0" +#define CASE_DATA_INVALID 0xffffffffUL +#define CASE_DATA_PHASE2_OK 0xfffffffeUL + +#define MSG_VALUE_LEN 24 +#define MSG_KEY_LEN 24 + +#define MSG_KEY_DEVICE_READY "ready" +#define MSG_KEY_START_CASE "start_case" +#define MSG_KEY_DEVICE_RESET "dev_reset" + +/* To prevent a loss of Greentea data, the serial buffers have to be flushed + * before the UART peripheral shutdown. The UART shutdown happens when the + * device is entering the deepsleep mode or performing a reset. + * + * With the current API, it is not possible to check if the hardware buffers + * are empty. However, it is possible to determine the time required for the + * buffers to flush. + * + * Take NUMAKER_PFM_NUC472 as an example: + * The UART peripheral has 16-byte Tx FIFO. With a baud rate set to 9600, + * flushing the Tx FIFO would take: 16 * 8 * 1000 / 9600 = 13.3 ms. + * To be on the safe side, set the wait time to 20 ms. + */ +#define SERIAL_FLUSH_TIME_MS 20 + +using utest::v1::Case; +using utest::v1::Specification; +using utest::v1::Harness; + +struct testcase_data { + int index; + int start_index; + uint32_t received_data; +}; + +void release_sem(Semaphore *sem) +{ + sem->release(); +} + +testcase_data current_case; + +bool send_reset_notification(testcase_data *tcdata, uint32_t delay_ms) +{ + char msg_value[12]; + int str_len = snprintf(msg_value, sizeof msg_value, "%02x,%08lx", tcdata->start_index + tcdata->index, delay_ms); + if (str_len != (sizeof msg_value) - 1) { + utest_printf("Failed to compose a value string to be sent to host."); + return false; + } + greentea_send_kv(MSG_KEY_DEVICE_RESET, msg_value); + return true; +} + +void test_simple_reset() +{ + // Phase 2. -- verify the test results. + // Verify if this test case passed based on data received from host. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + // Init the watchdog and wait for a device reset. + watchdog_config_t config = { TIMEOUT_MS }; + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + wait_ms(TIMEOUT_MS + TIMEOUT_DELTA_MS); // Device reset expected. + + // Watchdog reset should have occurred during wait_ms() above; + + hal_watchdog_kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} + +#if DEVICE_SLEEP +void test_sleep_reset() +{ + // Phase 2. -- verify the test results. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + watchdog_config_t config = { TIMEOUT_MS }; + Semaphore sem(0, 1); + Timeout timeout; + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + sleep_manager_lock_deep_sleep(); + timeout.attach_us(mbed::callback(release_sem, &sem), 1000ULL * (TIMEOUT_MS + TIMEOUT_DELTA_MS)); + if (sleep_manager_can_deep_sleep()) { + TEST_ASSERT_MESSAGE(0, "Deepsleep should be disallowed."); + return; + } + while (sem.wait(0) != 1) { + sleep(); // Device reset expected. + } + sleep_manager_unlock_deep_sleep(); + + // Watchdog reset should have occurred during sleep() above; + + hal_watchdog_kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} + +#if DEVICE_LOWPOWERTIMER +void test_deepsleep_reset() +{ + // Phase 2. -- verify the test results. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + watchdog_config_t config = { TIMEOUT_MS }; + Semaphore sem(0, 1); + LowPowerTimeout lp_timeout; + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + lp_timeout.attach_us(mbed::callback(release_sem, &sem), 1000ULL * (TIMEOUT_MS + TIMEOUT_DELTA_MS)); + wait_ms(SERIAL_FLUSH_TIME_MS); // Wait for the serial buffers to flush. + if (!sleep_manager_can_deep_sleep()) { + TEST_ASSERT_MESSAGE(0, "Deepsleep should be allowed."); + } + while (sem.wait(0) != 1) { + sleep(); // Device reset expected. + } + + // Watchdog reset should have occurred during that sleep() above; + + hal_watchdog_kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} +#endif +#endif + +void test_restart_reset() +{ + watchdog_features_t features = hal_watchdog_get_platform_features(); + if (!features.disable_watchdog) { + TEST_IGNORE_MESSAGE("Disabling Watchdog not supported for this platform"); + return; + } + + // Phase 2. -- verify the test results. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + watchdog_config_t config = { TIMEOUT_MS }; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + wait_ms(TIMEOUT_MS / 2UL); + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_stop()); + // Check that stopping the Watchdog prevents a device reset. + wait_ms(TIMEOUT_MS / 2UL + TIMEOUT_DELTA_MS); + + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + wait_ms(TIMEOUT_MS + TIMEOUT_DELTA_MS); // Device reset expected. + + // Watchdog reset should have occurred during that wait() above; + + hal_watchdog_kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} + +void test_kick_reset() +{ + // Phase 2. -- verify the test results. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_EQUAL(CASE_DATA_PHASE2_OK, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + watchdog_config_t config = { TIMEOUT_MS }; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + for (int i = 3; i; i--) { + wait_ms(TIMEOUT_MS / 2UL); + hal_watchdog_kick(); + } + if (send_reset_notification(¤t_case, TIMEOUT_MS + TIMEOUT_DELTA_MS) == false) { + TEST_ASSERT_MESSAGE(0, "Dev-host communication error."); + return; + } + wait_ms(TIMEOUT_MS + TIMEOUT_DELTA_MS); // Device reset expected. + + // Watchdog reset should have occurred during that wait() above; + + hal_watchdog_kick(); // Just to buy some time for testsuite failure handling. + TEST_ASSERT_MESSAGE(0, "Watchdog did not reset the device as expected."); +} + +utest::v1::status_t case_setup(const Case *const source, const size_t index_of_case) +{ + current_case.index = index_of_case; + return utest::v1::greentea_case_setup_handler(source, index_of_case); +} + +int testsuite_setup(const size_t number_of_cases) +{ + GREENTEA_SETUP(90, "watchdog_reset"); + utest::v1::status_t status = utest::v1::greentea_test_setup_handler(number_of_cases); + if (status != utest::v1::STATUS_CONTINUE) { + return status; + } + + char key[MSG_KEY_LEN + 1] = { }; + char value[MSG_VALUE_LEN + 1] = { }; + + greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_DUMMY); + greentea_parse_kv(key, value, MSG_KEY_LEN, MSG_VALUE_LEN); + + if (strcmp(key, MSG_KEY_START_CASE) != 0) { + utest_printf("Invalid message key.\n"); + return utest::v1::STATUS_ABORT; + } + + int num_args = sscanf(value, "%02x,%08lx", &(current_case.start_index), &(current_case.received_data)); + if (num_args == 0 || num_args == EOF) { + utest_printf("Invalid data received from host\n"); + return utest::v1::STATUS_ABORT; + } + + utest_printf("This test suite is composed of %i test cases. Starting at index %i.\n", number_of_cases, + current_case.start_index); + return current_case.start_index; +} + +Case cases[] = { + Case("Watchdog reset", case_setup, test_simple_reset), +#if DEVICE_SLEEP + Case("Watchdog reset in sleep mode", case_setup, test_sleep_reset), +#if DEVICE_LOWPOWERTIMER + Case("Watchdog reset in deepsleep mode", case_setup, test_deepsleep_reset), +#endif +#endif + Case("Watchdog started again", case_setup, test_restart_reset), + Case("Kicking the Watchdog prevents reset", case_setup, test_kick_reset), +}; + +Specification specification((utest::v1::test_setup_handler_t) testsuite_setup, cases); + +int main() +{ + // Harness will start with a test case index provided by host script. + return !Harness::run(specification); +} diff --git a/TESTS/mbed_hal/watchdog_reset/watchdog_reset_tests.h b/TESTS/mbed_hal/watchdog_reset/watchdog_reset_tests.h new file mode 100644 index 00000000000..548340aeff4 --- /dev/null +++ b/TESTS/mbed_hal/watchdog_reset/watchdog_reset_tests.h @@ -0,0 +1,77 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 hal_watchdog_tests + * @{ + */ + +#ifndef MBED_HAL_WATCHDOG_RESET_TESTS_H +#define MBED_HAL_WATCHDOG_RESET_TESTS_H + +#if DEVICE_WATCHDOG + +/** Test watchdog reset + * + * Given a device with a watchdog started, + * when a watchdog timeout expires, + * then the device is restarted. + */ +void test_simple_reset(); + +/** Test watchdog reset in sleep mode + * + * Given a device with a watchdog started, + * when the watchdog timeout expires while the device is in sleep mode, + * then the device is restarted. + */ +void test_sleep_reset(); + +/** Test watchdog reset in deepsleep mode + * + * Given a device with a watchdog started, + * when the watchdog timeout expires while the device is in deepsleep mode, + * then the device is restarted. + */ +void test_deepsleep_reset(); + +/** Test watchdog reset after watchdog restart + * + * Given a device with a watchdog started, + * when the watchdog is stopped before its timeout expires, + * then the device is not restarted. + * When the watchdog is started again and its timeout expires, + * then the device is restarted. + */ +void test_restart_reset(); + +/** Test watchdog kick + * + * Given a device with a watchdog started, + * when the watchdog is kicked before its timeout expires, + * then the device restart is prevented. + * When the watchdog is *NOT* kicked again before next timeout expires, + * then the device is restarted. + */ +void test_kick_reset(); + +#endif + +#endif + +/** @}*/ + diff --git a/TESTS/mbed_hal/watchdog_timing/main.cpp b/TESTS/mbed_hal/watchdog_timing/main.cpp new file mode 100644 index 00000000000..8e9d3940c35 --- /dev/null +++ b/TESTS/mbed_hal/watchdog_timing/main.cpp @@ -0,0 +1,150 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 !DEVICE_WATCHDOG +#error [NOT_SUPPORTED] Watchdog not supported for this target +#endif + +#include "greentea-client/test_env.h" +#include "hal/watchdog_api.h" +#include "unity/unity.h" +#include "us_ticker_api.h" +#include "utest/utest.h" +#include "watchdog_timing_tests.h" + +#define MSG_VALUE_DUMMY "0" +#define CASE_DATA_INVALID 0xffffffffUL + +#define MSG_VALUE_LEN 24 +#define MSG_KEY_LEN 24 + +#define MSG_KEY_DEVICE_READY "ready" +#define MSG_KEY_START_CASE "start_case" +#define MSG_KEY_HEARTBEAT "hb" + +using utest::v1::Case; +using utest::v1::Specification; +using utest::v1::Harness; + +struct testcase_data { + int index; + int start_index; + uint32_t received_data; +}; + +testcase_data current_case; + +template +void test_timing() +{ + // Phase 2. -- verify the test results. + // Verify the heartbeat time span sent by host is within given delta. + if (current_case.received_data != CASE_DATA_INVALID) { + TEST_ASSERT_UINT32_WITHIN(delta_ms, timeout_ms, current_case.received_data); + current_case.received_data = CASE_DATA_INVALID; + return; + } + + // Phase 1. -- run the test code. + // Send heartbeat messages to host until the watchdeg resets the device. + const ticker_data_t *const us_ticker = get_us_ticker_data(); + us_timestamp_t current_ts, next_ts, expected_reset_ts, divider, ts_increment; + char msg_value[12]; + + watchdog_config_t config = { timeout_ms }; + TEST_ASSERT_EQUAL(WATCHDOG_STATUS_OK, hal_watchdog_init(&config)); + next_ts = ticker_read_us(us_ticker); + expected_reset_ts = next_ts + 1000ULL * timeout_ms; + + divider = 0x2ULL; + while (1) { + current_ts = ticker_read_us(us_ticker); + if (current_ts < next_ts) { + continue; + } + + int str_len = snprintf(msg_value, sizeof msg_value, "%02x,%08lx", current_case.start_index + current_case.index, + (uint32_t) current_ts); + if (str_len != (sizeof msg_value) - 1) { + utest_printf("Failed to compose a value string to be sent to host."); + return; + } + greentea_send_kv(MSG_KEY_HEARTBEAT, msg_value); + + // The closer to expected reset, the smaller heartbeat time difference. + // This should reduce measurement error present for heartbeat with + // equal periods. + ts_increment = (1000ULL * timeout_ms / divider); + next_ts += ts_increment; + + if (current_ts <= expected_reset_ts) { + divider <<= 1; + } else if (divider > 0x2ULL) { + divider >>= 1; + } + } +} + +utest::v1::status_t case_setup(const Case *const source, const size_t index_of_case) +{ + current_case.index = index_of_case; + return utest::v1::greentea_case_setup_handler(source, index_of_case); +} + +int testsuite_setup(const size_t number_of_cases) +{ + GREENTEA_SETUP(90, "watchdog_reset"); + utest::v1::status_t status = utest::v1::greentea_test_setup_handler(number_of_cases); + if (status != utest::v1::STATUS_CONTINUE) { + return status; + } + + char key[MSG_KEY_LEN + 1] = { }; + char value[MSG_VALUE_LEN + 1] = { }; + + greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_DUMMY); + greentea_parse_kv(key, value, MSG_KEY_LEN, MSG_VALUE_LEN); + + if (strcmp(key, MSG_KEY_START_CASE) != 0) { + utest_printf("Invalid message key.\n"); + return utest::v1::STATUS_ABORT; + } + + int num_args = sscanf(value, "%02x,%08lx", &(current_case.start_index), &(current_case.received_data)); + if (num_args == 0 || num_args == EOF) { + utest_printf("Invalid data received from host\n"); + return utest::v1::STATUS_ABORT; + } + + utest_printf("This test suite is composed of %i test cases. Starting at index %i.\n", number_of_cases, + current_case.start_index); + return current_case.start_index; +} + +Case cases[] = { + Case("Timing, 200 ms", case_setup, test_timing<200UL, 55UL>), + Case("Timing, 500 ms", case_setup, test_timing<500UL, 130UL>), + Case("Timing, 1000 ms", case_setup, test_timing<1000UL, 255UL>), + Case("Timing, 3000 ms", case_setup, test_timing<3000UL, 380UL>), +}; + +Specification specification((utest::v1::test_setup_handler_t) testsuite_setup, cases); + +int main() +{ + // Harness will start with a test case index provided by host script. + return !Harness::run(specification); +} diff --git a/TESTS/mbed_hal/watchdog_timing/watchdog_timing_tests.h b/TESTS/mbed_hal/watchdog_timing/watchdog_timing_tests.h new file mode 100644 index 00000000000..daba3cb3cea --- /dev/null +++ b/TESTS/mbed_hal/watchdog_timing/watchdog_timing_tests.h @@ -0,0 +1,48 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 hal_watchdog_tests + * @{ + */ + +#ifndef MBED_HAL_WATCHDOG_TIMING_TESTS_H +#define MBED_HAL_WATCHDOG_TIMING_TESTS_H + +#if DEVICE_WATCHDOG + +/** Test watchdog timing accuracy + * + * Phase 1. + * Given a watchdog timer started with a timeout value of X ms, + * when the time of X ms elapses, + * then the device is restarted by the watchdog. + * + * Phase 2. + * Given a device restarted by the watchdog timer, + * when the device receives time measurement from the host, + * then time measured by host equals X ms. + */ +template +void test_timing(); + +#endif + +#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/netsocket/README.md b/TESTS/netsocket/README.md index 7c45460677b..68da14d7cc0 100644 --- a/TESTS/netsocket/README.md +++ b/TESTS/netsocket/README.md @@ -1,12 +1,9 @@ Network Socket test plan ======================== -This is a test plan for the Mbed OS Socket API. This describes all test -cases and their intended behaviors. When an API document is not clear, use -this as a reference for implementing correct behavior. +This is a test plan for the Mbed OS Socket API. This describes all test cases and their intended behaviors. When an API document is not clear, use this as a reference for implementing correct behavior. -**NOTE:** Because testing is a moving target, this test plan might define more test cases than Mbed OS -implements. Refer to [test case priorities](#test-case-priorities) for a list of test cases that the target must pass to be compliant with the Mbed OS socket API. +**NOTE:** Because testing is a moving target, this test plan might define more test cases than Mbed OS implements. Refer to [test case priorities](#test-case-priorities) for a list of test cases that the target must pass to be compliant with the Mbed OS socket API. Target API @@ -18,34 +15,29 @@ The target for this plan is to test: - [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). - [TLSSocket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/TLSSocket.h). +- [DNS](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/DNS.h). -Reference documentation: https://os.mbed.com/docs/latest/reference/network-socket.html +Please see the [Network Socket Documentation](https://os.mbed.com/docs/mbed-os/latest/apis/network-socket.html) for reference. Tools to use ---------------- - Mbed OS. -- Standard Mbed OS development tools as described in https://os.mbed.com/docs/latest/tools/index.html. +- Standard Mbed OS development tools as described in the [Arm Mbed tools overview](https://os.mbed.com/docs/latest/tools/index.html). - Test server. -These test cases themselves do not require any special tooling, other than -the test server described in "Test environment" chapter. +These test cases themselves do not require any special tooling, other than the test server described in "Test environment" chapter. Test environment ---------------- -As a general guideline, network connectivity with public Internet access -is required. This satisfies Socket tests, but specific connectivity -methods might require some extra configuration or devices within the -network. +As a general guideline, network connectivity with public Internet access is required. This satisfies Socket tests, but specific connectivity methods might require some extra configuration or devices within the network. -The test environment consist of DUTs, network connection and the test -server. Arm provides a public test server, but it can be installed locally -as well, if an isolated test environment is required. +The test environment consist of DUTs, network connection and the test server. Arm provides a public test server, but it can be installed locally as well, if an isolated test environment is required. ### Public test server -Address: `echo.mbedcloudtesting.com` +Address: `echo.mbedcloudtesting.com'. Both IPv4 and IPv6 addresses are available from a public DNS service: @@ -57,26 +49,17 @@ 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. Port 2007 for TLS. -- Discard protocol, [RFC 863](https://tools.ietf.org/html/rfc863) is - 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. Port 2013 for TLS. -- Time protocol, [RFC 868](https://tools.ietf.org/html/rfc868) in - both TCP and UDP. Port 37. +- Echo protocol, [RFC 862](https://tools.ietf.org/html/rfc862) is enabled on both TCP and UDP on port 7. Port 2007 for TLS +- Discard protocol, [RFC 863](https://tools.ietf.org/html/rfc863) is enabled in both TCP and UDP on port 9. Port 2009 for TLS. +- Character generator protocol, [RFC 864](https://tools.ietf.org/html/rfc864) is enabled in both TCP and UDP on 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 on port 13. Port 2013 for TLS. +- Time protocol, [RFC 868](https://tools.ietf.org/html/rfc868) in both TCP and UDP on port 37. Configure the firewall to allow this traffic to access the test server. **Example configuration for Debian/Ubuntu Linux** -These services are available on many operating systems, and installing them is out of -scope of this document. Below is an -example of how to install these services into a Debian/Ubuntu based Linux distribution -using standard Inet Daemon: +These services are available on many operating systems, and installing them is out of scope of this document. Below is an example of how to install these services into a Debian/Ubuntu based Linux distribution using standard Inet Daemon: ```.sh $ sudo apt install inetutils-inetd @@ -143,25 +126,18 @@ Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds ![Ethernet](eth_environment.png) -The Ethernet test environment consists of devices, an ethernet switch and an optional -firewall that allows connecting to the Echo server. +The Ethernet test environment consists of devices, an ethernet switch and an optional firewall that allows connecting to the Echo server. ### Wi-Fi test environment ![Wi-Fi](wifi_environment.png) -The Wi-Fi test environment is equivalent to the Ethernet test environment, except that the -Wi-Fi test environment has two separate access points or one with dual SSID. Connectivity to -echo server is required, but it can be hosted locally, as specified in -the Ethernet environment. +The Wi-Fi test environment is equivalent to the Ethernet test environment, except that the Wi-Fi test environment has two separate access points or one with dual SSID. Connectivity to echo server is required, but it can be hosted locally, as specified in the Ethernet environment. Test case priorities -------------------- -Please refer to the following table for priorities of test cases. Priorities -are labeled as MUST and SHOULD. MUST means this is a requirement and -therefore mandatory to pass the test. SHOULD means it is recommended to -pass the test if the driver implements the feature in question. +Please refer to the following table for priorities of test cases. Priorities are labeled as MUST and SHOULD. MUST means this is a requirement and therefore mandatory to pass the test. SHOULD means it is recommended to pass the test if the driver implements the feature in question. | | Test case | Priority | |-----|-----------------------------------------|----------| @@ -227,14 +203,27 @@ pass the test if the driver implements the feature in question. | 60 | TLSSOCKET_SIMULTANEOUS_TEST | SHOULD | | 61 | TLSSOCKET_ECHOTEST_BURST | SHOULD | | 62 | TLSSOCKET_ECHOTEST_BURST_NONBLOCK | SHOULD | +| 63 | ASYNCHRONOUS_DNS | MUST | +| 64 | ASYNCHRONOUS_DNS_CACHE | MUST | +| 65 | ASYNCHRONOUS_DNS_CANCEL | MUST | +| 66 | ASYNCHRONOUS_DNS_EXTERNAL_EVENT_QUEUE | MUST | +| 67 | ASYNCHRONOUS_DNS_INVALID_HOST | MUST | +| 68 | ASYNCHRONOUS_DNS_NON_ASYNC_AND_ASYNC | MUST | +| 69 | ASYNCHRONOUS_DNS_SIMULTANEOUS_CACHE | MUST | +| 70 | ASYNCHRONOUS_DNS_SIMULTANEOUS_REPEAT | MUST | +| 71 | ASYNCHRONOUS_DNS_SIMULTANEOUS | MUST | +| 72 | ASYNCHRONOUS_DNS_TIMEOUTS | MUST | +| 73 | SYNCHRONOUS_DNS | MUST | +| 74 | SYNCHRONOUS_DNS_CACHE | MUST | +| 75 | SYNCHRONOUS_DNS_INVALID_HOST | MUST | +| 76 | SYNCHRONOUS_DNS_MULTIPLE | MUST | Building test binaries -------------------------- -For testing the board and driver, test against the Mbed OS -master branch to get the most recent, up-to-date test cases and drivers. +For testing the board and driver, test against the Mbed OS master branch to get the most recent, up-to-date test cases and drivers. To create a build environment: @@ -246,9 +235,7 @@ git checkout master cd .. ``` -Also, building socket test cases requires a special macro to -enable all tests, so create an `mbed_app.json` file with the following -content at minimum: +Also, building socket test cases requires a special macro to enable all tests, so create an `mbed_app.json` file with the following content at minimum: ``` { @@ -277,8 +264,7 @@ content at minimum: } ``` -Wi-Fi tests require some more configuration, so for Wi-Fi purposes, -the `mbed_app.json` might look like this: +Wi-Fi tests require some more configuration, so for Wi-Fi purposes, the `mbed_app.json` might look like this: ``` { @@ -342,7 +328,7 @@ the `mbed_app.json` might look like this: } } ``` -See `mbed-os/tools/test_configs` folder for examples. +Please, see `mbed-os/tools/test_configs` folder for examples. Now build test binaries: @@ -353,8 +339,7 @@ mbed test --compile -t -m -n mbed-os-tests-network-*,mbed-o Running tests ------------- -When device is connected to network, or in case of wireless device near -the access point. +When device is connected to network, or in case of wireless device near the access point. ```.sh mbed test -n mbed-os-tests-network-*,mbed-os-tests-netsocket* @@ -363,35 +348,30 @@ mbed test -n mbed-os-tests-network-*,mbed-os-tests-netsocket* 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. 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 +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. 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 **Description:** -Call `Socket::open()` and then destruct the socket +Call `Socket::open()` and then destruct the socket. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` -3. Call "delete" for the object -4. Repeat 1000 times. +1. Create an object by calling `new Socket()`. +2. Call `Socket::open(stack)`. +3. Delete the object. +4. Repeat 100 times. **Expected result:** -`Socket::open()` should always return NSAPI_ERROR_OK +`Socket::open()` should always return `NSAPI_ERROR_OK`. @@ -404,22 +384,20 @@ in the stack is reached. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` -3. repeat until `NSAPI_ERROR_NO_MEMORY` or `NSAPI_ERROR_NO_SOCKET` - error is returned. +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. +3. Repeat until `NSAPI_ERROR_NO_MEMORY` or `NSAPI_ERROR_NO_SOCKET` error code is returned. 4. Call "delete" for all previously allocated sockets. -5. repeat +5. Repeat. **Expected result:** -Should be able to reserve at least 4 sockets. After freeing all sockets, -should be able to reserve same number of sockets. +Should be able to reserve at least 4 sockets. After freeing all sockets, should be able to reserve same number of sockets. @@ -431,20 +409,19 @@ Call `Socket::open()` twice **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` -3. Call `Socket::open(stack)` -4. delete the socket +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. +3. Call `Socket::open(stack)`. +4. Delete the socket. **Expected result:** -`Socket::open()` should first return `NSAPI_ERROR_OK` and second -call `NSAPI_ERROR_PARAMETER`. +`Socket::open()` should first return `NSAPI_ERROR_OK` and second call `NSAPI_ERROR_PARAMETER`. @@ -452,50 +429,48 @@ call `NSAPI_ERROR_PARAMETER`. **Description:** -Call `Socket::open()` followed by `Socket::close()` and then again -`Socket::open()`. Should allow you to reuse the same object. +Call `Socket::open()` followed by `Socket::close()` and then again `Socket::open()`. Should allow you to reuse the same object. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` -3. Call `Socket::close(stack)` -4. Call `Socket::open(stack)` -5. Call `Socket::close(stack)` -6. delete the socket +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. +3. Call `Socket::close(stack)`. +4. Call `Socket::open(stack)`. +5. Call `Socket::close(stack)`. +6. Delete the socket. **Expected result:** -All `Socket::open()` and `Socket::close()` calls should return -NSAPI_ERROR_OK. +All `Socket::open()` and `Socket::close()` calls should return `NSAPI_ERROR_OK`. ### SOCKET_BIND_PORT **Description:** -Call `Socket::bind(port)` +Call `Socket::bind(port)'. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` -3. Call `Socket::bind();` -4. destroy socket +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. +3. Call `Socket::bind();`. +4. Destroy socket. **Expected result:** -All calls return NSAPI_ERROR_OK +All calls return `NSAPI_ERROR_OK`. @@ -507,20 +482,20 @@ Call `Socket::bind(port)` on port number that is already used **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` -3. Call `Socket::bind();` +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. +3. Call `Socket::bind();`. 4. Repeat 1-3 for a new socket. -5. destroy both sockets +5. Destroy both sockets. **Expected result:** -Second `Socket::bind()` should return NSAPI_ERROR_PARAMETER +Second `Socket::bind()` should return `NSAPI_ERROR_PARAMETER`. @@ -528,24 +503,24 @@ Second `Socket::bind()` should return NSAPI_ERROR_PARAMETER **Description:** -Call `Socket::bind(addr, port)` +Call `Socket::bind(addr, port)`. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` -3. Get address by calling NetworkInterface::get_ip_address(); -4. Call `Socket::bind(address, );` -5. destroy socket +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. +3. Get address by calling `NetworkInterface::get_ip_address()`. +4. Call `Socket::bind(address, );`. +5. Destroy socket. **Expected result:** -All calls return NSAPI_ERROR_OK +All calls return `NSAPI_ERROR_OK`. @@ -553,23 +528,23 @@ All calls return NSAPI_ERROR_OK **Description:** -Call `Socket::bind(NULL, port)` +Call `Socket::bind(NULL, port)`. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` -3. Call `Socket::bind(NULL, );` -4. destroy socket +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. +3. Call `Socket::bind(NULL, );`. +4. Destroy socket. **Expected result:** -`Socket::bind()` should return NSAPI_ERROR_OK +`Socket::bind()` should return `NSAPI_ERROR_OK'. @@ -582,22 +557,22 @@ to us. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. 3. Check whether device is IPv4 or IPv6 connected. - 1. For IPv4: Call `Socket::bind("190.2.3.4", );` - 2. For IPv6: Call `Socket::bind("fe80::ff01", );` + 1. For IPv4: Call `Socket::bind("190.2.3.4", );`. + 2. For IPv6: Call `Socket::bind("fe80::ff01", );`. -4. destroy socket +4. Destroy socket. **Expected result:** -`Socket::bind()` should return NSAPI_ERROR_PARAMETER +`Socket::bind()` should return `NSAPI_ERROR_PARAMETER'. @@ -605,28 +580,27 @@ to us. **Description:** -Call `Socket::bind(SocketAddress)` with and address that is not wrong type -for the connection. +Call `Socket::bind(SocketAddress)` with and address that is not wrong type for the connection. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. 3. Check whether device is IPv4 or IPv6 connected. - 1. For IPv4: Create `SocketAddress("fe80::ff01", );` - 2. For IPv6: Create `SocketAddress("190.2.3.4", );` + 1. For IPv4: Create `SocketAddress("fe80::ff01", );`. + 2. For IPv6: Create `SocketAddress("190.2.3.4", );`. -4. Call `Socket::bind(address);` -5. destroy socket +4. Call `Socket::bind(address);`. +5. Destroy socket. **Expected result:** -`Socket::bind()` should return NSAPI_ERROR_PARAMETER +`Socket::bind()` should return `NSAPI_ERROR_PARAMETER'. @@ -634,26 +608,26 @@ for the connection. **Description:** -Call `Socket::bind(SocketAddress)` +Call `Socket::bind(SocketAddress)'. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::open(stack)` +1. Create a object by calling `new Socket()`. +2. Call `Socket::open(stack)`. 3. Get address by calling NetworkInterface::get_ip_address(); -4. Create a SocketAddress object using this address and any non-used +4. Create a SocketAddress object using this address and any non-used. port number. -5. Call `Socket::bind(address);` -6. destroy socket +5. Call `Socket::bind(address);`. +6. Destroy socket. **Expected result:** -All calls return NSAPI_ERROR_OK +All calls return `NSAPI_ERROR_OK'. @@ -661,18 +635,18 @@ All calls return NSAPI_ERROR_OK **Description:** -Call `Socket::bind()` on socket that has not been opened +Call `Socket::bind()` on socket that has not been opened. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create a object by calling `new Socket()` -2. Call `Socket::bind();` -3. destroy socket +1. Create a object by calling `new Socket()`. +2. Call `Socket::bind();`. +3. Destroy socket. **Expected result:** @@ -685,51 +659,51 @@ Test cases for UDPSocket class ### UDPSOCKET_OPEN_DESTRUCT -**Description:** Run SOCKET_OPEN_DESTRUCT for UDPSocket +**Description:** Run SOCKET_OPEN_DESTRUCT for UDPSocket. ### UDPSOCKET_OPEN_LIMIT -**Description:** Run SOCKET_OPEN_LIMIT for UDPSocket +**Description:** Run SOCKET_OPEN_LIMIT for UDPSocket. ### UDPSOCKET_OPEN_TWICE -**Description:** Run SOCKET_OPEN_TWICE for UDPSocket +**Description:** Run SOCKET_OPEN_TWICE for UDPSocket. ### UDPSOCKET_OPEN_CLOSE_REPEAT -**Description:** Run SOCKET_OPEN_CLOSE_REPEAT for UDPSocket +**Description:** Run SOCKET_OPEN_CLOSE_REPEAT for UDPSocket. ### UDPSOCKET_BIND_PORT -**Description:** Run SOCKET_BIND_PORT for UDPSocket +**Description:** Run SOCKET_BIND_PORT for UDPSocket. ### UDPSOCKET_BIND_PORT_FAIL -**Description:** Run SOCKET_BIND_PORT_FAIL for UDPSocket +**Description:** Run SOCKET_BIND_PORT_FAIL for UDPSocket. ### UDPSOCKET_BIND_ADDRESS_PORT -**Description:** Run SOCKET_BIND_ADDRESS_PORT for UDPSocket +**Description:** Run SOCKET_BIND_ADDRESS_PORT for UDPSocket. ### UDPSOCKET_BIND_ADDRESS_NULL -**Description:** Run SOCKET_BIND_ADDRESS_NULL for UDPSocket +**Description:** Run SOCKET_BIND_ADDRESS_NULL for UDPSocket. ### UDPSOCKET_BIND_ADDRESS_INVALID -**Description:** Run SOCKET_BIND_ADDRESS_INVALID for UDPSocket +**Description:** Run SOCKET_BIND_ADDRESS_INVALID for UDPSocket. ### UDPSOCKET_BIND_WRONG_TYPE -**Description:** Run SOCKET_BIND_WRONG_TYPE for UDPSocket +**Description:** Run SOCKET_BIND_WRONG_TYPE for UDPSocket. ### UDPSOCKET_BIND_ADDRESS -**Description:** Run SOCKET_BIND_ADDRESS for UDPSocket +**Description:** Run SOCKET_BIND_ADDRESS for UDPSocket. ### UDPSOCKET_BIND_UNOPENED -**Description:** Run SOCKET_BIND_UNOPENED for UDPSocket +**Description:** Run SOCKET_BIND_UNOPENED for UDPSocket. ### UDPSOCKET_SENDTO_INVALID @@ -739,18 +713,18 @@ Call `UDPSocket::sendto()` with invalid parameters. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. UDPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. UDPSocket is open. **Test steps:** -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("echo.mbedcloudtesting.com", 9,NULL, 0);` -5. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 9, "hello", 5);` -6. destroy the socket +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("echo.mbedcloudtesting.com", 9,NULL, 0);`. +5. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 9, "hello", 5);`. +6. Destroy the socket. **Expected result:** @@ -769,17 +743,17 @@ Repeatedly send small packets. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. UDPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. UDPSocket is open. **Test steps:** -1. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 9, "hello", 5);` -2. repeat 100 times -3. Fail if `NSAPI_ERROR_NO_MEMORY` is returned two times in a row, - wait 1 second before retry -4. destroy the socket +1. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 9, "hello", 5);`. +2. Repeat 100 times. +3. Fail if `NSAPI_ERROR_NO_MEMORY` is returned two times in a row,. + Wait 1 second before retry +4. Destroy the socket. **Expected result:** @@ -796,18 +770,18 @@ Verify working of different packet sizes. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. UDPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. UDPSocket is open. **Test steps:** -1. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , );` -2. Wait for incomming packet. If timeout happens, retry +1. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , );`. +2. Wait for incomming packet. If timeout happens, retry. sending&receiving, max 3 times. -3. Verify incomming content was the same that was sent -4. Repeat 1200 times -5. destroy the socket +3. Verify incomming content was the same that was sent. +4. Repeat 1200 times. +5. Destroy the socket. **Expected result:** @@ -827,22 +801,21 @@ mode **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. UDPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. UDPSocket is open. **Test steps:** -1. Call `UDPSocket::set_blocking(false)` -2. Register event handler with `UDPSocket::sigio()` -3. Create another thread that constantly waits signal from sigio() - handler, when received try `UDPSocket::recvfrom()` -4. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , );` +1. Call `UDPSocket::set_blocking(false)`. +2. Register event handler with `UDPSocket::sigio()`. +3. Create another thread that constantly waits signal from sigio() handler, when received try `UDPSocket::recvfrom()`. +4. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , );`. 5. Wait for incomming packet for one second. If nothing received retry, max 3 times. -6. Verify incomming content was the same that was sent -7. Repeat 1200 times -8. destroy the socket +6. Verify incomming content was the same that was sent. +7. Repeat 1200 times. +8. Destroy the socket. **Expected result:** @@ -862,28 +835,28 @@ Test whether timeouts are obeyed in UDPSockets. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Call `UDPSocket::set_timeout(100)` -2. Call `UDPSocket::sendto("echo.mbedcloudtesting.com", 7, , 100);` -3. Repeat 5 times - 1. record a time in millisecond precission - 2. Call `UDPSocket::recvfrom()` - 3. record a time in millisecond precission +1. Call `UDPSocket::set_timeout(100)`. +2. Call `UDPSocket::sendto("echo.mbedcloudtesting.com", 7, , 100);`. +3. Repeat 5 times. + 1. Record a time in millisecond precission. + 2. Call `UDPSocket::recvfrom()`. + 3. Record a time in millisecond precission. -4. repeat testcase 10 times. +4. Repeat testcase 10 times. **Expected result:** Each `sendto()` calls should return 100. Within each loop, one `recvfrom()` may return the received packet size -(100). Other calls should return NSAPI_ERROR_WOULD_BLOCK. +(100). Other calls should return `NSAPI_ERROR_WOULD_BLOCK`. -When NSAPI_ERROR_WOULD_BLOCK is received, check that time consumed is +When `NSAPI_ERROR_WOULD_BLOCK` is received, check that time consumed is more that 100 milliseconds but less than 200 milliseconds. After repeating for 10 times, at least 5 packets must have been @@ -898,17 +871,17 @@ Test whether timeouts are obeyed in UDPSockets. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Record time -2. Call `UDPSocket::sendto("echo.mbedcloudtesting.com", 9, , 100);` -3. Record time -4. Call `UDPSocket::set_timeout(1000)` -5. Call `UDPSocket::sendto("echo.mbedcloudtesting.com", 9, , 100);` -6. Record time +1. Record time. +2. Call `UDPSocket::sendto("echo.mbedcloudtesting.com", 9, , 100);`. +3. Record time. +4. Call `UDPSocket::set_timeout(1000)`. +5. Call `UDPSocket::sendto("echo.mbedcloudtesting.com", 9, , 100);`. +6. Record time. **Expected result:** @@ -923,51 +896,51 @@ Test cases for TCPSocket class ### TCPSOCKET_OPEN_DESTRUCT -**Description:** Run SOCKET_OPEN_DESTRUCT for TCPSocket +**Description:** Run SOCKET_OPEN_DESTRUCT for TCPSocket. ### TCPSOCKET_OPEN_LIMIT -**Description:** Run SOCKET_OPEN_LIMIT for TCPSocket +**Description:** Run SOCKET_OPEN_LIMIT for TCPSocket. ### TCPSOCKET_OPEN_TWICE -**Description:** Run SOCKET_OPEN_TWICE for TCPSocket +**Description:** Run SOCKET_OPEN_TWICE for TCPSocket. ### TCPSOCKET_OPEN_CLOSE_REPEAT -**Description:** Run SOCKET_OPEN_CLOSE_REPEAT for TCPSocket +**Description:** Run SOCKET_OPEN_CLOSE_REPEAT for TCPSocket. ### TCPSOCKET_BIND_PORT -**Description:** Run SOCKET_BIND_PORT for TCPSocket +**Description:** Run SOCKET_BIND_PORT for TCPSocket. ### TCPSOCKET_BIND_PORT_FAIL -**Description:** Run SOCKET_BIND_PORT_FAIL for TCPSocket +**Description:** Run SOCKET_BIND_PORT_FAIL for TCPSocket. ### TCPSOCKET_BIND_ADDRESS_PORT -**Description:** Run SOCKET_BIND_ADDRESS_PORT for TCPSocket +**Description:** Run SOCKET_BIND_ADDRESS_PORT for TCPSocket. ### TCPSOCKET_BIND_ADDRESS_NULL -**Description:** Run SOCKET_BIND_ADDRESS_NULL for TCPSocket +**Description:** Run SOCKET_BIND_ADDRESS_NULL for TCPSocket. ### TCPSOCKET_BIND_ADDRESS_INVALID -**Description:** Run SOCKET_BIND_ADDRESS_INVALID for TCPSocket +**Description:** Run SOCKET_BIND_ADDRESS_INVALID for TCPSocket. ### TCPSOCKET_BIND_WRONG_TYPE -**Description:** Run SOCKET_BIND_WRONG_TYPE for TCPSocket +**Description:** Run SOCKET_BIND_WRONG_TYPE for TCPSocket. ### TCPSOCKET_BIND_ADDRESS -**Description:** Run SOCKET_BIND_ADDRESS for TCPSocket +**Description:** Run SOCKET_BIND_ADDRESS for TCPSocket. ### TCPSOCKET_BIND_UNOPENED -**Description:** Run SOCKET_BIND_UNOPENED for TCPSocket +**Description:** Run SOCKET_BIND_UNOPENED for TCPSocket. ### TCPSOCKET_CONNECT_INVALID @@ -977,22 +950,22 @@ Call `TCPSocket::connect()` with invalid parameters. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket:connect( NULL, 9);` -2. Call `TCPSocket:connect( "", 9);` -3. Call `TCPSocket:connect( "", 0);` -4. Call `TCPSocket:connect( "echo.mbedcloudtesting.com", 9);` -5. destroy the socket +1. Call `TCPSocket:connect( NULL, 9);`. +2. Call `TCPSocket:connect( "", 9);`. +3. Call `TCPSocket:connect( "", 0);`. +4. Call `TCPSocket:connect( "echo.mbedcloudtesting.com", 9);`. +5. Destroy the socket. **Expected result:** All connect() calls should return some error code except the number 4 -should return NSAPI_ERROR_OK. +should return `NSAPI_ERROR_OK`. @@ -1004,20 +977,20 @@ Repeatedly send small packets. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 9);` -2. Call `TCPSocket::send("hello", 5);` -3. repeat 1000 times -4. destroy the socket +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 9);`. +2. Call `TCPSocket::send("hello", 5);`. +3. Repeat 100 times. +4. Destroy the socket. **Expected result:** -`TCPSocket::connect()` should return NSAPI_ERROR_OK +`TCPSocket::connect()` should return `NSAPI_ERROR_OK'. All send() calls should return 5. @@ -1032,20 +1005,20 @@ Verify working of different packet sizes. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);` -2. Call `TCPSocket::send(, );` - 1. If less than was returned, size = sent bytes +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);`. +2. Call `TCPSocket::send(, );`. + 1. If less than was returned, size = sent bytes. -3. Call `TCPSocket::recv(buffer, );` -4. Verify incomming content was the same that was sent -5. Repeat 1200 times -6. destroy the socket +3. Call `TCPSocket::recv(buffer, );`. +4. Verify incomming content was the same that was sent. +5. Repeat 1200 times. +6. Destroy the socket. **Expected result:** @@ -1067,34 +1040,29 @@ mode **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);` -2. Call `TCPSocket::set_blocking(false)` -3. Register event handler with `TCPSocket::sigio()` -4. Create another thread that constantly waits signal from `sigio()` - handler, when received try `TCPSocket::recv(buf+index, - index)`, where index is the amount of data - already received. -5. Call `TCPSocket:send(, );` - 1. If less than was returned, try immeadiately - sending remaining bytes. - 2. If NSAPI_ERROR_WOULD_BLOCK is returned, wait for sigio() call - to happen. +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);`. +2. Call `TCPSocket::set_blocking(false)`. +3. Register event handler with `TCPSocket::sigio()`. +4. Create another thread that constantly waits signal from `sigio()` handler, when received try `TCPSocket::recv(buf+index, - index)`, where index is the amount of data already received. +5. Call `TCPSocket:send(, );`. + 1. If less than was returned, try immeadiately sending remaining bytes. + 2. If `NSAPI_ERROR_WOULD_BLOCK` is returned, wait for sigio() call to happen. 6. Wait for incomming packet for one second. -7. Verify incomming content was the same that was sent, set index for - receiving thread to zero. -8. Repeat 1200 times -9. destroy the socket +7. Verify incomming content was the same that was sent, set index for receiving thread to zero. +8. Repeat 1200 times. +9. Destroy the socket. **Expected result:** All send() calls should return the packet size or less. All recv() calls -should return NSAPI_ERROR_WOULD_BLOCK or packet size that is equal or +should return `NSAPI_ERROR_WOULD_BLOCK` or packet size that is equal or less than what has been sent. ### TCPSOCKET_RECV_TIMEOUT @@ -1105,30 +1073,30 @@ Test whether timeouts are obeyed in TCPSockets. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);` -2. Call `TCPSocket::set_timeout(100);` -3. Call `TCPSocket::send(;, 100);` -4. Repeat 5 times - 1. record a time in millisecond precission - 2. Call `TCPSocket::recv()` - 3. record a time in millisecond precission +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);`. +2. Call `TCPSocket::set_timeout(100);`. +3. Call `TCPSocket::send(;, 100);`. +4. Repeat 5 times. + 1. Record a time in millisecond precission. + 2. Call `TCPSocket::recv()`. + 3. Record a time in millisecond precission. -5. repeat testcase 10 times. +5. Repeat testcase 10 times. **Expected result:** Each send() call should return 100. Within each loop, one recv() may return the received packet size (100). -Other calls should return NSAPI_ERROR_WOULD_BLOCK. +Other calls should return `NSAPI_ERROR_WOULD_BLOCK`. -When NSAPI_ERROR_WOULD_BLOCK is received, check that time consumed is +When `NSAPI_ERROR_WOULD_BLOCK` is received, check that time consumed is more that 100 milliseconds but less than 200 milliseconds. @@ -1140,21 +1108,21 @@ Repeatedly send small packets in a given time limit **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket:connect("echo.mbedcloudtesting.com", 9);` -3. Call `TCPSocket:set_blocking(false);` -3. Call `TCPSocket:send("hello", 5);` -4. repeat 10 times -5. destroy the socket +1. Call `TCPSocket:connect("echo.mbedcloudtesting.com", 9);`. +3. Call `TCPSocket:set_blocking(false);`. +3. Call `TCPSocket:send("hello", 5);`. +4. Repeat 10 times. +5. Destroy the socket. **Expected result:** -`TCPSocket::connect()` should return NSAPI_ERROR_OK +`TCPSocket::connect()` should return `NSAPI_ERROR_OK'. All send() calls should return in less than 800 milliseconds @@ -1167,26 +1135,25 @@ Test whether we tolerate endpoint closing the connection. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up -3. TCPSocket is open +1. Network interface and stack are initialized. +2. Network connection is up. +3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 13);` -2. Call `TCPSocket::recv(, 30);` -3. Repeat until recv() returns 0 -4. Call `TCPSocket::close();` -5. delete socket +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 13);`. +2. Call `TCPSocket::recv(, 30);`. +3. Repeat until recv() returns 0. +4. Call `TCPSocket::close();`. +5. Delete socket. **Expected result:** -Connect should return NSAPI_ERROR_OK. +Connect should return `NSAPI_ERROR_OK`. -First recv() should return more that zero. Something between 10 and 30 -bytes (datetime string) +First recv() should return more that zero. Something between 10 and 30 bytes (datetime string) Second recv() should return zero because endpoint closed the connection. -(EOF). close() should return NSAPI_ERROR_OK +close() should return `NSAPI_ERROR_OK'. ### TCPSOCKET_SETSOCKOPT_KEEPALIVE_VALID @@ -1196,43 +1163,42 @@ Test we are able to request setting valid TCP keepalive values **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Call `TCPSocket::setsockopt(keepalive, [0,1 or 7200]);` -2. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 9);` -3. Call `TCPSocket::getsockopt(keepalive);` +1. Call `TCPSocket::setsockopt(keepalive, [0,1 or 7200]);`. +2. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 9);`. +3. Call `TCPSocket::getsockopt(keepalive);`. **Postconditions:** -1. Call `TCPSocket::close();` -2. delete socket +1. Call `TCPSocket::close();`. +2. Delete socket. **Expected result:** -`TCPSocket::getsockopt(keepalive)` returns same value as was set with -`TCPSocket::setsockopt()` or NSAPI_ERROR_UNSUPPORTED +`TCPSocket::getsockopt(keepalive)` returns same value as was set with `TCPSocket::setsockopt()` or `NSAPI_ERROR_UNSUPPORTED'. Test cases for TLSSocket class ------------------------------ ### TLSSOCKET_OPEN_DESTRUCT -**Description:** Run SOCKET_OPEN_DESTRUCT for TLSSocket +**Description:** Run SOCKET_OPEN_DESTRUCT for TLSSocket. ### TLSSOCKET_OPEN_LIMIT -**Description:** Run SOCKET_OPEN_LIMIT for TLSSocket +**Description:** Run SOCKET_OPEN_LIMIT for TLSSocket. ### TLSSOCKET_OPEN_TWICE -**Description:** Run SOCKET_OPEN_TWICE for TLSSocket +**Description:** Run SOCKET_OPEN_TWICE for TLSSocket. ### TLSSOCKET_CONNECT_INVALID -**Description:** Run SOCKET_CONNECT_INVALID for TLSSocket +**Description:** Run SOCKET_CONNECT_INVALID for TLSSocket. ### TLSSOCKET_HANDSHAKE_INVALID @@ -1242,15 +1208,15 @@ Execute TLS handshake by calling `TLSSocket::connect()` - server must not match **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create TLSSocket -2. Call `TLSSocket::open()` -3. Call `TLSSocket::connect("os.mbed.com", 2009)` -4. Call `TLSSocket::close()` +1. Create TLSSocket. +2. Call `TLSSocket::open()`. +3. Call `TLSSocket::connect("os.mbed.com", 2009)`. +4. Call `TLSSocket::close()`. **Expected result:** @@ -1260,20 +1226,20 @@ TLSSocket::connect must return an error **Description:** -Make a HTTP request to a closed socket +Make a HTTP request to a closed socket. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -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)` +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:** @@ -1291,19 +1257,19 @@ TLSSocket::send must return an error **Description:** -Make a HTTP request to an unconnected socket +Make a HTTP request to an unconnected socket. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** -1. Create TLSSocket -2. Call `TLSSocket::open()` -3. Call `TLSSocket::send("12345", 5)` -4. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007)` +1. Create TLSSocket. +2. Call `TLSSocket::open()`. +3. Call `TLSSocket::send("12345", 5)`. +4. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007)`. **Expected result:** @@ -1329,14 +1295,14 @@ Verify that TLS Socket fails to connect without certificate. **Preconditions:** -1. Network interface and stack are initialised -2. Network connection is up +1. Network interface and stack are initialized. +2. Network connection is up. **Test steps:** 1. Create TLSSocket, without adding a default certificate. -2. Call `TLSSocket::open()` -3. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2009)` +2. Call `TLSSocket::open()`. +3. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2009)`. **Expected result:** @@ -1346,7 +1312,7 @@ TLSSocket::connect must return an error if the certificate is not present. **Description:** -Run TCPSOCKET_RECV_TIMEOUT for TLSSOCKET by using port number 2007.  +Run TCPSOCKET_RECV_TIMEOUT for TLSSOCKET by using port number 2007. ### TLSSOCKET_SIMULTANEOUS_TEST @@ -1356,34 +1322,33 @@ Simultaneously send packets to echo server on two opened sockets and read incom **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 +1. Network interface and stack are initialized. +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. On main thread: - 1. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007);` - 2. Call `TLSSocket::send(, );` - 1. If less than was returned, size = sent bytes + 1. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007);`. + 2. Call `TLSSocket::send(, );`. + 1. If less than was returned, size = sent bytes. - 3. `Call TLSSocket::recv(buffer, );` - 4. Verify incomming content was the same that was sent - 5. Repeat 100 times + 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 + 1. Call `TLSSocket::connect("echo.mbedcloudtesting.com", 2007);`. + 2. Call `TLSSocket::send(, );'. + 1. If less than was returned, size = sent bytes. - 3. Call `TLSSocket::recv(buffer, );` - 4. Verify incomming content was the same that was sent - 5. Repeat 100 times + 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 +3. Wait for end additional thread. +4. Close and destroy the sockets. **Expected result:** @@ -1401,20 +1366,19 @@ Send burst of packets to echo server and read incoming packets back. **Preconditions:** -1. Network interface and stack are initialised. +1. Network interface and stack are initialized. 2. Network connection is up. 3. UDPSocket is open. **Test steps:** -1. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 100);` -2. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 200);` -3. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 300);` -4. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 120);` -5. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 500);` +1. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 100);`. +2. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 200);`. +3. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 300);`. +4. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 120);`. +5. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 500);`. 6. Wait for incomming packets for five second. -7. Verify incomming content was the same that was sent. Allow - packet reordering. +7. Verify incomming content was the same that was sent. Allow packet reordering. 8. Repeat 100 times. 9. Destroy the socket. @@ -1422,8 +1386,7 @@ Send burst of packets to echo server and read incoming packets back. 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. +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%. @@ -1434,29 +1397,26 @@ 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. +Send burst of packets to echo server and read incoming packets back. Use socket in non-blocking mode. **Preconditions:** -1. Network interface and stack are initialised. +1. Network interface and stack are initialized. 2. Network connection is up. 3. UDPSocket is open. **Test steps:** -1. Call `UDPSocket::set_blocking(false)` -2. Register event handler with `UDPSocket::sigio()` -3. Create another thread that constantly waits signal from sigio() - handler, when received try `UDPSocket::recvfrom()` -4. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 100);` -5. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 200);` -6. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 300);` -7. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 120);` -8. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 500);` +1. Call `UDPSocket::set_blocking(false)`. +2. Register event handler with `UDPSocket::sigio()`. +3. Create another thread that constantly waits signal from sigio() handler, when received try `UDPSocket::recvfrom()`. +4. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 100);`. +5. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 200);`. +6. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 300);`. +7. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 120);`. +8. Call `UDPSocket:sendto("echo.mbedcloudtesting.com", 7, , 500);`. 9. Wait for incomming packets for five second. -10. Verify incomming content was the same that was sent. Allow - packet reordering. +10. Verify incomming content was the same that was sent. Allow packet reordering. 11. Repeat 100 times. 12. Destroy the socket. @@ -1464,8 +1424,7 @@ socket in non-blocking mode. 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. +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%. @@ -1481,19 +1440,19 @@ Send burst of packets to echo server and read incoming packets back. **Preconditions:** -1. Network interface and stack are initialised. +1. Network interface and stack are initialized. 2. Network connection is up. 3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);` -2. Call `TCPSocket::send(, 100);` -3. Call `TCPSocket::send(, 200);` -4. Call `TCPSocket::send(, 300);` -5. Call `TCPSocket::send(, 120);` -6. Call `TCPSocket::send(, 500);` -7. Call `TCPSocket::recv(buf, 1220)` +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);`. +2. Call `TCPSocket::send(, 100);`. +3. Call `TCPSocket::send(, 200);`. +4. Call `TCPSocket::send(, 300);`. +5. Call `TCPSocket::send(, 120);`. +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. @@ -1502,55 +1461,46 @@ Send burst of packets to echo server and read incoming packets back. All send() calls should return the packet size. -NOTE: This is stream so recv() might return less data than what was -requested. In this case you need to keep calling recv() with remaining -size until all data that you have sent is returned. +NOTE: This is stream so recv() might return less data than what was requested. In this case you need to keep calling recv() with remaining size until all data that you have sent is returned. -Consecutive calls to recv() should return all the data that has been -send. Total amount of returned must match 1220. +Consecutive calls to recv() should return all the data that has been send. Total amount of returned must match 1220. ### TCPSOCKET_ECHOTEST_BURST_NONBLOCK **Description:** -Send burst of packets to echo server and read incoming packets back. Use -socket in non-blocking mode. +Send burst of packets to echo server and read incoming packets back. Use socket in non-blocking mode. **Preconditions:** -1. Network interface and stack are initialised. +1. Network interface and stack are initialized. 2. Network connection is up. 3. TCPSocket is open. **Test steps:** -1. Register event handler with `TCPSocket::sigio()` -2. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);` -3. Call `TCPSocket::set_blocking(false)` -4. Create another thread that constantly waits signal from sigio() - handler, when received try `TCPSocket::recv()` +1. Register event handler with `TCPSocket::sigio()`. +2. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7);`. +3. Call `TCPSocket::set_blocking(false)`. +4. Create another thread that constantly waits signal from sigio() handler, when received try `TCPSocket::recv()`. 5. For randomly generated packets, sized 100, 200, 300, 120 and 500 do - 1. Call `TCPSocket::send(packet, size);` + 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. +7. Verify incomming content was the same that was sent. Allow recv() to return smaller piezes. 8. Repeat 100 times. 9. Destroy the socket. **Expected result:** -All send() calls should return NSAPI_ERROR_WOULD_BLOCK or size which -is equal or less than requested. +All send() calls should return `NSAPI_ERROR_WOULD_BLOCK` or size which is equal or less than requested. -All recv() calls should return value that is less or equal to what have -been sent. With consecutive calls, size should match. +All recv() calls should return value that is less or equal to what have been sent. With consecutive calls, size should match. -When recv() returns NSAPI_ERROR_WOULD_BLOCK wait for next sigio() -event. No other error codes allowed. +When recv() returns `NSAPI_ERROR_WOULD_BLOCK` wait for next sigio() event. No other error codes allowed. ### TCPSOCKET_RECV_100K @@ -1561,14 +1511,14 @@ Download 100kB of data **Preconditions:** -1. Network interface and stack are initialised. +1. Network interface and stack are initialized. 2. Network connection is up. 3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 19);` -2. Call `TCPSocket::recv(buffer, 100);` +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 19);`. +2. Call `TCPSocket::recv(buffer, 100);`. 3. Verify input according to known pattern. 4. Loop until 100kB of data received. 5. Close socket. @@ -1588,17 +1538,16 @@ Download 100kB of data **Preconditions:** -1. Network interface and stack are initialised. +1. Network interface and stack are initialized. 2. Network connection is up. 3. TCPSocket is open. **Test steps:** -1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 19);` -2. Call `TCPSocket::set_blocking(false)` -3. Create another thread that constantly waits signal from sigio() - handler, when received try `TCPSocket::recv()` - 1. Call `TCPSocket::recv(buffer, 100);` +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 19);`. +2. Call `TCPSocket::set_blocking(false)`. +3. Create another thread that constantly waits signal from sigio() handler, when received try `TCPSocket::recv()`. + 1. Call `TCPSocket::recv(buffer, 100);`. 2. Verify input according to known pattern. 4. Wait until 100kB of data received. @@ -1606,9 +1555,7 @@ Download 100kB of data **Expected result:** -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. +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. @@ -1616,43 +1563,342 @@ Measure time taken for receiving, report speed. **Description:** -Run two threads which both exercise the underlying stack and driver -through a dedicated socket +Run two threads which both exercise the underlying stack and driver through a dedicated socket. **Preconditions:** -1. Network interface and stack are initialised. +1. Network interface and stack are initialized. 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. +1. Call `TCPSocket::connect("echo.mbedcloudtesting.com", 7)` in both threads - in the main thread executing the test case and on the additional one. 2. On main thread - 1. For randomly generated packets, sized 1001, 901, 801,...,101,1 - do - 1. Call `TCPSocket::send(packet, size);` + 1. For randomly generated packets, sized 1001, 901, 801,...,101,1 do + 1. Call `TCPSocket::send(packet, size);`. 2. Verify incoming content was the same that was sent. - Allow recv() to return smaller piezes. + Allow recv() to return smaller pieces. 3. Simultaneously with the earlier step do on the additional thread 1. For randomly generated packets, sized 10 do - 1. Call `TCPSocket::send(packet, size);` + 1. Call `TCPSocket::send(packet, size);`. 2. Verify incomming content was the same that was sent. Allow recv() to return smaller piezes. - 3. stop the thread if inconsistensies were found and report it - to main thread + 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. **Expected result:** -Echo server returns data to both threads and received data matches to -send data. The additional thread isn't stopped prematurely. +Echo server returns data to both threads and received data matches to send data. The additional thread isn't stopped prematurely. + +Test cases for DNS class +--------------------------- + +### ASYNCHRONOUS_DNS + +**Description:** + +Verify the basic functionality of asynchronous DNS. Call `NetworkInterface::gethostbyname_async()` with a valid host name, and verify the result. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname_async()` with a valid host name and a callback. +2. Verify that callback is called with correct parameters. + +**Expected result:** + +Callback is called with `NSAPI_ERROR_OK` and IP address. + +### ASYNCHRONOUS_DNS_SIMULTANEOUS + +**Description:** + +Verify that simultaneous asynchronous DNS queries work correctly. Call `NetworkInterface::gethostbyname_async()` in a row 6 times with a different host names. Wait for all requests to complete, and verify the result. Cache should not contain host names used in asynchronous request. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname_async()` in a row 6 times with a different host names. Host names shall not be found from cache. +2. Verify that last `gethostbyname_async()` operation is rejected because there is room only for 5 simultaneous operations. +3. Verify that callback is called with correct parameters 5 times. + +**Expected result:** + +Sixth `gethostbyname_async()` is rejected. Callback is called with `NSAPI_ERROR_OK` and IP address 5 times. + +### ASYNCHRONOUS_DNS_SIMULTANEOUS_CACHE + +**Description:** + +Verify that the caching of DNS results works correctly with simultaneous asynchronous DNS queries. Call `NetworkInterface::gethostbyname_async()` in a row 6 times with a different host names. Wait for all requests to complete and verify result. Cache shall contain at least one host name used in asynchronous request. You can achieve this, for example, by running test "Asynchronous DNS simultaneous" before this test and using same host names in this run. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname_async()` in a row 6 times with a different host names. At least one host name shall be found from cache. +2. Verify that callback is called with correct parameters 6 times. + +**Expected result:** + +Callback is called with `NSAPI_ERROR_OK` and IP address 6 times. + +### ASYNCHRONOUS_DNS_CACHE + +**Description:** + +Verify that the caching of DNS results works correctly. Call `NetworkInterface::gethostbyname_async()` 5 times with the same host name and verify result after each request. For first request, cache shall not contain the host name. Verify that first request completes slower than the requests made after it (where the response is found from cache). + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname_async()` with a host name. For first request, host name shall not be found from cache. +2. Verify that callback is called with correct parameters. +3. Repeat the sequence 4 times using the same host name. +4. For each request, calculate how long time it takes for DNS query to complete. + +**Expected result:** + +Callback is called with `NSAPI_ERROR_OK` and IP address 5 times. First request shall complete before the requests made after it (where the response is found from cache). + +### ASYNCHRONOUS_DNS_NON_ASYNC_AND_ASYNC + +**Description:** + +Verify synchronous (in other words, blocking) DNS queries and asynchronous (in other words, non-blocking) queries work at the same time. Call `NetworkInterface::gethostbyname_async()`. Right after that, make 6 synchronous `NetworkInterface::gethostbyname()` calls with different host names. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname_async()` with a host name. Host name shall not be found from cache. +2. Call `gethostbyname()` 6 times with a different host names (none of the names shall be same as in step 1). +3. Verify that each `gethostbyname()` returns success. +4. Verify that the asynchronous callback is called with correct parameters. + +**Expected result:** + +All operations shall return `NSAPI_ERROR_OK` and IP address. + +### ASYNCHRONOUS_DNS_CANCEL + +**Description:** + +Verify that asynchronous DNS query cancel works correctly. Call `NetworkInterface::gethostbyname_async()` in a row 6 times with a different host names. Cache shall contain 3 host names used in requests. This can be achieved e.g. by running test "Asynchronous DNS synchronous and asynchronous" before this test and using same host names in this run. For each request that was given an unique ID, call cancel. Verify that callback is not called for canceled requests. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname_async()` in a row 6 times with a different host names. Cache shall contain in maximum 3 host names used in requests. +2. Call `gethostbyname_async_cancel()` for each request that was given an unique ID. +3. Verify that for canceled requests, callback is not called. +4. Verify that for other requests, callback is called. + +**Expected result:** + +Callback shall be called only for requests that were not canceled. + +### ASYNCHRONOUS_DNS_EXTERNAL_EVENT_QUEUE + +**Description:** + +Verify that providing an external event queue works correctly. Define a thread and an event queue running on it. Define a DNS call in callback function that uses the event queue (call_in_callback_cb_t). Enable external event queue. Call `NetworkInterface::gethostbyname_async()` in a row 6 times with a different host names. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Define a thread and an event queue running on it. +2. Define a DNS call in callback function that uses the event queue (call_in_callback_cb_t). +3. Start thread and event queue. +4. Set DNS callback function using the `nsapi_dns_call_in_set()` call. +5. Call `gethostbyname_async()` in a row 6 times with a different host names. Host names shall not be found from cache. +6. Verify that last `gethostbyname_async()` operation is rejected since there is room only for 5 simultaneous operations. +7. Verify that callback is called with correct parameters 5 times. +8. Restore default DNS callback function using the `nsapi_dns_call_in_set()` call. + +**Expected result:** + +Sixth `gethostbyname_async()` is rejected. Callback is called with `NSAPI_ERROR_OK` and IP address 5 times. + +### ASYNCHRONOUS_DNS_INVALID_HOST + +**Description:** + +Verify that DNS failure error is provided for invalid hosts. Call `NetworkInterface::gethostbyname_async()` in a row 6 times with a different host names. First, third and fifth host name shall be invalid. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname_async()` in a row 6 times with a different host names. Host names shall not be found from cache. First, third and fifth host name shall be invalid. +2. Verify that last `gethostbyname_async()` operation is rejected since there is room only for 5 simultaneous operations. +3. Verify that callback is called with correct parameters 5 times. + +**Expected result:** + +Sixth `gethostbyname_async()` is rejected. Callback is called with `NSAPI_ERROR_DNS_FAILURE` for first, third and fifth host name. Callback is called with `NSAPI_ERROR_OK` and IP address for second and fourth host name. + +### ASYNCHRONOUS_DNS_TIMEOUTS + +**Description:** + +Test DNS timeouts using an external event queue that is modified to timeout the events faster that standard event queue. In this test event queue shall not delay events, instead it handles those immediately. Call `NetworkInterface::gethostbyname_async()` in a row 6 times with a different host names. All or some of the request shall timeout and timeout return value is returned. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Define a thread and an event queue running on it. +2. Define a DNS call in callback function that uses the event queue (call_in_callback_cb_t). Callback function shall not delay callbacks; instead it shall handle those immediately. +3. Start thread and event queue. +4. Set DNS callback function using the `nsapi_dns_call_in_set()` call. +5. Call `gethostbyname_async()` in a row 6 times with a different host names. Host names shall not be found from cache. +6. Verify that last `gethostbyname_async()` operation is rejected since there is room only for 5 simultaneous operations. +7. Verify that callback is called with correct parameters 5 times. + +**Expected result:** + +Sixth `gethostbyname_async()` is rejected. At least for one operation, callback is called with `NSAPI_ERROR_TIMEOUT` value. + +### ASYNCHRONOUS_DNS_SIMULTANEOUS_REPEAT + +**Description:** + +Verify that simultaneous asynchronous DNS queries work correctly when repeated in sequence. Call `NetworkInterface::gethostbyname_async()` in a row 5 times with a different host names. Wait for all requests to complete and verify result. Repeat the procedure 100 times. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname_async()` in a row 5 times with a different host names, providing a callback to be called when the operation completes. +2. Verify that callback is called with correct parameters 5 times for the first operation. +3. Repeat 100 times steps 1 to 2. + +**Expected result:** + +Callback, registered for `gethostbyname_async()`, is called with `NSAPI_ERROR_OK` and an IP address 5 times for every one of a hundred repetitions of the test. + +### SYNCHRONOUS_DNS + +**Description:** + +Verify the basic functionality of synchronous DNS. Call `NetworkInterface::gethostbyname()` with a valid host name, and verify the result. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname()` with a valid host name. +2. Verify the address was resolved and the return value was valid. + +**Expected result:** + +Return value is `NSAPI_ERROR_OK` and IP address is obtained from the function call. + +### SYNCHRONOUS_DNS_MULTIPLE + +**Description:** + +Verify the basic functionality of synchronous DNS. Call `NetworkInterface::gethostbyname()` with a list of 6 host names, and verify the result. + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname()` with a list of 6 host names. +2. Verify that each of the addresses was resolved and the return value was valid. + +**Expected result:** + +Return value is `NSAPI_ERROR_OK` and IP addresses are obtained from the function call. + +### SYNCHRONOUS_DNS_CACHE + +**Description:** + +Verify that the caching of DNS results works correctly. Call `NetworkInterface::gethostbyname()` 5 times with the same host name, and verify the result after each request. For first request, cache shall not contain the host name. Verify that first request completes before the requests made after it (where the response is found from cache). + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname()` with a host name. For the first request, host name should not be found in cache and an error should be returned. +2. Verify that address was resolved and the return value was valid. +3. Repeat the sequence 4 times using the same host name. +4. For each request, calculate how long time it takes for DNS query to complete. + +**Expected result:** + +Return value is `NSAPI_ERROR_OK` and IP address is obtained from the function call 5 times. First request shall complete before the requests made after it (where the response is found from cache). + +### SYNCHRONOUS_DNS_INVALID_HOST + +**Description:** + +Verify that DNS failure error is provided for invalid hosts. Call `NetworkInterface::gethostbyname()` in a row 6 times with different host names. First, third and fifth of the host names used in this test shall be invalid (for example by adding an incorrect suffic, like so: "google.com_invalid"). + +**Preconditions:** + +1. Network interface is initialized. +2. Network connection is up. + +**Test steps:** + +1. Call `gethostbyname()` in a row 6 times with a different host names. Host names shall not be found from cache. First, third and fifth host name shall be invalid. +2. Verify that return value was valid and for valid hostnames the address was resolved 6 times. + +**Expected result:** + +Return value is `NSAPI_ERROR_DNS_FAILURE` for first, third and fifth host name, which were invalidated at the beginning of the test. Return value is `NSAPI_ERROR_OK` and IP address is obtained for second and fourth host name, which were valid. Subset for driver test ---------------------- @@ -1677,4 +1923,4 @@ Subset for driver test ### For socket layer driver (AT-driven, external IP stack): -All Socket, UDPSocket, TCPSocket and TLSSocket testcases. +All Socket, UDPSocket, TCPSocket and TLSSocket testcases. \ No newline at end of file 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_simultaneous_repeat.cpp b/TESTS/netsocket/dns/asynchronous_dns_simultaneous_repeat.cpp index 9759aa4872f..791eca8864c 100644 --- a/TESTS/netsocket/dns/asynchronous_dns_simultaneous_repeat.cpp +++ b/TESTS/netsocket/dns/asynchronous_dns_simultaneous_repeat.cpp @@ -33,7 +33,7 @@ int result_exp_timeout; void ASYNCHRONOUS_DNS_SIMULTANEOUS_REPEAT() { - for (int i = 0; i < 100; i++) { + for (int i = 0; i < 10; i++) { do_asynchronous_gethostbyname(dns_test_hosts, MBED_CONF_APP_DNS_SIMULT_QUERIES + 1, &result_ok, &result_no_mem, &result_dns_failure, &result_exp_timeout); diff --git a/TESTS/netsocket/dns/dns_tests.h b/TESTS/netsocket/dns/dns_tests.h index 7bfe53f71ce..383f0aeabe9 100644 --- a/TESTS/netsocket/dns/dns_tests.h +++ b/TESTS/netsocket/dns/dns_tests.h @@ -61,6 +61,14 @@ void hostbyname_cb(void *data, nsapi_error_t result, SocketAddress *address); void do_asynchronous_gethostbyname(const char hosts[][DNS_TEST_HOST_LEN], unsigned int op_count, int *exp_ok, int *exp_no_mem, int *exp_dns_failure, int *exp_timeout); void do_gethostbyname(const char hosts[][DNS_TEST_HOST_LEN], unsigned int op_count, int *exp_ok, int *exp_no_mem, int *exp_dns_failure, int *exp_timeout); +namespace dns_global { +#ifdef MBED_GREENTEA_TEST_DNSSOCKET_TIMEOUT_S +static const int TESTS_TIMEOUT = MBED_GREENTEA_TEST_DNSSOCKET_TIMEOUT_S; +#else +static const int TESTS_TIMEOUT = 10 * 60; +#endif +} + /* * Test cases */ diff --git a/TESTS/netsocket/dns/main.cpp b/TESTS/netsocket/dns/main.cpp index 324e3b8c56c..f4cdbc4114f 100644 --- a/TESTS/netsocket/dns/main.cpp +++ b/TESTS/netsocket/dns/main.cpp @@ -157,14 +157,26 @@ static void net_bringup() printf("MBED: IP address is '%s'\n", net->get_ip_address()); } +static void net_bringdown() +{ + NetworkInterface::get_default_instance()->disconnect(); + printf("MBED: ifdown\n"); +} + // Test setup utest::v1::status_t test_setup(const size_t number_of_cases) { - GREENTEA_SETUP(200, "default_auto"); + GREENTEA_SETUP(dns_global::TESTS_TIMEOUT, "default_auto"); net_bringup(); return verbose_test_setup_handler(number_of_cases); } +void greentea_teardown(const size_t passed, const size_t failed, const failure_t failure) +{ + net_bringdown(); + return greentea_test_teardown_handler(passed, failed, failure); +} + Case cases[] = { Case("ASYNCHRONOUS_DNS", ASYNCHRONOUS_DNS), Case("ASYNCHRONOUS_DNS_SIMULTANEOUS", ASYNCHRONOUS_DNS_SIMULTANEOUS), @@ -181,7 +193,7 @@ Case cases[] = { Case("SYNCHRONOUS_DNS_INVALID", SYNCHRONOUS_DNS_INVALID), }; -Specification specification(test_setup, cases, greentea_continue_handlers); +Specification specification(test_setup, cases, greentea_teardown, greentea_continue_handlers); int main() { diff --git a/TESTS/netsocket/tcp/main.cpp b/TESTS/netsocket/tcp/main.cpp index 36f453532ad..b49e9a9689f 100644 --- a/TESTS/netsocket/tcp/main.cpp +++ b/TESTS/netsocket/tcp/main.cpp @@ -57,6 +57,15 @@ 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() { NetworkInterface *net = NetworkInterface::get_default_instance(); diff --git a/TESTS/netsocket/tcp/tcp_tests.h b/TESTS/netsocket/tcp/tcp_tests.h index 8314a30da50..bfa32306f15 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); @@ -35,7 +36,11 @@ int fetch_stats(void); int split2half_rmng_tcp_test_time(); // [s] namespace tcp_global { -static const int TESTS_TIMEOUT = 480; +#ifdef MBED_GREENTEA_TEST_TCPSOCKET_TIMEOUT_S +static const int TESTS_TIMEOUT = MBED_GREENTEA_TEST_TCPSOCKET_TIMEOUT_S; +#else +static const int TESTS_TIMEOUT = (10 * 60); +#endif static const int TCP_OS_STACK_SIZE = 2048; static const int RX_BUFF_SIZE = 1220; diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_address_invalid.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_address_invalid.cpp index 4e0c568ce78..933926ede4e 100644 --- a/TESTS/netsocket/tcp/tcpsocket_bind_address_invalid.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_bind_address_invalid.cpp @@ -39,7 +39,14 @@ void TCPSOCKET_BIND_ADDRESS_INVALID() return; } TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); - nsapi_error_t bind_result = sock->bind("190.2.3.4", 1024); + 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 { diff --git a/TESTS/netsocket/tcp/tcpsocket_bind_wrong_type.cpp b/TESTS/netsocket/tcp/tcpsocket_bind_wrong_type.cpp index be223b0f2c2..6a388b5ca6a 100644 --- a/TESTS/netsocket/tcp/tcpsocket_bind_wrong_type.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_bind_wrong_type.cpp @@ -40,7 +40,14 @@ void TCPSOCKET_BIND_WRONG_TYPE() } 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 = SocketAddress(addr_bytes, NSAPI_IPv4, 80); + 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"); diff --git a/TESTS/netsocket/tcp/tcpsocket_echotest.cpp b/TESTS/netsocket/tcp/tcpsocket_echotest.cpp index bb5d5e714db..1d9c2e1ac85 100644 --- a/TESTS/netsocket/tcp/tcpsocket_echotest.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_echotest.cpp @@ -96,29 +96,31 @@ void TCPSOCKET_ECHOTEST() void tcpsocket_echotest_nonblock_receive() { - 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) { + while (bytes2recv > 0) { + 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) { + TEST_FAIL_MESSAGE("time_allotted exceeded"); + receive_error = true; + } + return; + } else if (recvd < 0) { + printf("sock.recv returned an error %d", recvd); + TEST_FAIL(); receive_error = true; + } else { + bytes2recv -= recvd; } - return; - } else if (recvd < 0) { - receive_error = true; - } else { - bytes2recv -= recvd; - } - - 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(); + if (bytes2recv == 0) { + TEST_ASSERT_EQUAL(0, memcmp(tcp_global::tx_buffer, tcp_global::rx_buffer, 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. } - // else - no error, not all bytes were received yet. } void TCPSOCKET_ECHOTEST_NONBLOCK() @@ -177,7 +179,6 @@ void TCPSOCKET_ECHOTEST_NONBLOCK() } 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++) { diff --git a/TESTS/netsocket/tcp/tcpsocket_echotest_burst.cpp b/TESTS/netsocket/tcp/tcpsocket_echotest_burst.cpp index 08910cd94c5..4b020f8abd6 100644 --- a/TESTS/netsocket/tcp/tcpsocket_echotest_burst.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_echotest_burst.cpp @@ -28,7 +28,7 @@ namespace { static const int SIGNAL_SIGIO = 0x1; static const int SIGIO_TIMEOUT = 20000; //[ms] -static const int BURST_CNT = 100; +static const int BURST_CNT = 20; static const int BURST_SIZE = 1220; } diff --git a/TESTS/netsocket/tcp/tcpsocket_endpoint_close.cpp b/TESTS/netsocket/tcp/tcpsocket_endpoint_close.cpp index 436c4bf2810..b004eb4aa70 100644 --- a/TESTS/netsocket/tcp/tcpsocket_endpoint_close.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_endpoint_close.cpp @@ -49,7 +49,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; @@ -68,11 +67,11 @@ void TCPSOCKET_ENDPOINT_CLOSE() 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 || diff --git a/TESTS/netsocket/tcp/tcpsocket_open_destruct.cpp b/TESTS/netsocket/tcp/tcpsocket_open_destruct.cpp index 77330033777..edd129529a8 100644 --- a/TESTS/netsocket/tcp/tcpsocket_open_destruct.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_open_destruct.cpp @@ -33,7 +33,7 @@ void TCPSOCKET_OPEN_DESTRUCT() } #endif - for (int i = 0; i < 1000; i++) { + for (int i = 0; i < 100; i++) { TCPSocket *sock = new TCPSocket; if (!sock) { TEST_FAIL(); diff --git a/TESTS/netsocket/tcp/tcpsocket_send_repeat.cpp b/TESTS/netsocket/tcp/tcpsocket_send_repeat.cpp index fcf2c8b86ea..098c2153f2c 100644 --- a/TESTS/netsocket/tcp/tcpsocket_send_repeat.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_send_repeat.cpp @@ -32,7 +32,7 @@ void TCPSOCKET_SEND_REPEAT() int snd; Timer timer; static const char tx_buffer[] = {'h', 'e', 'l', 'l', 'o'}; - for (int i = 0; i < 1000; i++) { + for (int i = 0; i < 100; i++) { snd = sock.send(tx_buffer, sizeof(tx_buffer)); if (snd != sizeof(tx_buffer)) { TEST_FAIL(); diff --git a/TESTS/netsocket/tcp/tcpsocket_send_timeout.cpp b/TESTS/netsocket/tcp/tcpsocket_send_timeout.cpp index 2ec6139c311..da8ebf05aa5 100644 --- a/TESTS/netsocket/tcp/tcpsocket_send_timeout.cpp +++ b/TESTS/netsocket/tcp/tcpsocket_send_timeout.cpp @@ -44,6 +44,7 @@ void TCPSOCKET_SEND_TIMEOUT() (timer.read_ms() <= 800)) { continue; } + printf("send: err %d, time %d", err, timer.read_ms()); TEST_FAIL(); break; } diff --git a/TESTS/netsocket/tls/main.cpp b/TESTS/netsocket/tls/main.cpp index 0e7316a9e3c..9822d1b34b7 100644 --- a/TESTS/netsocket/tls/main.cpp +++ b/TESTS/netsocket/tls/main.cpp @@ -21,7 +21,7 @@ #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 +#error [NOT_SUPPORTED] Requires echo-server-discard-port parameter from mbed_app.json #endif #include "mbed.h" @@ -195,9 +195,12 @@ Case cases[] = { Case("TLSSOCKET_SEND_REPEAT", TLSSOCKET_SEND_REPEAT), Case("TLSSOCKET_SEND_TIMEOUT", TLSSOCKET_SEND_TIMEOUT), Case("TLSSOCKET_NO_CERT", TLSSOCKET_NO_CERT), -#ifndef __IAR_SYSTEMS_ICC__ - Case("TLSSOCKET_SIMULTANEOUS", TLSSOCKET_SIMULTANEOUS) -#endif +// 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); diff --git a/TESTS/netsocket/tls/tls_tests.h b/TESTS/netsocket/tls/tls_tests.h index f5555c6be63..0c5f68e39b6 100644 --- a/TESTS/netsocket/tls/tls_tests.h +++ b/TESTS/netsocket/tls/tls_tests.h @@ -39,7 +39,11 @@ int fetch_stats(void); int split2half_rmng_tls_test_time(); // [s] namespace tls_global { -static const int TESTS_TIMEOUT = 480; +#ifdef MBED_GREENTEA_TEST_TLSSOCKET_TIMEOUT_S +static const int TESTS_TIMEOUT = MBED_GREENTEA_TEST_TLSSOCKET_TIMEOUT_S; +#else +static const int TESTS_TIMEOUT = (10 * 60); +#endif static const int TLS_OS_STACK_SIZE = 2048; static const int RX_BUFF_SIZE = 1220; diff --git a/TESTS/netsocket/tls/tlssocket_echotest.cpp b/TESTS/netsocket/tls/tlssocket_echotest.cpp index b7b91b1ef45..eff2cafa4f1 100644 --- a/TESTS/netsocket/tls/tlssocket_echotest.cpp +++ b/TESTS/netsocket/tls/tlssocket_echotest.cpp @@ -63,8 +63,8 @@ void TLSSOCKET_ECHOTEST() if (tlssocket_connect_to_echo_srv(*sock) != NSAPI_ERROR_OK) { printf("Error from tlssocket_connect_to_echo_srv\n"); TEST_FAIL(); - return; delete sock; + return; } int recvd; @@ -102,29 +102,31 @@ void TLSSOCKET_ECHOTEST() 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) { + while (bytes2recv > 0) { + 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) { + TEST_FAIL_MESSAGE("time_allotted exceeded"); + receive_error = true; + } + return; + } else if (recvd < 0) { + printf("sock.recv returned an error %d", recvd); + TEST_FAIL(); receive_error = true; + } else { + bytes2recv -= recvd; } - 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(); + if (bytes2recv == 0) { + TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, 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. } - // else - no error, not all bytes were received yet. } void TLSSOCKET_ECHOTEST_NONBLOCK() @@ -177,13 +179,11 @@ void TLSSOCKET_ECHOTEST_NONBLOCK() 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++) { diff --git a/TESTS/netsocket/tls/tlssocket_echotest_burst.cpp b/TESTS/netsocket/tls/tlssocket_echotest_burst.cpp index 330c4c8bb74..f5d12ef93c8 100644 --- a/TESTS/netsocket/tls/tlssocket_echotest_burst.cpp +++ b/TESTS/netsocket/tls/tlssocket_echotest_burst.cpp @@ -30,7 +30,7 @@ namespace { static const int SIGNAL_SIGIO = 0x1; static const int SIGIO_TIMEOUT = 20000; //[ms] -static const int BURST_CNT = 100; +static const int BURST_CNT = 20; static const int BURST_SIZE = 1220; } diff --git a/TESTS/netsocket/tls/tlssocket_handshake_invalid.cpp b/TESTS/netsocket/tls/tlssocket_handshake_invalid.cpp index 1c985eed6d7..0417afb1c33 100644 --- a/TESTS/netsocket/tls/tlssocket_handshake_invalid.cpp +++ b/TESTS/netsocket/tls/tlssocket_handshake_invalid.cpp @@ -31,8 +31,8 @@ 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_NO_CONNECTION, - sock.connect("os.mbed.com", MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS)); + TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, + sock.connect("google.com", 443)); // 443 is https port. TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); } diff --git a/TESTS/netsocket/tls/tlssocket_open_destruct.cpp b/TESTS/netsocket/tls/tlssocket_open_destruct.cpp index 5df6c901817..cf720043fbb 100644 --- a/TESTS/netsocket/tls/tlssocket_open_destruct.cpp +++ b/TESTS/netsocket/tls/tlssocket_open_destruct.cpp @@ -35,7 +35,7 @@ void TLSSOCKET_OPEN_DESTRUCT() } #endif - for (int i = 0; i < 1000; i++) { + for (int i = 0; i < 100; i++) { TLSSocket *sock = new TLSSocket; if (!sock) { TEST_FAIL(); diff --git a/TESTS/netsocket/tls/tlssocket_recv_timeout.cpp b/TESTS/netsocket/tls/tlssocket_recv_timeout.cpp index 277d2c094ff..d09584a7052 100644 --- a/TESTS/netsocket/tls/tlssocket_recv_timeout.cpp +++ b/TESTS/netsocket/tls/tlssocket_recv_timeout.cpp @@ -69,7 +69,6 @@ void TLSSOCKET_RECV_TIMEOUT() 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); diff --git a/TESTS/netsocket/tls/tlssocket_send_repeat.cpp b/TESTS/netsocket/tls/tlssocket_send_repeat.cpp index 9b5d465de14..3b051947f69 100644 --- a/TESTS/netsocket/tls/tlssocket_send_repeat.cpp +++ b/TESTS/netsocket/tls/tlssocket_send_repeat.cpp @@ -34,7 +34,7 @@ void TLSSOCKET_SEND_REPEAT() int snd; Timer timer; static const char tx_buffer[] = {'h', 'e', 'l', 'l', 'o'}; - for (int i = 0; i < 1000; i++) { + for (int i = 0; i < 100; i++) { snd = sock.send(tx_buffer, sizeof(tx_buffer)); if (snd != sizeof(tx_buffer)) { TEST_FAIL(); diff --git a/TESTS/netsocket/udp/main.cpp b/TESTS/netsocket/udp/main.cpp index 9f9b7e950ae..0057aed55f3 100644 --- a/TESTS/netsocket/udp/main.cpp +++ b/TESTS/netsocket/udp/main.cpp @@ -33,10 +33,26 @@ 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 udp_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT]; #endif +void drop_bad_packets(UDPSocket &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(); @@ -51,17 +67,14 @@ static void _ifdown() 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) @@ -71,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() { @@ -81,20 +99,20 @@ 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", UDPSOCKET_ECHOTEST), - 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), @@ -110,10 +128,11 @@ Case cases[] = { 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), + 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 b740ada2986..f06817bdee9 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,19 @@ 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 { +#ifdef MBED_GREENTEA_TEST_UDPSOCKET_TIMEOUT_S +static const int TESTS_TIMEOUT = MBED_GREENTEA_TEST_UDPSOCKET_TIMEOUT_S; +#else +static const int TESTS_TIMEOUT = 480; +#endif +} + /* * Test cases */ diff --git a/TESTS/netsocket/udp/udpsocket_bind_address_invalid.cpp b/TESTS/netsocket/udp/udpsocket_bind_address_invalid.cpp index e0cee8a3608..44b07176852 100644 --- a/TESTS/netsocket/udp/udpsocket_bind_address_invalid.cpp +++ b/TESTS/netsocket/udp/udpsocket_bind_address_invalid.cpp @@ -38,7 +38,16 @@ void UDPSOCKET_BIND_ADDRESS_INVALID() TEST_FAIL(); } TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance())); - nsapi_error_t bind_result = sock->bind("190.2.3.4", 1024); + + 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 { diff --git a/TESTS/netsocket/udp/udpsocket_bind_wrong_type.cpp b/TESTS/netsocket/udp/udpsocket_bind_wrong_type.cpp index 5925af6254d..f6a6e7928bb 100644 --- a/TESTS/netsocket/udp/udpsocket_bind_wrong_type.cpp +++ b/TESTS/netsocket/udp/udpsocket_bind_wrong_type.cpp @@ -39,7 +39,14 @@ void UDPSOCKET_BIND_WRONG_TYPE() } 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 = SocketAddress(addr_bytes, NSAPI_IPv4, 80); + 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"); diff --git a/TESTS/netsocket/udp/udpsocket_echotest.cpp b/TESTS/netsocket/udp/udpsocket_echotest.cpp index ffd3dc75e77..0da5313f348 100644 --- a/TESTS/netsocket/udp/udpsocket_echotest.cpp +++ b/TESTS/netsocket/udp/udpsocket_echotest.cpp @@ -17,6 +17,7 @@ #include "mbed.h" #include "UDPSocket.h" +#include "EventFlags.h" #include "greentea-client/test_env.h" #include "unity/unity.h" #include "utest.h" @@ -25,7 +26,8 @@ using namespace utest::v1; namespace { -static const int SIGNAL_SIGIO = 0x1; +static const int SIGNAL_SIGIO_RX = 0x1; +static const int SIGNAL_SIGIO_TX = 0x2; static const int SIGIO_TIMEOUT = 5000; //[ms] static const int WAIT2RECV_TIMEOUT = 1000; //[ms] static const int RETRIES = 2; @@ -35,6 +37,7 @@ static const double TOLERATED_LOSS_RATIO = 0.3; UDPSocket sock; Semaphore tx_sem(0, 1); +EventFlags signals; static const int BUFF_SIZE = 1200; char rx_buffer[BUFF_SIZE] = {0}; @@ -45,11 +48,13 @@ 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) +static void _sigio_handler() { - osSignalSet(id, SIGNAL_SIGIO); + signals.set(SIGNAL_SIGIO_RX | SIGNAL_SIGIO_TX); } void UDPSOCKET_ECHOTEST() @@ -106,7 +111,10 @@ 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) { - wait_ms(WAIT2RECV_TIMEOUT); + if (tc_exec_time.read() >= time_allotted) { + break; + } + signals.wait_all(SIGNAL_SIGIO_RX, WAIT2RECV_TIMEOUT); --retry_cnt; continue; } else if (recvd < 0) { @@ -118,7 +126,7 @@ void udpsocket_echotest_nonblock_receiver(void *receive_bytes) } } - 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(); } @@ -132,6 +140,8 @@ 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; NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &udp_addr); @@ -139,7 +149,7 @@ void UDPSOCKET_ECHOTEST_NONBLOCK() TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance())); sock.set_blocking(false); - sock.sigio(callback(_sigio_handler, ThisThread::get_id())); + sock.sigio(callback(_sigio_handler)); int sent; int s_idx = 0; @@ -166,7 +176,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_TX, SIGIO_TIMEOUT).status == osEventTimeout) { continue; } --retry_cnt; @@ -209,4 +220,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 209f9597b3f..4e36d638259 100644 --- a/TESTS/netsocket/udp/udpsocket_echotest_burst.cpp +++ b/TESTS/netsocket/udp/udpsocket_echotest_burst.cpp @@ -29,7 +29,7 @@ static const int SIGNAL_SIGIO = 0x1; static const int SIGIO_TIMEOUT = 5000; //[ms] static const int RECV_TIMEOUT = 1; //[s] -static const int BURST_CNT = 100; +static const int BURST_CNT = 20; static const int BURST_PKTS = 5; static const int PKG_SIZES[BURST_PKTS] = {100, 200, 300, 120, 500}; static const int RECV_TOTAL = 1220; @@ -130,7 +130,7 @@ void UDPSOCKET_ECHOTEST_BURST() ok_bursts++; } else { drop_bad_packets(sock, TIMEOUT); - printf("[%02d] burst failure\n", i); + printf("[%02d] burst failure, rcv %d\n", i, bt_total); } } @@ -168,7 +168,12 @@ void UDPSOCKET_ECHOTEST_BURST_NONBLOCK() int bt_total = 0; for (int i = 0; i < BURST_CNT; i++) { for (int x = 0; x < BURST_PKTS; x++) { - TEST_ASSERT_EQUAL(tx_buffers[x].len, sock.sendto(udp_addr, tx_buffers[x].payload, tx_buffers[x].len)); + nsapi_size_or_error_t sent = sock.sendto(udp_addr, tx_buffers[x].payload, tx_buffers[x].len); + if (sent != NSAPI_ERROR_WOULD_BLOCK) { + TEST_ASSERT_EQUAL(tx_buffers[x].len, sent); + } else { + x--; + } } recvd = 0; diff --git a/TESTS/netsocket/udp/udpsocket_open_destruct.cpp b/TESTS/netsocket/udp/udpsocket_open_destruct.cpp index 3042a189e4b..16fb8c4a3c9 100644 --- a/TESTS/netsocket/udp/udpsocket_open_destruct.cpp +++ b/TESTS/netsocket/udp/udpsocket_open_destruct.cpp @@ -33,7 +33,7 @@ void UDPSOCKET_OPEN_DESTRUCT() } #endif - for (int i = 0; i < 1000; i++) { + for (int i = 0; i < 100; i++) { UDPSocket *sock = new UDPSocket; if (!sock) { TEST_FAIL(); diff --git a/TESTS/netsocket/udp/udpsocket_recv_timeout.cpp b/TESTS/netsocket/udp/udpsocket_recv_timeout.cpp index 3592d307ce9..6db0e22b828 100644 --- a/TESTS/netsocket/udp/udpsocket_recv_timeout.cpp +++ b/TESTS/netsocket/udp/udpsocket_recv_timeout.cpp @@ -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_timeout.cpp b/TESTS/netsocket/udp/udpsocket_sendto_timeout.cpp index d229cf7837a..83ec89e3b2a 100644 --- a/TESTS/netsocket/udp/udpsocket_sendto_timeout.cpp +++ b/TESTS/netsocket/udp/udpsocket_sendto_timeout.cpp @@ -41,8 +41,7 @@ void UDPSOCKET_SENDTO_TIMEOUT() int 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); - + printf("MBED: Time taken: %fs\n", timer.read()); sock.set_timeout(1000); timer.reset(); @@ -50,7 +49,6 @@ void UDPSOCKET_SENDTO_TIMEOUT() sent = sock.sendto(udp_addr, tx_buffer, sizeof(tx_buffer)); timer.stop(); TEST_ASSERT_EQUAL(sizeof(tx_buffer), sent); - 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/README.md b/TESTS/network/emac/README.md index 0a63709bb8b..3bcab0f042d 100644 --- a/TESTS/network/emac/README.md +++ b/TESTS/network/emac/README.md @@ -8,7 +8,7 @@ To configure a device to be a CTP echo server, you need to enable the `echo-serv ## Other configuration options -Targets with connectivity set the target.network-default-interface-type configuration variable appropriately, either to their only interface or their most-commonly-used one. For targets that provide more than one type of connectivity, you may choose the default by overriding the target.network-default-interface-type configuration variable. +Targets with connectivity set the `target.network-default-interface-type` configuration variable appropriately, either to their only interface or their most commonly used one. For targets that provide more than one type of connectivity, you may choose the default by overriding the `target.network-default-interface-type` configuration variable. For Ethernet, if you want to overrride the default, set the `json` configuration to: @@ -21,7 +21,7 @@ For Ethernet, if you want to overrride the default, set the `json` configuration } ``` -For Wi-Fi set the `json` configuration to: +For Wi-Fi, set the `json` configuration to: ``` "target_overrides": { @@ -35,7 +35,24 @@ For Wi-Fi set the `json` configuration to: } ``` -For Wi-Fi you also need to configure Wi-Fi SSID and security options to the configuration file. +For Wi-Fi, you also need to configure Wi-Fi SSID and security options to the configuration file. + + +Test case priorities +-------------------- + +Please refer to the following table for priorities of test cases. Priorities are labeled as MUST and SHOULD. MUST means this is a requirement and therefore mandatory to pass the test. SHOULD means it is recommended to pass the test if the driver implements the feature in question. + +| | Test case | Priority | +|-----|-----------------------------------------|----------| +| 1 | EMAC initialize | MUST | +| 2 | EMAC broadcast | MUST | +| 3 | EMAC unicast | MUST | +| 4 | EMAC unicast frame length | MUST | +| 5 | EMAC unicast burst | MUST | +| 6 | EMAC unicast long | MUST | +| 7 | EMAC multicast filter | MUST | +| 8 | EMAC memory | MUST | ## Example commands @@ -107,90 +124,174 @@ To verify whether the echo server is receiving CTP Ethernet frames, enable `echo ### EMAC initialize -The test case initializes the EMAC driver and the test network stack. +**Description:** -The EMAC test environment uses the test network stack as the default stack. To enable the stack, set the `nsapi.default-stack` option in the `json` file of the test environment application to value `TEST`. +The test case initializes and connects the EMAC driver and the test network stack. -The test network stack is a bare minimum implementation and has the functionality needed to set up the network interface. The test network stack is defined in the `emac_TestNetworkStack.h` and `emac_TestNetworkStack.cpp` files. The stack uses the test memory manager for the EMAC. The test memory manager is defined in the `emac_TestMemoryManager.h` and `emac_TestMemoryManager.cpp` files. Message buffers sent to the EMAC in `link_out()` are allocated from the buffer pool of the test memory manager. The test memory manager pool allocation unit (buffer size) is 610 bytes. +**Precondition:** -The initialization test constructs the network interface and connects to it. The test network stack and the EMAC are bound to the network interface using `get_default_instance()` calls to the stack and to the EMAC. +The device is ready to be connected. (The ethernet cable is plugged in, or a Wi-Fi base station is available). -After the construction, the network interface is connected. A connect call triggers a set up call to the test network stack. The set up call triggers a call to `emac_if_init()` function in the EMAC initialization test case. +**Test steps:** -The `emac_if_init()` function of the test case configures and powers up the EMAC. +1. Constructs the network interface. +2. Connects the network interface. -The configuration steps are: +**Expected result:** -* Setting the test memory manager for the EMAC. -* Setting the EMAC link input and state callbacks to call the test environment input and state callback handlers. -* Reading and setting the Ethernet MAC address. +The network interface is connected. ### EMAC broadcast -1. Sends three CTP broadcast messages (100 bytes each) -2. Waits for three seconds -3. Sends three CTP broadcast messages (60 bytes each). -4. Listens for the CTP echo server responses. -5. Stores the addresses of the echo servers if replies are received. +**Description:** + +The test case tests basic broadcast functionality and resolves CTP echo server MAC address. + +**Precondition:** + +The network interface is connected. -The test case passes if there are no responses from the echo server, but further test cases are skipped. +**Test steps:** + +1. Sends three CTP broadcast messages (100 bytes each). +2. Waits for three seconds. +3. Sends three CTP broadcast messages (60 bytes each). +4. Listens for the CTP echo server responses. +5. Stores the addresses of the echo servers if replies are received. + +**Expected result:** + +The echo server replies to broadcast messages. For each sent broadcast message, a reply waits for three seconds. If the reply is not received, the reply is sent six more times before the test fails. ### EMAC unicast -1. Sends three CTP unicast messages (100 bytes each) to the CTP echo server. -2. Verifies that all are replied. +**Description:** + +The test case tests basic unicast functionality, and the CTP echo server replies to unicast messages. + +**Precondition:** + +The network interface is connected. + +**Test steps:** + +1. Sends three CTP unicast messages (100 bytes each) to the CTP echo server. +2. Verifies all replies. + +**Expected result:** + +The echo server replies to unicast messages. For each sent unicast message, a reply waits for three seconds. If the reply is not received, it is sent five more times before the test fails. ### EMAC unicast frame length - -1. Sends CTP unicast messages with Ethernet message length from 100 bytes to the maximum defined by the MTU of the EMAC with 50 bytes increments. -2. Verifies that all are replied. + +**Description:** + +The test case tests Ethernet frame lengths. + +**Preconditions:** + +The network interface is connected. + +**Test steps:** + +1. Sends CTP unicast messages with Ethernet message length from 100 bytes to the maximum defined by the MTU of the EMAC with 50-byte increments. +2. Verifies all replies. + +**Expected result:** + +The echo server replies to messages that are sent to it. For each sent unicast message, a reply waits for 500ms. If the reply is not received, it is sendt again five more times before the test fails. ### EMAC unicast burst - -1. Sends CTP unicast messages with Ethernet message length from 100 bytes to the maximum defined by the MTU of the EMAC with 50 bytes increments. -2. Repeats the sending 10 times. -3. Verifies that all are replied. + +**Description:** + +The test case tests Ethernet echoing at full speed. + +**Precondition:** + +The network interface is connected. + +**Test steps:** + +1. Sends CTP unicast messages with Ethernet message length from 100 bytes to the maximum defined by the MTU of the EMAC with 50-byte increments. +2. Repeats the sending 10 times. +3. Verifies all replies. + +**Expected result:** + +The echo server replies to messages that are sent to it. For each sent unicast message, a reply waits for five seconds. If the reply is not received, it is sent again five more times before the test fails. ### EMAC unicast long - -1. Sends CTP unicast messages with random Ethernet message length. -2. Repeats the sending 50000 times. -3. Verifies that all are replied. + +**Description:** + +Test case tests Ethernet echoing at full speed for an extended time. + +**Preconditions:** + +The network interface is connected. + +**Test steps:** + +1. Sends CTP unicast messages with random Ethernet message length. +2. Repeats the sending 50,000 times. +3. Verifies all replies. + +**Expected result:** + +The echo server replies to messages that are sent to it. For each sent unicast message, a reply waits for 350ms. If the reply is not received, it is sent five more times before the test fails. ### EMAC multicast filter - -Tests multicast filtering. Multicast filtering is an optional feature for the EMAC. The test does not fail if filtering is not implemented. -The multicast testing requests the CTP echo server to forward the CTP messages to a specified multicast address as the destination address. +**Description:** + +The test case tests multicast filtering. Multicast filtering is an optional feature for the EMAC. The test does not fail if filtering is not implemented. + +**Precondition:** + +The network interface is connected. -Test steps: +**Test steps:** -1. Using unicast, verify that the echo server responses are received. -2. Set the IPv6 multicast filter address and the echo server reply (forward) address to different values. Check if the echo response is filtered. -3. Set the IPv6 multicast filter address and the echo server reply address to same value. Check that the response is not filtered. -4. Set the IPv4 multicast filter address and the echo server reply address to different values. Check if the response is filtered. -5. Set the IPv4 multicast filter address and the echo server reply address to same value. Check that the response is not filtered. -6. Enable the receiving of all multicasts. Check that the response is not filtered. +1. Using unicast, verify that the echo server responses are received. +2. Set the IPv6 multicast filter address and the echo server reply (forward) address to different values. Check if the echo response is filtered. +3. Set the IPv6 multicast filter address and the echo server reply address to same value. Check that the response is not filtered. +4. Set the IPv4 multicast filter address and the echo server reply address to different values. Check if the response is filtered. +5. Set the IPv4 multicast filter address and the echo server reply address to same value. Check that the response is not filtered. +6. Enable the receiving of all multicasts. Check that the response is not filtered. + +**Expected result:** + +The echo server replies are received as expected by the test step. Supporting of the filtering will affect what messages are received. ### EMAC memory -Tests memory manager out-of-memory situations. The test case configures the test memory manager to reject memory buffer allocations made by the EMAC. Memory buffer allocations are divided into output and input memory allocations: +**Description:** + +The test case tests memory manager out-of-memory situations. The test case configures the test memory manager to reject memory buffer allocations made by the EMAC. Memory buffer allocations are divided into output and input memory allocations: -* The output memory allocations are the ones made by the EMAC in the `link_out()` function called by the network stack (test case). -* The input memory allocations are other memory allocations made by the EMAC. +- The output memory allocations are the ones made by the EMAC in the ``\`link\_out()\`` function called by the network stack (test case). +- The input memory allocations are other memory allocations made by the EMAC. Depending on the EMAC implementation, it may or may not allocate memory manager buffers in the link output function. If the memory manager buffers are not allocated, disabling the link output memory allocations in the test does not affect the functionality. -In each test step, the test case sends CTP unicast messages with Ethernet message length from 100 bytes to the maximum defined by the MTU of the EMAC with 50 bytes increments. Memory buffers sent to the EMAC in the `link_out()` function are forced to be non-aligned in this test case. +In each test step, the test case sends CTP unicast messages with Ethernet message length from 100 bytes to the maximum defined by the MTU of the EMAC with 50-byte increments. Memory buffers sent to the EMAC in the ``\`link\_out()\`` function are forced to be nonaligned in this test case. + +**Precondition:** + +The network interface is connected. + +**Test steps:** -Test steps: +1. Memory buffer allocations are allowed. Verify that echo server responses are received. +2. Disable input memory buffer allocations. The echo server responses should not be received. +3. Allow memory buffer allocations. Verify that the echo server responses are received. +4. Disable output memory buffer allocations. The echo server responses may or may not be received depending on the EMAC link out implementation. +5. Allow memory buffer allocations. Verify that the echo server responses are received. +6. Disable input and output memory buffer allocations. The echo server responses should not be received. +7. Allow memory buffer allocations. Verify that the echo server responses are received. +8. Allocate memory buffers that are sent to the EMAC in link out from the heap (contiguous memory). Verify that the echo server responses are received. -1. Memory buffer allocations are allowed. Verify that echo server responses are received. -2. Disable input memory buffer allocations. The echo server responses should not be received. -3. Allow memory buffer allocations. Verify that the echo server responses are received. -4. Disable output memory buffer allocations. The echo server responses may or may not be received depending on the EMAC link out implementation. -5. Allow memory buffer allocations. Verify that the echo server responses are received. -6. Disable input and output memory buffer allocations. The echo server responses should not be received. -7. Allow memory buffer allocations. Verify that the echo server responses are received. -8. Allocate memory buffers that are sent to the EMAC in link out from the heap (contiguous memory). Verify that the echo server responses are received. +**Expected result:** +The echo server replies to messages that are sent to it based on whether the driver can allocate memory for the frame or not. For each sent unicast message, a reply waits for 500ms. If the reply is not received, it is sent another three times. If the test expects that memory should be available and sending fails three times, the test fails. diff --git a/TESTS/network/emac/main.cpp b/TESTS/network/emac/main.cpp index 49ee3cf909a..ffe7343d245 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 @@ -53,8 +54,13 @@ using namespace utest::v1; utest::v1::status_t test_setup(const size_t number_of_cases) { #if !MBED_CONF_APP_ECHO_SERVER +#ifdef MBED_GREENTEA_TEST_EMAC_TIMEOUT_S + GREENTEA_SETUP(MBED_GREENTEA_TEST_EMAC_TIMEOUT_S, "default_auto"); +#else GREENTEA_SETUP(1400, "default_auto"); -#endif +#endif // #ifdef MBED_GREENTEA_TEST_EMAC_TIMEOUT_S +#endif // #if !MBED_CONF_APP_ECHO_SERVER + return verbose_test_setup_handler(number_of_cases); } diff --git a/TESTS/network/interface/README.md b/TESTS/network/interface/README.md new file mode 100644 index 00000000000..90e912dfda4 --- /dev/null +++ b/TESTS/network/interface/README.md @@ -0,0 +1,164 @@ +Network interface test plan +======================== + +Target API +---------- + +The goal of this plan is to test [NetworkInterface.h](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/NetworkInterface.h) + +Tools needed +---------------- + +- Mbed OS. +- Standard Mbed OS development tools as described in the [Arm Mbed tools overview](https://os.mbed.com/docs/latest/tools/index.html). + +Test environment +---------------- + +[Greentea](https://os.mbed.com/docs/mbed-os/latest/tools/greentea-testing-applications.html). + +Test case priorities +-------------------- + +Please refer to the following table for priorities of test cases. Priorities +are labeled as MUST and SHOULD. MUST means this is a requirement and +therefore mandatory to pass the test. SHOULD means it is recommended to +pass the test if the driver implements the feature in question. + +| | Test case | Priority | +|-----|-----------------------------------------|----------| +| 1 | NETWORKINTERFACE_CONN_DISC_REPEAT | MUST | +| 2 | NETWORKINTERFACE_STATUS | MUST | +| 3 | NETWORKINTERFACE_STATUS_NONBLOCK | MUST | +| 4 | NETWORKINTERFACE_STATUS_GET | MUST | + +Building test binaries +---------------------- + +For testing the board and driver, test against the Mbed OS +master branch to get the most recent, up-to-date test cases and drivers. + +To create a build environment: + +```.sh +mbed new network_interface_test +cd network_interface_test +cd mbed-os +git checkout master +cd .. +``` + +Now build test binaries: + +```.sh +mbed test --compile -t -m -n mbed-os-tests-network-interface +``` + +Running tests +------------- + +When device is connected to network, or if a wireless device is near +the access point: + +```.sh +mbed test -n mbed-os-tests-network-interface +``` + +Test cases for NetworkInterface class +------------------------------------- + +### NETWORKINTERFACE_CONN_DISC_REPEAT + +**Description:** + +Test `NetworkInterface::connect()` and `NetworkInterface::disconnect()` + +**Precondition:** + +Network interface is initialized. + +**Test steps:** + +1. Connect interface. +2. Disconnect interface. +3. Repeat connect and disconnect steps 1 to 2 four times. + +**Expected result:** + +`Connect()` and `disconnect()` calls return `NSAPI_ERROR_OK`. + +### NETWORKINTERFACE_STATUS + +**Description:** + +Test `NetworkInterface::attach()` and status indications. + +**Preconditions:** + +1. Network interface is initialized. +2. Status callback is attached to the network interface. +3. Network interface is on blocking mode. + +**Test steps:** + +1. Connect interface. +2. Check that interface indicates status `NSAPI_STATUS_CONNECTING`. +3. Optional: Check that interface indicates status `NSAPI_STATUS_LOCAL_UP` (whether this is indicated depends on network interface type). +4. Check that interface indicates status `NSAPI_STATUS_GLOBAL_UP`. +5. Disconnect interface. +6. Check that interface indicates status `NSAPI_STATUS_DISCONNECTED`. +7. Repeat connect and disconnect steps 1 to 6 four times. + +**Expected result:** + +Callback statuses are correct. `Connect()` and `disconnect()` calls return `NSAPI_ERROR_OK`. Note: The network interface may indicate the same status several times in a row, depending on the network interface type. This will not fail the test. + +### NETWORKINTERFACE_STATUS_NONBLOCK + +**Description:** + +Test `NetworkInterface::attach()` and status indications on nonblocking mode. + +**Preconditions:** + +1. Network interface is initialized. +2. Status callback is attached to the network interface. +3. Network interface is on nonblocking mode. + +**Test steps:** + +1. Connect interface. +2. Check that interface indicates status `NSAPI_STATUS_CONNECTING`. +3. Optional: Check that interface indicates status `NSAPI_STATUS_LOCAL_UP` (whether this is indicated depends on network interface type). +4. Check that interface indicates status `NSAPI_STATUS_GLOBAL_UP`. +5. Disconnect interface. +6. Check that interface indicates status `NSAPI_STATUS_DISCONNECTED`. +7. Repeat connect and disconnect steps 1 to 6 four times. + +**Expected result:** + +Callback statuses are correct. `Connect()` and `disconnect()` calls return `NSAPI_ERROR_OK`. Note: The network interface may indicate the same status several times in a row, depending on the network interface type. This will not fail the test. + +### NETWORKINTERFACE_STATUS_GET + +**Description:** + +Test `NetworkInterface::get_connection_status()`. + +**Preconditions:** + +1. Network interface is initialized. +2. Network interface is on blocking mode. + +**Test steps:** + +1. Check that `get_connection_status()` returns status `NSAPI_STATUS_DISCONNECTED`. +2. Connect interface. +3. Poll the `get_connection_status()` until it returns status `NSAPI_STATUS_GLOBAL_UP`. +4. Disconnect interface. +5. Check that `get_connection_status()` returns status `NSAPI_STATUS_DISCONNECTED`. +6. Repeat connect and disconnect steps 2 to 5 four times. + +**Expected result:** + +`Connect()` and `disconnect()` calls return `NSAPI_ERROR_OK`. The right status is returned by `get_connection_status()`. diff --git a/TESTS/network/interface/main.cpp b/TESTS/network/interface/main.cpp index 05e07914f4b..48d3f734e36 100644 --- a/TESTS/network/interface/main.cpp +++ b/TESTS/network/interface/main.cpp @@ -33,7 +33,11 @@ using namespace utest::v1; // Test setup utest::v1::status_t test_setup(const size_t number_of_cases) { +#ifdef MBED_GREENTEA_TEST_INTERFACE_TIMEOUT_S + GREENTEA_SETUP(MBED_GREENTEA_TEST_INTERFACE_TIMEOUT_S, "default_auto"); +#else GREENTEA_SETUP(480, "default_auto"); +#endif return verbose_test_setup_handler(number_of_cases); } 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/l3ip/cellular_driver_l3ip.cpp b/TESTS/network/l3ip/cellular_driver_l3ip.cpp new file mode 100644 index 00000000000..c8eee25a7ca --- /dev/null +++ b/TESTS/network/l3ip/cellular_driver_l3ip.cpp @@ -0,0 +1,121 @@ +/* + * 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. + */ + + +#include "mbed_interface.h" +#include "netsocket/nsapi_types.h" +#include "cellular_driver_l3ip.h" + +Cellular_driver_L3IP::Cellular_driver_L3IP() +{ +} + + +bool Cellular_driver_L3IP::link_out(net_stack_mem_buf_t *buf) +{ + + return true; +} + + +bool Cellular_driver_L3IP::power_up() +{ + + return true; +} + +uint32_t Cellular_driver_L3IP::get_mtu_size() const +{ + return 0; +} + +uint32_t Cellular_driver_L3IP::get_align_preference() const +{ + return 0; +} + +void Cellular_driver_L3IP::get_ifname(char *name, uint8_t size) const +{ + +} + + + +void Cellular_driver_L3IP::set_link_input_cb(l3ip_link_input_cb_t input_cb) +{ + l3ip_link_input_cb = input_cb; +} + +void Cellular_driver_L3IP::set_link_state_cb(l3ip_link_state_change_cb_t state_cb) +{ + l3ip_link_state_cb = state_cb; +} + +void Cellular_driver_L3IP::add_ipv4_multicast_group(const char *address) +{ + +} + +void Cellular_driver_L3IP::add_ipv6_multicast_group(const char *address) +{ + +} + +void Cellular_driver_L3IP::remove_ipv4_multicast_group(const char *address) +{ + +} + +void Cellular_driver_L3IP::remove_ipv6_multicast_group(const char *address) +{ + +} + +void Cellular_driver_L3IP::set_all_multicast(bool all) +{ + +} + +void Cellular_driver_L3IP::power_down() +{ + +} + +void Cellular_driver_L3IP::set_memory_manager(NetStackMemoryManager &mem_mngr) +{ + memory_manager = &mem_mngr; +} + + +Cellular_driver_L3IP &Cellular_driver_L3IP::get_instance() +{ + static Cellular_driver_L3IP l3ip_test_driver; + return l3ip_test_driver; +} + +// Weak so a module can override +MBED_WEAK L3IP &L3IP::get_default_instance() +{ + return Cellular_driver_L3IP::get_instance(); +} + +/** + * @} + */ + +/* --------------------------------- End Of File ------------------------------ */ + diff --git a/TESTS/network/l3ip/cellular_driver_l3ip.h b/TESTS/network/l3ip/cellular_driver_l3ip.h new file mode 100644 index 00000000000..1772416c44c --- /dev/null +++ b/TESTS/network/l3ip/cellular_driver_l3ip.h @@ -0,0 +1,135 @@ +/* + * 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. + */ + +#ifndef CELLULAR_DRIVER_L3IP_H_ +#define CELLULAR_DRIVER_L3IP_H_ + +#include "L3IP.h" + + +class Cellular_driver_L3IP : public L3IP { +public: + Cellular_driver_L3IP(); + + static Cellular_driver_L3IP &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 cellular device. + * @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 characters to copy + */ + virtual void get_ifname(char *name, uint8_t size) const; + + /** + * Sends the packet over the link + * + * That cannot be called from an interrupt context. + * + * @param buf Packet to be sent + * @return True if the packet was sent, false otherwise + */ + virtual bool link_out(net_stack_mem_buf_t *buf); + + /** + * Initializes the hardware + * + * @return True on success, False in case of an error. + */ + virtual bool power_up(); + + /** + * Deinitializes the hardware + * + */ + 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(l3ip_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(l3ip_link_state_change_cb_t state_cb); + + /** Add device to an IP4 multicast group + * + * @param address an IP4 multicast group address + */ + virtual void add_ipv4_multicast_group(const char *address); + + /** Add device to an IP6 multicast group + * + * @param address an IP6 multicast group address + */ + virtual void add_ipv6_multicast_group(const char *address); + + /** Remove device from an IPV4 multicast group + * + * @param address An IPV4 multicast group address + */ + virtual void remove_ipv4_multicast_group(const char *address); + + /** Remove device from an IPV6 multicast group + * + * @param address An IPV6 multicast group address + */ + virtual void remove_ipv6_multicast_group(const char *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(NetStackMemoryManager &mem_mngr); + +private: + + l3ip_link_input_cb_t l3ip_link_input_cb; /**< Callback for incoming data */ + l3ip_link_state_change_cb_t l3ip_link_state_cb; /**< Link state change callback */ + NetStackMemoryManager *memory_manager; /**< Memory manager */ + +}; + +#endif /* CELLULAR_DRIVER_L3IP_H_ */ diff --git a/TESTS/network/l3ip/main.cpp b/TESTS/network/l3ip/main.cpp new file mode 100644 index 00000000000..eb43b64fd4c --- /dev/null +++ b/TESTS/network/l3ip/main.cpp @@ -0,0 +1,84 @@ +/* + * 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 "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "utest/utest_stack_trace.h" +#include "L3IPInterface.h" + +using namespace utest::v1; + +namespace { +NetworkInterface *l3interface; +} + +void L3IP_START() +{ + printf("MBED: L3IP_START\n"); +} + +void L3IP_STOP() +{ + printf("MBED: L3IP_STOP\n"); +} + + +static void _ifup() +{ + printf("MBED: ifdown\n"); +} + +static void _ifdown() +{ + printf("MBED: ifdown\n"); +} + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE +int fetch_stats() +{ + return SocketStats::mbed_stats_socket_get_each(&udp_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(480, "default_auto"); + _ifup(); + return greentea_test_setup_handler(number_of_cases); +} + +void greentea_teardown(const size_t passed, const size_t failed, const failure_t failure) +{ + _ifdown(); + return greentea_test_teardown_handler(passed, failed, failure); +} + +Case cases[] = { + Case("L3IP_START", L3IP_START), + Case("L3IP_STOP", L3IP_STOP), +}; + +Specification specification(greentea_setup, cases, greentea_teardown, greentea_continue_handlers); + +int main() +{ + return !Harness::run(specification); +} diff --git a/TESTS/network/multihoming/main.cpp b/TESTS/network/multihoming/main.cpp new file mode 100644 index 00000000000..ec38220e7fd --- /dev/null +++ b/TESTS/network/multihoming/main.cpp @@ -0,0 +1,156 @@ +/* + * 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 "multihoming_tests.h" + +using namespace utest::v1; + +namespace { +NetworkInterface *net; +} + +char interface_name[MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM][INTERFACE_NAME_LEN]; +int interface_num = 0; + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE +mbed_stats_socket_t udp_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT]; +#endif + +#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) || defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) +#define SSID_MAX_LEN 32 +#define PWD_MAX_LEN 64 + +WiFiInterface *wifi; +#endif + +NetworkInterface *get_interface() +{ + return net; +} + +static void _ifup() +{ + +#if DEVICE_EMAC + net = EthInterface::get_default_instance(); + nsapi_error_t err = net->connect(); + net->get_interface_name(interface_name[0]); + interface_num++; + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err); + printf("MBED: IP address is '%s' interface name %s\n", net->get_ip_address(), interface_name[0]); +#endif +#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) || defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) + wifi = WiFiInterface::get_default_instance(); + + if (wifi) { +#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) + char ssid[SSID_MAX_LEN + 1] = MBED_CONF_APP_WIFI_SECURE_SSID; + char pwd[PWD_MAX_LEN + 1] = MBED_CONF_APP_WIFI_PASSWORD; + nsapi_security_t security = NSAPI_SECURITY_WPA_WPA2; + +#elif defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) + char ssid[SSID_MAX_LEN + 1] = MBED_CONF_APP_WIFI_UNSECURE_SSID; + char pwd[PWD_MAX_LEN + 1] = NULL; + nsapi_security_t security = NSAPI_SECURITY_NONE; +#endif + + printf("\nConnecting to %s...\n", ssid); + int ret = wifi->connect(ssid, pwd, security); + if (ret != 0) { + TEST_FAIL_MESSAGE("Wifi connection error!"); + return; + } + wifi->get_interface_name(interface_name[1]); + interface_num++; + printf("MAC: %s\n", wifi->get_mac_address()); + printf("IP: %s\n", wifi->get_ip_address()); + printf("Netmask: %s\n", wifi->get_netmask()); + printf("Gateway: %s\n", wifi->get_gateway()); + printf("RSSI: %d\n\n", wifi->get_rssi()); + printf("Wifi interface name: %s\n\n", interface_name[1]); + + } else { + TEST_FAIL_MESSAGE("ERROR: No WiFiInterface found!"); + } +#endif +} + +static void _ifdown() +{ + interface_num = 0; + net->disconnect(); +#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) || defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) + wifi->disconnect(); +#endif + printf("MBED: ifdown\n"); +} + +void fill_tx_buffer_ascii(char *buff, size_t len) +{ + for (size_t i = 0; i < len; ++i) { + buff[i] = (rand() % 43) + '0'; + } +} + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE +int fetch_stats() +{ + return SocketStats::mbed_stats_socket_get_each(&udp_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(480, "default_auto"); + _ifup(); + return greentea_test_setup_handler(number_of_cases); +} + +void greentea_teardown(const size_t passed, const size_t failed, const failure_t failure) +{ + _ifdown(); + return greentea_test_teardown_handler(passed, failed, failure); +} + +Case cases[] = { + Case("MULTIHOMING_SYNCHRONOUS_DNS", MULTIHOMING_SYNCHRONOUS_DNS), + Case("MULTIHOMING_ASYNCHRONOUS_DNS", MULTIHOMING_ASYNCHRONOUS_DNS), + Case("MULTIHOMING_UDPSOCKET_ECHOTEST", MULTIHOMING_UDPSOCKET_ECHOTEST), + Case("MULTIHOMING_UDPSOCKET_ECHOTEST_NONBLOCK", MULTIHOMING_UDPSOCKET_ECHOTEST_NONBLOCK), +}; + +Specification specification(greentea_setup, cases, greentea_teardown, greentea_continue_handlers); + +int main() +{ + return !Harness::run(specification); +} diff --git a/TESTS/network/multihoming/multihoming_asynchronous_dns.cpp b/TESTS/network/multihoming/multihoming_asynchronous_dns.cpp new file mode 100644 index 00000000000..1df72db6e3c --- /dev/null +++ b/TESTS/network/multihoming/multihoming_asynchronous_dns.cpp @@ -0,0 +1,91 @@ +/* + * 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 "greentea-client/test_env.h" +#include "unity.h" +#include "utest.h" +#include "multihoming_tests.h" + +using namespace utest::v1; + +namespace { +int result_ok; +int result_no_mem; +int result_dns_failure; +int result_exp_timeout; +} + + + + +// Callback used for asynchronous DNS result +void hostbyname_cb(void *data, nsapi_error_t result, SocketAddress *address) +{ + dns_application_data *app_data = static_cast(data); + app_data->result = result; + if (address) { + app_data->addr = *address; + } + app_data->semaphore->release(); + app_data->value_set = true; +} + +void MULTIHOMING_ASYNCHRONOUS_DNS() +{ + rtos::Semaphore semaphore; + dns_application_data data; + data.semaphore = &semaphore; + + + + for (unsigned int i = 0; i < MBED_CONF_APP_DNS_TEST_HOSTS_NUM; i++) { + + for (unsigned int j = 0; j < interface_num; j++) { + + nsapi_error_t err = get_interface()->gethostbyname_async(dns_test_hosts[i], + mbed::Callback(hostbyname_cb, (void *) &data), NSAPI_UNSPEC, interface_name[j]); + TEST_ASSERT(err >= 0); + + semaphore.wait(); + + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, data.result); + printf("DNS: query interface_name %s %d \n", interface_name[j], j); + if (data.result == NSAPI_ERROR_OK) { + result_ok++; + printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], data.addr.get_ip_address()); + } else if (data.result == NSAPI_ERROR_DNS_FAILURE) { + result_dns_failure++; + printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]); + } else if (data.result == NSAPI_ERROR_TIMEOUT) { + result_exp_timeout++; + printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]); + } else if (data.result == NSAPI_ERROR_NO_MEMORY) { + result_no_mem++; + printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]); + } else { + printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], data.result); + TEST_ASSERT(data.result == NSAPI_ERROR_OK || data.result == NSAPI_ERROR_NO_MEMORY || data.result == NSAPI_ERROR_DNS_FAILURE || data.result == NSAPI_ERROR_TIMEOUT); + } + + } + + + + + } +} diff --git a/TESTS/network/multihoming/multihoming_synchronous_dns.cpp b/TESTS/network/multihoming/multihoming_synchronous_dns.cpp new file mode 100644 index 00000000000..6cdc1bd605e --- /dev/null +++ b/TESTS/network/multihoming/multihoming_synchronous_dns.cpp @@ -0,0 +1,72 @@ +/* + * 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 "greentea-client/test_env.h" +#include "unity.h" +#include "utest.h" +#include "multihoming_tests.h" + +using namespace utest::v1; + + + +namespace { +int result_ok; +int result_no_mem; +int result_dns_failure; +int result_exp_timeout; +} + + + +void MULTIHOMING_SYNCHRONOUS_DNS() +{ + + result_ok = 0; + result_no_mem = 0; + result_dns_failure = 0; + result_exp_timeout = 0; + + for (unsigned int i = 0; i < MBED_CONF_APP_DNS_TEST_HOSTS_NUM; i++) { + SocketAddress address; + for (unsigned int j = 0; j < interface_num; j++) { + + nsapi_error_t err = get_interface()->gethostbyname(dns_test_hosts[i], &address, NSAPI_UNSPEC, interface_name[j]); + printf("DNS: query interface_name %s %d \n", interface_name[j], j); + + if (err == NSAPI_ERROR_OK) { + result_ok++; + printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], address.get_ip_address()); + } else if (err == NSAPI_ERROR_DNS_FAILURE) { + result_dns_failure++; + printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]); + } else if (err == NSAPI_ERROR_TIMEOUT) { + result_exp_timeout++; + printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]); + } else if (err == NSAPI_ERROR_NO_MEMORY) { + result_no_mem++; + printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]); + } else { + printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], err); + TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_NO_MEMORY || err == NSAPI_ERROR_DNS_FAILURE || err == NSAPI_ERROR_TIMEOUT); + } + + + } + } +} diff --git a/TESTS/network/multihoming/multihoming_tests.h b/TESTS/network/multihoming/multihoming_tests.h new file mode 100644 index 00000000000..f8e4b23d99d --- /dev/null +++ b/TESTS/network/multihoming/multihoming_tests.h @@ -0,0 +1,73 @@ +/* + * 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 MULTIHOMING_TESTS_H +#define MULTIHOMING_TESTS_H + +#define DNS_TEST_HOST_LEN 40 +#define INTERFACE_NAME_LEN 6 + +#ifndef MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM +#define MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM 3 +#endif + +#ifndef MBED_CONF_APP_DNS_TEST_HOSTS_NUM +#define MBED_CONF_APP_DNS_TEST_HOSTS_NUM 12 +#endif + +// Hostnames for testing against +// Both lists must have A and AAAA records +#ifndef MBED_CONF_APP_DNS_TEST_HOSTS +#define MBED_CONF_APP_DNS_TEST_HOSTS {"google.com", "youtube.com", "facebook.com", "wikipedia.org", "yahoo.com", "instagram.com", "ipv6ready.org", "wireshark.org", "bbc.co.uk", "cnn.com", "www.flickr.com", "www.mozilla.org"} +#endif + + + + +struct dns_application_data { + rtos::Semaphore *semaphore; + nsapi_error_t result; + SocketAddress addr; + nsapi_error_t req_result; + bool value_set; +}; + + +extern char interface_name[MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM][INTERFACE_NAME_LEN]; +extern int interface_num; + +const char dns_test_hosts[MBED_CONF_APP_DNS_TEST_HOSTS_NUM][DNS_TEST_HOST_LEN] = MBED_CONF_APP_DNS_TEST_HOSTS; + + +NetworkInterface *get_interface(); +void drop_bad_packets(UDPSocket &sock, int orig_timeout); +void fill_tx_buffer_ascii(char *buff, size_t len); + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE +extern mbed_stats_socket_t udp_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT]; +int fetch_stats(void); +#endif + +/* + * Test cases + */ +void MULTIHOMING_SYNCHRONOUS_DNS(); +void MULTIHOMING_ASYNCHRONOUS_DNS(); +void MULTIHOMING_UDPSOCKET_ECHOTEST(); +void MULTIHOMING_UDPSOCKET_ECHOTEST_NONBLOCK(); + +#endif //UDP_TESTS_H diff --git a/TESTS/network/multihoming/multihoming_udpsocket_echotest.cpp b/TESTS/network/multihoming/multihoming_udpsocket_echotest.cpp new file mode 100644 index 00000000000..d3450515141 --- /dev/null +++ b/TESTS/network/multihoming/multihoming_udpsocket_echotest.cpp @@ -0,0 +1,209 @@ +/* + * 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 "UDPSocket.h" +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest.h" +#include "multihoming_tests.h" + +using namespace utest::v1; + +namespace { +static const int SIGNAL_SIGIO = 0x1; +static const int SIGIO_TIMEOUT = 5000; //[ms] +static const int WAIT2RECV_TIMEOUT = 1000; //[ms] +static const int RETRIES = 2; + +static const double EXPECTED_LOSS_RATIO = 0.0; +static const double TOLERATED_LOSS_RATIO = 0.3; + +UDPSocket sock; +Semaphore tx_sem(0, 1); + +static const int BUFF_SIZE = 1200; +char rx_buffer[BUFF_SIZE] = {0}; +char tx_buffer[BUFF_SIZE] = {0}; + +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 + }; +} + +static void _sigio_handler(osThreadId id) +{ + osSignalSet(id, SIGNAL_SIGIO); +} + +void MULTIHOMING_UDPSOCKET_ECHOTEST() +{ + SocketAddress udp_addr; + get_interface()->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())); + + for (unsigned int j = 0; j < interface_num; j++) { + int recvd; + int sent; + int s_idx = 0; + int packets_sent = 0; + int packets_recv = 0; + sock.setsockopt(NSAPI_SOCKET, NSAPI_BIND_TO_DEVICE, interface_name[j], INTERFACE_NAME_LEN); + for (int pkt_s = pkt_sizes[s_idx]; s_idx < PKTS; pkt_s = ++s_idx) { + pkt_s = pkt_sizes[s_idx]; + fill_tx_buffer_ascii(tx_buffer, BUFF_SIZE); + for (int retry_cnt = 0; retry_cnt <= 2; retry_cnt++) { + memset(rx_buffer, 0, BUFF_SIZE); + sent = sock.sendto(udp_addr, tx_buffer, pkt_s); + if (sent > 0) { + packets_sent++; + } + if (sent != pkt_s) { + printf("[Round#%02d - Sender] error, returned %d\n", s_idx, sent); + continue; + } + recvd = sock.recvfrom(NULL, rx_buffer, pkt_s); + if (recvd == pkt_s) { + break; + } + } + if (memcmp(tx_buffer, rx_buffer, pkt_s) == 0) { + packets_recv++; + } + } + // Packet loss up to 30% tolerated + if (packets_sent > 0) { + double loss_ratio = 1 - ((double)packets_recv / (double)packets_sent); + printf("Interface %s, packets sent: %d, packets received %d, loss ratio %.2lf\r\n", interface_name[j], packets_sent, packets_recv, loss_ratio); + TEST_ASSERT_DOUBLE_WITHIN(TOLERATED_LOSS_RATIO, EXPECTED_LOSS_RATIO, loss_ratio); + } + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} + +void udpsocket_echotest_nonblock_receiver(void *receive_bytes) +{ + int expt2recv = *(int *)receive_bytes; + int recvd; + for (int retry_cnt = 0; retry_cnt <= RETRIES; retry_cnt++) { + recvd = sock.recvfrom(NULL, rx_buffer, expt2recv); + if (recvd == NSAPI_ERROR_WOULD_BLOCK) { + wait_ms(WAIT2RECV_TIMEOUT); + --retry_cnt; + continue; + } else if (recvd == expt2recv) { + break; + } + } + + tx_sem.release(); +} + +void MULTIHOMING_UDPSOCKET_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, udp_stats[j].state); + } +#endif + + SocketAddress udp_addr; + get_interface()->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())); + sock.set_blocking(false); + sock.sigio(callback(_sigio_handler, ThisThread::get_id())); + for (unsigned int j = 0; j < interface_num; j++) { + int s_idx = 0; + int packets_sent = 0; + int packets_recv = 0; + int sent; + Thread *thread; + unsigned char *stack_mem = (unsigned char *)malloc(OS_STACK_SIZE); + sock.setsockopt(NSAPI_SOCKET, NSAPI_BIND_TO_DEVICE, interface_name[j], INTERFACE_NAME_LEN); + TEST_ASSERT_NOT_NULL(stack_mem); + + for (int pkt_s = pkt_sizes[s_idx]; s_idx < PKTS; ++s_idx) { + pkt_s = pkt_sizes[s_idx]; + + thread = new Thread(osPriorityNormal, + OS_STACK_SIZE, + stack_mem, + "receiver"); + TEST_ASSERT_EQUAL(osOK, thread->start(callback(udpsocket_echotest_nonblock_receiver, &pkt_s))); + + for (int retry_cnt = 0; retry_cnt <= RETRIES; retry_cnt++) { + fill_tx_buffer_ascii(tx_buffer, pkt_s); + + sent = sock.sendto(udp_addr, tx_buffer, pkt_s); + if (sent > 0) { + packets_sent++; + } + if (sent == NSAPI_ERROR_WOULD_BLOCK) { + if (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) { + continue; + } + --retry_cnt; + } else if (sent != pkt_s) { + printf("[Round#%02d - Sender] error, returned %d\n", s_idx, sent); + continue; + } + if (tx_sem.wait(WAIT2RECV_TIMEOUT * 2) == 0) { // RX might wait up to WAIT2RECV_TIMEOUT before recvfrom + continue; + } + break; + } + thread->join(); + delete thread; + if (memcmp(tx_buffer, rx_buffer, pkt_s) == 0) { + packets_recv++; + } + } + free(stack_mem); + + // Packet loss up to 30% tolerated + if (packets_sent > 0) { + double loss_ratio = 1 - ((double)packets_recv / (double)packets_sent); + printf("Interface %s, Packets sent: %d, packets received %d, loss ratio %.2lf\r\n", interface_name[j], packets_sent, packets_recv, loss_ratio); + TEST_ASSERT_DOUBLE_WITHIN(TOLERATED_LOSS_RATIO, EXPECTED_LOSS_RATIO, loss_ratio); + +#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE + count = fetch_stats(); + for (j = 0; j < count; j++) { + if ((NSAPI_UDP == udp_stats[j].proto) && (SOCK_OPEN == udp_stats[j].state)) { + TEST_ASSERT(udp_stats[j].sent_bytes != 0); + TEST_ASSERT(udp_stats[j].recv_bytes != 0); + break; + } + } + loss_ratio = 1 - ((double)udp_stats[j].recv_bytes / (double)udp_stats[j].sent_bytes); + printf("Bytes sent: %d, bytes received %d, loss ratio %.2lf\r\n", udp_stats[j].sent_bytes, udp_stats[j].recv_bytes, loss_ratio); + TEST_ASSERT_DOUBLE_WITHIN(TOLERATED_LOSS_RATIO, EXPECTED_LOSS_RATIO, loss_ratio); + +#endif + } + } + TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); +} diff --git a/TESTS/network/wifi/README.md b/TESTS/network/wifi/README.md new file mode 100644 index 00000000000..31aeb0525b7 --- /dev/null +++ b/TESTS/network/wifi/README.md @@ -0,0 +1,501 @@ +Wi-Fi test plan +======================== + +This is a test plan for Mbed OS Wi-Fi API. + +Target API +---------- + +The goal of this plan is to test the [WiFiInterface](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/WiFiInterface.h) class. + +Tools needed +---------------- + +- Mbed OS. +- Secure Wi-Fi access point. +- Unsecure Wi-Fi access point. + +This test plan is written in a tool-agnostic way and does not specify how to write, build or run test cases. + +Test environment +---------------- + +The general test environment consists of DUTs, base stations, a network connection and a test server: + +![Wi-Fi](../../netsocket/wifi_environment.png) + +- All DUTS should be in RAAS. +- Two Wi-Fi APs required: + - Nonsecured one: The SSID is later referred to as ``. + - Secured one: The SSID is later referred to as ``, password referred as ``. +- IPv4 and IPv6 must be routable between the Wi-Fi network IP address space and echo server. +- Firewall must not block test traffic to and from the test server **echo.mbedcloudtesting.com**. + - Echo Protocol, [RFC 862](https://tools.ietf.org/html/rfc862) is enabled in both TCP and UDP. Port 7. + - Discard Protocol, [RFC 863](https://tools.ietf.org/html/rfc863) is enabled in both TCP and UDP. Port 9. + - Character generator protocol, [RFC 864](https://tools.ietf.org/html/rfc864) is enabled in both TCP and UDP. Port 19. + - Daytime protocol, [RFC 867](https://tools.ietf.org/html/rfc867) in both TCP and UDP. Port 13. + - Time protocol, [RFC 868](https://tools.ietf.org/html/rfc868) in both TCP and UDP. Port 37. +- Channels to be used must be different for both APs. For secure on channel number is later referred as `` and for unsecure on ``. +- MAC addresses of Wi-Fi APs must be known. These are later referred to as `` and ``. + +**NOTE:** This document refers to an echo server because it is a requirement for running Socket API tests. The test cases defined in this document do not directly use it. + +Test case priorities +-------------------- + +Please refer to the following table for priorities of test cases. Priorities are labeled as MUST and SHOULD. MUST means this is a requirement and therefore mandatory to pass the test. SHOULD means it is recommended to pass the test if the driver implements the feature in question. + +| | Test case | | Priority | +|-----|-----------------------------------------|----------------------------|----------| +| 1 | WIFI_CONSTRUCTOR | | MUST | +| 2 | WIFI_CONNECT_NOCREDENTIALS | | MUST | +| 3 | WIFI_SET_CREDENTIAL | | MUST | +| 4 | WIFI_SET_CHANNEL | | SHOULD | +| 5 | WIFI_GET_RSSI | | SHOULD | +| 6 | WIFI_CONNECT_PARAMS_NULL | | MUST | +| 7 | WIFI_CONNECT_PARAMS_VALID_UNSECURE | | MUST | +| 8 | WIFI_CONNECT_PARAMS_VALID_SECURE | With security type: | | +| | | NSAPI_SECURITY_WEP | SHOULD | +| | | NSAPI_SECURITY_WPA | SHOULD | +| | | NSAPI_SECURITY_WPA2 | SHOULD | +| | | NSAPI_SECURITY_WPA_WPA2 | MUST | +| 9 | WIFI_CONNECT_PARAMS_CHANNEL | | SHOULD | +| 10 | WIFI_CONNECT_PARAMS_CHANNEL_FAIL | | SHOULD | +| 11 | WIFI_CONNECT | | MUST | +| 12 | WIFI_CONNECT_SECURE | With security type: | | +| | | NSAPI_SECURITY_WEP | SHOULD | +| | | NSAPI_SECURITY_WPA | SHOULD | +| | | NSAPI_SECURITY_WPA2 | SHOULD | +| | | NSAPI_SECURITY_WPA_WPA2 | MUST | +| 13 | WIFI_CONNECT_SECURE_FAIL | | MUST | +| 14 | WIFI_CONNECT_DISCONNECT_REPEAT | | MUST | +| 15 | WIFI_SCAN_NULL | | SHOULD | +| 16 | WIFI_SCAN | | SHOULD | + +Building test binaries +---------------------- + +For testing the board and driver, test against the Mbed OS master branch for the most recent, up-to-date test cases and drivers. + +To create a build environment: + +```.sh +mbed new wifi_test +cd wifi_test +cd mbed-os +git checkout master +cd .. +``` + +Now build test binaries: + +```.sh +mbed test --compile -t -m -n mbed-os-tests-network-wifi +``` + +Running tests +------------- + +The RAAS user and password have to be set in the shell to access it: + +```.sh +mbedgt -g :raas_client:ruka.mbedcloudtesting.com:8000 -n mbed-os-tests-network-wifi -V -v +``` + +Test cases for WifiInterface class +------------------------------------- + +### WIFI_CONSTRUCTOR + +**Description:** + + Test that the constructor of the driver works. + +**Preconditions:** + +None. + +**Test step:** + +Construct the driver by calling the constructor. + +**Expected result:** + +Constructor returns. + +### WIFI_CONNECT_NOCREDENTIALS + +**Description:** + +Test `WiFiInterface::connect()` without parameters. Don't set parameters with `set_credentials()`. + +This must be a first test to run after constructing the driver. No credentials should be given for the driver before this test. + +**Precondition:** + +Test the enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::connect()`. +3. `disconnect()`. + +**Expected result:** + +`connect()` call returns `NSAPI_ERROR_PARAMETER or NSAPI_ERROR_NO_SSID`. + +### WIFI_SET_CREDENTIAL + +**Description:** + +This test case is to test whether the driver accepts valid credentials and rejects ones that are not valid. + +**Precondition:** + +Driver class is initialized. + +**Test step:** + +Call `set_credentials()` with various parameters described in "Expected results". + +**Expected result:** + +| Parameters | Password | Security | Expected return code | +|------------|---------------------------|----------------------------------|-----------------------------------------------------| +| ssid=NULL | NULL | NSAPI_SECURITY_NONE | NSAPI_ERROR_PARAMETER | +| ssid="OK" | NULL | NSAPI_SECURITY_WPA_WPA2 | NSAPI_ERROR_PARAMETER | +| ssid="OK" | NULL | NSAPI_SECURITY_WEP | NSAPI_ERROR_PARAMETER because password is missing. | +| ssid="OK" | NULL | NSAPI_SECURITY_NONE | NSAPI_ERROR_OK | +| ssid="OK" | [any 64 character string] | NSAPI_SECURITY_WPA2 | NSAPI_ERROR_PARAMETER because password is too long | +| ssid="OK" | [any 63 character string] | NSAPI_SECURITY_WPA2 | NSAPI_ERROR_OK | +| ssid="OK" | "" | NSAPI_SECURITY_WPA_WPA2 | NSAPI_ERROR_PARAMETER | +| ssid="OK" | "" | NSAPI_SECURITY_WEP | NSAPI_ERROR_PARAMETER because password is missing. | +| ssid="OK" | "" | NSAPI_SECURITY_NONE | NSAPI_ERROR_OK | +| ssid="OK" | "12345678" | NSAPI_SECURITY_WPA_WPA2 | NSAPI_ERROR_OK | +| ssid="OK" | "12345678" | NSAPI_SECURITY_WPA2 | NSAPI_ERROR_OK | +| ssid="OK" | "12345678" | NSAPI_SECURITY_WPA | NSAPI_ERROR_OK | +| ssid="OK" | "12345678" | NSAPI_SECURITY_WEP | NSAPI_ERROR_OK or NSAPI_ERROR_UNSUPPORTED | +| ssid="" | "" | NSAPI_SECURITY_NONE | NSAPI_ERROR_PARAMETER | + +### WIFI_SET_CHANNEL + +**Description:** + +Test validity of `WiFiInterface::set_channel()`. + +When proper channel number is feed, it should return `NSAPI_ERROR_OK`. API documentation is unclear what to report on error case, but we assume `NSAPI_ERROR_PARAMETER`. + +If the driver does not support setting channels for scan, it should report `NSAPI_ERROR_UNSUPPORTED` for all of the channels. + +**Precondition:** + +Driver class is initialized. + +**Test step:** + +Call `set_channel()` with various parameters described in "Expected results". + +**Expected result:** + +For 2.4 Ghz chips: + +| Channel | Expected return code | +|---------|-----------------------------------------------------------------------------------| +| 0 | NSAPI_ERROR_OK (0 = any channel) | +| 1 | NSAPI_ERROR_OK | +| 13 | NSAPI_ERROR_OK if supporting European frequencies | +| | NSAPI_ERROR_PARAMETER if configured for North America | +| 15 | NSAPI_ERROR_PARAMETER | +| | because not a valid 2.4 Ghz channel | + +For 5 Ghz chips: + +| Channel | Expected return code | +|---------|-----------------------------------------------------------------------------------| +| 3 | NSAPI_ERROR_PARAMETER | +| | because not a valid 5 Ghz channel number | +| 36 | NSAPI_ERROR_OK | +| 169 | NSAPI_ERROR_PARAMETERs | +| | should not be allowed in any country | + +Drivers not supporting + +| channel | Expected return code | +|---------|-----------------------------------------------------------------------------------| +| | NSAPI_ERROR_UNSUPPORTED should be returned for ALL channel numbers > 0. | + +### WIFI_GET_RSSI + +**Description:** + +Test `WiFiInterface::get_rssi()` API. When connected, it should return a valid RSSI value. When unconnected, it should return 0. + +API is a bit unclear whether 0 can also mean that driver does not support reporting of RSSI. + +**Precondition:** + +Test enviroment is set up as specified in "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `get_rssi()`, store the result. +3. Call `connect()` with valid SSID parameters. Wait for connection. +4. Call `get_rssi()`. + +**Expected result:** + +The first call should return 0, and the second call should return a negative number between -10 and -100. + +### WIFI_CONNECT_PARAMS_NULL + +**Description:** + +Test `WiFiInterface::connect(ssid, pass, security, channel)` with NULL parameters. + +**Precondition:** + +Test enviroment is set up as specified in "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::connect(NULL, NULL)`. +3. Call `WiFiInterface::connect("", "")`. + +**Expected result:** + +Both `connect()` calls return NSAPI_ERROR_PARAMETER. + +### WIFI_CONNECT_PARAMS_VALID_UNSECURE + +**Description:** + +Test `WiFiInterface::connect(ssid, pass, security)` with valid parameters for the unsecure network. + +**Precondition:** + +Test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::connect( , NULL)`. +3. `disconnect()`. +4. Call `WiFiInterface::connect( , "")`. +5. `disconnect()`. + +**Expected result:** + +`connect()` calls return NSAPI_ERROR_OK. + +### WIFI_CONNECT_PARAMS_VALID_SECURE + +**Description:** + +Test `WiFiInterface::connect(ssid, pass, security)` with valid parameters for secure network. + +**Preconditions:** + +Test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::connect( , , NSAPI_SECURITY_WPA2)`. +3. `disconnect()`. + +**Expected result:** + +`connect()` call returns NSAPI_ERROR_OK. + +### WIFI_CONNECT_PARAMS_CHANNEL + +**Description:** + +Test `WiFiInterface::connect(ssid, pass, security, channel)` with valid parameters for the secure network using the channel specified. + +This test only applies to devices that support selecting the channel (passes `WIFI-SET-CHANNEL`). + +**Precondition:** + +Test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::connect( , , NSAPI_SECURITY_WPA2, )`. +3. `disconnect()`. + +**Expected result:** + +`connect()` call returns NSAPI_ERROR_OK. + +### WIFI_CONNECT_PARAMS_CHANNEL_FAIL + +**Description:** + +Test `WiFiInterface::connect(ssid, pass, security, channel)` with valid parameters for the secure network using the channel specified. The channel specified must be wrong, so the connect call can fail. + +This test only applies to devices that support selecting the channel (passes `WIFI-SET-CHANNEL`). + +**Precondition:** + +Test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::connect( , , NSAPI_SECURITY_WPA2, )`. +3. `disconnect()`. + +**Expected result:** + +The `connect()` call returns `NSAPI_ERROR_CONNECTION_TIMEOUT` or `NSAPI_ERROR_NO_CONNECTION`. + +### WIFI_CONNECT + +**Description:** + +Test `WiFiInterface::connect()` without parameters. Use `set_credentials()` for setting parameters. This checks that driver does not try to retrieve SSID from a location it's not controlling. + +**Preconditions:** + +1. Test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. `Call WiFiInterface::set_credentials( , NULL)`. +3. `Call WiFiInterface::connect()`. +4. `disconnect()`. +5. `Call WiFiInterface::set_credentials( , "")`. +6. `Call WiFiInterface::connect()`. +7. `disconnect()`. +8. Trash the memory storing SSID. +9. `Call WiFiInterface::set_credentials( , "")`. +10. `Call WiFiInterface::connect()`. +11. `disconnect()`. + +**Expected result:** + +`connect()` calls return `NSAPI_ERROR_OK`. + +### WIFI_CONNECT_SECURE + +**Description:** + +Test `WiFiInterface::connect()` without parameters. Use secure settings for `set_credentials`. + +**Precondition:** + +The test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::set_credentials( , , NSAPI_SECURITY_WPA2)`. +3. Call `WiFiInterface::connect()`. +4. `disconnect()`. + +**Expected result:** + +The `connect()` call returns `NSAPI_ERROR_OK`. + +### WIFI_CONNECT_SECURE_FAIL + +**Description:** + + Test `WiFiInterface::connect()` failing with the wrong password. + +**Precondition:** + +The test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::set_credentials( , , NSAPI_SECURITY_WPA2)`. +3. Call `WiFiInterface::connect()`. +4. `disconnect()`. + +**Expected result:** + +`connect()` call returns `NSAPI_ERROR_AUTH_FAILUR`, `NSAPI_ERROR_CONNECTION_TIMEOUT` or `NSAPI_ERROR_NO_CONNECTION`. + +### WIFI_CONNECT_DISCONNECT_REPEAT + +**Description:** + +Test `WiFiInterface::connect()` - `disconnect()` repetition works. + +**Precondition:** + +The test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::set_credentials( , NULL)`. +3. Repeat 10 times: + 1. Call `WiFiInterface::connect()`. + 2. `disconnect()`. + +**Expected result:** + +Each `connect()` call returns `NSAPI_ERROR_OK`. + +Each `disconnect()` returns `NSAPI_ERROR_OK`. + +### WIFI_SCAN_NULL + +**Description:** + +Call `WiFiInterface::scan()` with null parameters to get the number of networks available. + +**Precondition:** + +The test enviroment is set up as specified in the "Test Environment" chapter. + +**Test steps:** + +1. Initialize the driver. +2. Call `WiFiInterface::scan(NULL, 0)`;. + +**Expected result:** + +`scan()` returns a positive number that is higher or equal to two. (>=2). + +### WIFI_SCAN + +**Description:** + + Call `WiFiInterface::scan()` with a valid accesspoint list allocated. + +**Preconditions:** + +1. The test enviroment is set up as specified in the "Test Environment" chapter. +2. The test environment must contain less than 10 Wi-Fi SSID within the listening range of DUT; otherwise, adjust the value used in step 2. + +**Test steps:** + +1. Initialize the driver. +2. Allocate array of 10 WiFiAccessPoint objects. +3. Call `WiFiInterface::scan(, 10)`; + +**Expected result:** + +`scan()` returns a positive number that is higher or equal to two. (>=2). + +Scan elements from array indices between 0 and the number returned: + +- Call `get_ssid()` for each element. `` and `` must be found. +- Call `get_rssid()` for each element. The value must be between -10 and -100. + +For those known networks, test that the following return values are found: + +| get_ssid() | get_bssid() | get_security() | get_channel() | +|-------------------------|------------------------|-----------------------|-----------------------| +| `` | `` | NSAPI_SECURITY_NONE | `` | +| `` | `` | NSAPI_SECURITY_WPA2 | `` | diff --git a/TESTS/network/wifi/main.cpp b/TESTS/network/wifi/main.cpp index aeb139137a8..12bf3d766f5 100644 --- a/TESTS/network/wifi/main.cpp +++ b/TESTS/network/wifi/main.cpp @@ -52,7 +52,11 @@ using namespace utest::v1; utest::v1::status_t test_setup(const size_t number_of_cases) { - GREENTEA_SETUP(240, "default_auto"); +#ifdef MBED_GREENTEA_TEST_WIFI_TIMEOUT_S + GREENTEA_SETUP(MBED_GREENTEA_TEST_WIFI_TIMEOUT_S, "default_auto"); +#else + GREENTEA_SETUP(360, "default_auto"); +#endif return verbose_test_setup_handler(number_of_cases); } 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/psa/crypto_init/TARGET_FUTURE_SEQUANA_PSA/crypto_init.hex b/TESTS/psa/crypto_init/TARGET_FUTURE_SEQUANA_PSA/crypto_init.hex deleted file mode 100644 index 70498c96674..00000000000 --- a/TESTS/psa/crypto_init/TARGET_FUTURE_SEQUANA_PSA/crypto_init.hex +++ /dev/null @@ -1,4566 +0,0 @@ -: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/entropy_inject/COMPONENT_SPE/psa_setup.c b/TESTS/psa/entropy_inject/COMPONENT_SPE/psa_setup.c deleted file mode 100644 index 1d89eb712eb..00000000000 --- a/TESTS/psa/entropy_inject/COMPONENT_SPE/psa_setup.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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" -#include "spm_internal.h" -#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" - -extern const uint32_t crypto_srv_external_sids[4]; - -spm_partition_t g_partitions[3] = { - { - .partition_id = TEST_ITS_RESET_ID, - .thread_id = 0, - .flags_rot_srv = TEST_ITS_RESET_WAIT_ANY_SID_MSK, - .flags_interrupts = 0, - .rot_services = NULL, - .rot_services_count = TEST_ITS_RESET_ROT_SRV_COUNT, - .extern_sids = NULL, - .extern_sids_count = TEST_ITS_RESET_EXT_ROT_SRV_COUNT, - .irq_mapper = NULL, - }, - { - .partition_id = CRYPTO_SRV_ID, - .thread_id = 0, - .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, - .flags_interrupts = 0, - .rot_services = NULL, - .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 = ITS_ID, - .thread_id = 0, - .flags_rot_srv = ITS_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, - .irq_mapper = NULL, - }, -}; - -/* Check all the defined memory regions for overlapping. */ - -/* A list of all the memory regions. */ -const mem_region_t *mem_regions = NULL; - -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); - -uint32_t init_partitions(spm_partition_t **partitions) -{ - if (NULL == partitions) { - SPM_PANIC("partitions is NULL!\n"); - } - - test_its_reset_init(&(g_partitions[0])); - 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 deleted file mode 100644 index e5cc3bff461..00000000000 --- a/TESTS/psa/entropy_inject/TARGET_FUTURE_SEQUANA_PSA/entropy_inject.hex +++ /dev/null @@ -1,4578 +0,0 @@ -: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_EMUL/test_pits.c b/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_EMUL/test_pits.c deleted file mode 100644 index 60a2d9a8547..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_EMUL/test_pits.c +++ /dev/null @@ -1,28 +0,0 @@ -/* 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 TARGET_PSA -#error [NOT_SUPPORTED] ITS tests can run only on PSA-enabled targets. -#endif // TARGET_PSA - -#include "test_pits.h" -#include "test_pits_impl.h" - -psa_its_status_t test_psa_its_reset(void) -{ - return test_psa_its_reset_impl(); -} 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 deleted file mode 100644 index e5eae50392e..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* 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. - */ -#include -#include -#include "psa_prot_internal_storage.h" -#include "test_pits_impl.h" -#include "kv_config.h" -#include "KVMap.h" -#include "KVStore.h" -#include "mbed_error.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -using namespace mbed; - -#define STR_EXPAND(tok) #tok - -psa_its_status_t test_psa_its_reset_impl(void) -{ - psa_its_status_t status = PSA_ITS_SUCCESS; - - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - KVMap &kv_map = KVMap::get_instance(); - KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); - if (!kvstore) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - if (kvstore->reset() != MBED_SUCCESS) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - return status; -} - -#ifdef __cplusplus -} -#endif diff --git a/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.h b/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.h deleted file mode 100644 index 4b072345212..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.h +++ /dev/null @@ -1,34 +0,0 @@ -/* 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 __PITS_IMPL_H__ -#define __PITS_IMPL_H__ - -#include "psa_prot_internal_storage.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -psa_its_status_t test_psa_its_reset_impl(void); - -#ifdef __cplusplus -} -#endif - -#endif // __PITS_IMPL_H__ diff --git a/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IPC/test_pits.c b/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IPC/test_pits.c deleted file mode 100644 index 8493581f9ee..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_PSA_SRV_IPC/test_pits.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -#include "spm_client.h" -#include "psa_prot_internal_storage.h" -#include "test_pits.h" -#include "psa_test_its_reset_ifs.h" - -psa_its_status_t test_psa_its_reset(void) -{ - psa_handle_t conn = psa_connect(TEST_PSA_ITS_RESET, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_error_t status = psa_call(conn, NULL, 0, NULL, 0); - if (status == PSA_DROP_CONNECTION) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} 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 deleted file mode 100644 index 88b3fc93078..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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" -#include "mbed_toolchain.h" /* For using MBED_ALIGN macro */ -#include "rtx_os.h" -#include "spm_panic.h" -#include "spm_internal.h" -#include "psa_test_its_reset_partition.h" -#include "psa_test_its_reset_ifs.h" - - -/* Threads stacks */ -MBED_ALIGN(8) uint8_t test_its_reset_thread_stack[1024] = {0}; - -/* Threads control blocks */ -osRtxThread_t test_its_reset_thread_cb = {0}; - -/* Thread attributes - for thread initialization */ -osThreadAttr_t test_its_reset_thread_attr = { - .name = "test_its_reset", - .attr_bits = 0, - .cb_mem = &test_its_reset_thread_cb, - .cb_size = sizeof(test_its_reset_thread_cb), - .stack_mem = test_its_reset_thread_stack, - .stack_size = 1024, - .priority = osPriorityNormal, - .tz_module = 0, - .reserved = 0 -}; - -spm_rot_service_t test_its_reset_rot_services[TEST_ITS_RESET_ROT_SRV_COUNT] = { - { - .sid = TEST_PSA_ITS_RESET, - .mask = TEST_PSA_ITS_RESET_MSK, - .partition = NULL, - .min_version = 1, - .min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED, - .allow_nspe = true, - .queue = { - .head = NULL, - .tail = NULL - } - }, -}; - - -static osRtxMutex_t test_its_reset_mutex = {0}; -static const osMutexAttr_t test_its_reset_mutex_attr = { - .name = "test_its_reset_mutex", - .attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust, - .cb_mem = &test_its_reset_mutex, - .cb_size = sizeof(test_its_reset_mutex), -}; - - -extern void test_pits_entry(void *ptr); - -void test_its_reset_init(spm_partition_t *partition) -{ - if (NULL == partition) { - SPM_PANIC("partition is NULL!\n"); - } - - partition->mutex = osMutexNew(&test_its_reset_mutex_attr); - if (NULL == partition->mutex) { - SPM_PANIC("Failed to create mutex for secure partition test_its_reset!\n"); - } - - for (uint32_t i = 0; i < TEST_ITS_RESET_ROT_SRV_COUNT; ++i) { - test_its_reset_rot_services[i].partition = partition; - } - partition->rot_services = test_its_reset_rot_services; - - partition->thread_id = osThreadNew(test_pits_entry, NULL, &test_its_reset_thread_attr); - if (NULL == partition->thread_id) { - SPM_PANIC("Failed to create start main thread of partition test_its_reset!\n"); - } -} 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 deleted file mode 100644 index 58012ba0aa7..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.h +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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 -#define PSA_TEST_ITS_RESET_PARTITION_H - -#define TEST_ITS_RESET_ID 11 - -#define TEST_ITS_RESET_ROT_SRV_COUNT (1UL) -#define TEST_ITS_RESET_EXT_ROT_SRV_COUNT (0UL) - -/* TEST_ITS_RESET event flags */ -#define TEST_ITS_RESET_RESERVED1_POS (1UL) -#define TEST_ITS_RESET_RESERVED1_MSK (1UL << TEST_ITS_RESET_RESERVED1_POS) - -#define TEST_ITS_RESET_RESERVED2_POS (2UL) -#define TEST_ITS_RESET_RESERVED2_MSK (1UL << TEST_ITS_RESET_RESERVED2_POS) - - - -#define TEST_PSA_ITS_RESET_MSK_POS (4UL) -#define TEST_PSA_ITS_RESET_MSK (1UL << TEST_PSA_ITS_RESET_MSK_POS) - -#define TEST_ITS_RESET_WAIT_ANY_SID_MSK (\ - TEST_PSA_ITS_RESET_MSK) - - -#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 deleted file mode 100644 index e5eae50392e..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/test_pits_impl.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* 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. - */ -#include -#include -#include "psa_prot_internal_storage.h" -#include "test_pits_impl.h" -#include "kv_config.h" -#include "KVMap.h" -#include "KVStore.h" -#include "mbed_error.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -using namespace mbed; - -#define STR_EXPAND(tok) #tok - -psa_its_status_t test_psa_its_reset_impl(void) -{ - psa_its_status_t status = PSA_ITS_SUCCESS; - - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - KVMap &kv_map = KVMap::get_instance(); - KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); - if (!kvstore) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - if (kvstore->reset() != MBED_SUCCESS) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - return status; -} - -#ifdef __cplusplus -} -#endif diff --git a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/test_pits_reset_partition.c b/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/test_pits_reset_partition.c deleted file mode 100644 index efdd1ad0c70..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/COMPONENT_SPE/test_pits_reset_partition.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -// -------------------------------------- Includes ----------------------------------- - -#include -#include "cmsis_os2.h" -#include "spm_server.h" -#include "spm_panic.h" -#include "psa_test_its_reset_partition.h" -#include "psa_prot_internal_storage.h" -#include "test_pits_impl.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void test_pits_entry(void *ptr) -{ - uint32_t signals = 0; - psa_msg_t msg = {0}; - psa_error_t status = PSA_SUCCESS; - - while (1) { - signals = psa_wait_any(PSA_BLOCK); - if ((signals & TEST_PSA_ITS_RESET_MSK) != 0) { - psa_get(TEST_PSA_ITS_RESET_MSK, &msg); - switch (msg.type) { - case PSA_IPC_CONNECT: //fallthrough - case PSA_IPC_DISCONNECT: { - break; - } - case PSA_IPC_CALL: { - status = test_psa_its_reset_impl(); - break; - } - default: { - SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); - break; - } - } - - psa_reply(msg.handle, status); - } - } -} - -#ifdef __cplusplus -} -#endif 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 deleted file mode 100644 index e61ae5e349e..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/psa_test_its_reset_ifs.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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 -#define PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H - -#define TEST_PSA_ITS_RESET 0x00011A04 - -#endif // PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H diff --git a/TESTS/psa/entropy_inject/its_reset/test_pits.h b/TESTS/psa/entropy_inject/its_reset/test_pits.h deleted file mode 100644 index 31b5d668120..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/test_pits.h +++ /dev/null @@ -1,50 +0,0 @@ -/* 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 __TEST_INTERNAL_TRUSTED_STORAGE_H__ -#define __TEST_INTERNAL_TRUSTED_STORAGE_H__ - -/** @file -@brief This file describes the PSA Internal Trusted Storage API -*/ - -#include -#include -#include "psa_prot_internal_storage.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** - * \brief Remove the provided key and its associated data from the storage - * - * \param[in] uid The uid value - * - * \return A status indicating the success/failure of the operation - * - * \retval PSA_ITS_SUCCESS The operation completed successfully - * \retval PSA_ITS_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) - */ -psa_its_status_t test_psa_its_reset(void); - -#ifdef __cplusplus -} -#endif - -#endif // __TEST_INTERNAL_TRUSTED_STORAGE_H__ diff --git a/TESTS/psa/entropy_inject/its_reset/test_pits_psa.json b/TESTS/psa/entropy_inject/its_reset/test_pits_psa.json deleted file mode 100644 index c2abfdbe01f..00000000000 --- a/TESTS/psa/entropy_inject/its_reset/test_pits_psa.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "TEST_ITS_RESET", - "type": "APPLICATION-ROT", - "priority": "NORMAL", - "id": "0x0000000B", - "entry_point": "test_pits_entry", - "stack_size": "0x400", - "heap_size": "0x400", - "services": [{ - "name": "TEST_PSA_ITS_RESET", - "identifier": "0x00011A04", - "signal": "TEST_PSA_ITS_RESET_MSK", - "non_secure_clients": true, - "minor_version": 1, - "minor_policy": "RELAXED" - } - ], - "source_files": [ - "COMPONENT_SPE/test_pits_reset_partition.c" - ] - } diff --git a/TESTS/psa/entropy_inject/main.cpp b/TESTS/psa/entropy_inject/main.cpp index d6f72bfcf14..355312f0fcf 100644 --- a/TESTS/psa/entropy_inject/main.cpp +++ b/TESTS/psa/entropy_inject/main.cpp @@ -23,11 +23,11 @@ #include "greentea-client/test_env.h" #include "unity/unity.h" #include "utest/utest.h" -#include "psa_prot_internal_storage.h" -#include "test_pits.h" +#include "psa/internal_trusted_storage.h" +#include "psa/lifecycle.h" #include "entropy.h" #include "entropy_poll.h" -#include "crypto.h" +#include "psa/crypto.h" /* MAX value support macro */ #if !defined(MAX) @@ -51,31 +51,42 @@ void validate_entropy_seed_injection(int seed_length_a, psa_status_t status; uint8_t output[32] = { 0 }; uint8_t zeros[32] = { 0 }; + int memcmp_res = 0; status = mbedtls_psa_inject_entropy(seed, seed_length_a); - TEST_ASSERT(status == expected_status_a); + TEST_ASSERT_EQUAL_INT(expected_status_a, status); + status = mbedtls_psa_inject_entropy(seed, seed_length_b); - TEST_ASSERT(status == expected_status_b); - TEST_ASSERT(psa_crypto_init() == PSA_SUCCESS); - TEST_ASSERT(psa_generate_random(output, sizeof(output)) == PSA_SUCCESS); - TEST_ASSERT(memcmp(output, zeros, sizeof(output)) != 0); + TEST_ASSERT_EQUAL_INT(expected_status_b, status); + + status = psa_crypto_init(); + TEST_ASSERT_EQUAL_INT(PSA_SUCCESS, status); + + status = psa_generate_random(output, sizeof(output)); + TEST_ASSERT_EQUAL_INT(PSA_SUCCESS, status); + + memcmp_res = memcmp(output, zeros, sizeof(output)); + TEST_ASSERT_NOT_EQUAL(0, memcmp_res); } void run_entropy_inject_with_crypto_init() { - psa_its_status_t its_status; psa_status_t status; status = psa_crypto_init(); - TEST_ASSERT(status == PSA_ERROR_INSUFFICIENT_ENTROPY); + TEST_ASSERT_EQUAL_INT(PSA_ERROR_INSUFFICIENT_ENTROPY, status); + status = mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); - TEST_ASSERT(status == PSA_SUCCESS); + TEST_ASSERT_EQUAL_INT(PSA_SUCCESS, status); + status = psa_crypto_init(); - TEST_ASSERT(status == PSA_SUCCESS); + TEST_ASSERT_EQUAL_INT(PSA_SUCCESS, status); + status = mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); - TEST_ASSERT(status == PSA_ERROR_NOT_PERMITTED); + TEST_ASSERT_EQUAL_INT(PSA_ERROR_NOT_PERMITTED, status); + mbedtls_psa_crypto_free(); /* The seed is written by nv_seed callback functions therefore the injection will fail */ status = mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); - TEST_ASSERT(status == PSA_ERROR_NOT_PERMITTED); + TEST_ASSERT_EQUAL_INT(PSA_ERROR_NOT_PERMITTED, status); } @@ -90,6 +101,9 @@ utest::v1::status_t greentea_test_setup(const size_t number_of_cases) seed[i] = i; } + psa_status_t status = mbed_psa_reboot_and_request_new_security_state(PSA_LIFECYCLE_ASSEMBLY_AND_TEST); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + if (mbedtls_psa_inject_entropy(seed, MBEDTLS_ENTROPY_MAX_SEED_SIZE) == PSA_ERROR_NOT_SUPPORTED) { skip_tests = true; } @@ -100,25 +114,33 @@ utest::v1::status_t greentea_test_setup(const size_t 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); + 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); + 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); + 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); + 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() @@ -134,8 +156,8 @@ static void injection_and_init_deinit() utest::v1::status_t case_teardown_handler(const Case *const source, const size_t passed, const size_t failed, const failure_t reason) { psa_status_t status; - status = test_psa_its_reset(); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); + status = mbed_psa_reboot_and_request_new_security_state(PSA_LIFECYCLE_ASSEMBLY_AND_TEST); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); mbedtls_psa_crypto_free(); return greentea_case_teardown_handler(source, passed, failed, reason); } @@ -143,8 +165,8 @@ utest::v1::status_t case_teardown_handler(const Case *const source, const size_t utest::v1::status_t case_setup_handler(const Case *const source, const size_t index_of_case) { psa_status_t status; - status = test_psa_its_reset(); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); + status = mbed_psa_reboot_and_request_new_security_state(PSA_LIFECYCLE_ASSEMBLY_AND_TEST); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); return greentea_case_setup_handler(source, index_of_case); } diff --git a/TESTS/psa/its_ps/main.cpp b/TESTS/psa/its_ps/main.cpp new file mode 100644 index 00000000000..0901cf4547c --- /dev/null +++ b/TESTS/psa/its_ps/main.cpp @@ -0,0 +1,198 @@ +/* +* 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 TARGET_PSA +#error [NOT_SUPPORTED] ITS/PS tests can run only on PSA-enabled targets. +#endif // TARGET_PSA + +#include "greentea-client/test_env.h" +#include "unity/unity.h" +#include "utest/utest.h" +#include "psa/error.h" +#include "psa/storage_common.h" +#include "psa/internal_trusted_storage.h" +#include "psa/protected_storage.h" +#include "psa/lifecycle.h" + +using namespace utest::v1; + +#define TEST_BUFF_SIZE 16 + +typedef enum { + its, + ps +} storage_type_t; + +extern "C" psa_status_t psa_ps_reset(); + +static psa_status_t set_func(storage_type_t stype, psa_storage_uid_t uid, uint32_t data_length, + const void *p_data, psa_storage_create_flags_t create_flags) +{ + return (stype == its) ? + psa_its_set(uid, data_length, p_data, create_flags) : + psa_ps_set(uid, data_length, p_data, create_flags); +} + +static psa_status_t get_func(storage_type_t stype, psa_storage_uid_t uid, uint32_t data_offset, + uint32_t data_length, void *p_data) +{ + return (stype == its) ? + psa_its_get(uid, data_offset, data_length, p_data) : + psa_ps_get(uid, data_offset, data_length, p_data); +} + +static psa_status_t get_info_func(storage_type_t stype, psa_storage_uid_t uid, + struct psa_storage_info_t *p_info) +{ + return (stype == its) ? + psa_its_get_info(uid, p_info) : + psa_ps_get_info(uid, p_info); +} + +static psa_status_t remove_func(storage_type_t stype, psa_storage_uid_t uid) +{ + return (stype == its) ? + psa_its_remove(uid) : + psa_ps_remove(uid); +} + + +template +void pits_ps_test() +{ + psa_status_t status = PSA_SUCCESS; + uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; + uint8_t read_buff[TEST_BUFF_SIZE] = {0}; + struct psa_storage_info_t info = {0, PSA_STORAGE_FLAG_WRITE_ONCE}; + memset(read_buff, 0, TEST_BUFF_SIZE); + + status = get_info_func(stype, 5, &info); + TEST_ASSERT_EQUAL(PSA_ERROR_DOES_NOT_EXIST, status); + + status = set_func(stype, 5, TEST_BUFF_SIZE, write_buff, 0); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + + status = get_info_func(stype, 5, &info); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + TEST_ASSERT_EQUAL(TEST_BUFF_SIZE, info.size); + TEST_ASSERT_EQUAL(0, info.flags); + + status = get_func(stype, 5, 0, TEST_BUFF_SIZE, read_buff); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + TEST_ASSERT_EQUAL_MEMORY(write_buff, read_buff, TEST_BUFF_SIZE); + + memset(read_buff, 0, TEST_BUFF_SIZE); + status = get_func(stype, 5, 1, TEST_BUFF_SIZE, read_buff); + TEST_ASSERT_NOT_EQUAL(PSA_SUCCESS, status); + + status = get_func(stype, 5, 1, TEST_BUFF_SIZE - 1, read_buff); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + TEST_ASSERT_EQUAL_MEMORY(write_buff + 1, read_buff, TEST_BUFF_SIZE - 1); + + status = remove_func(stype, 5); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + + status = get_info_func(stype, 5, &info); + TEST_ASSERT_EQUAL(PSA_ERROR_DOES_NOT_EXIST, status); +} + +template +void pits_ps_write_once_test() +{ + psa_status_t status = PSA_SUCCESS; + uint8_t write_buff[TEST_BUFF_SIZE] = {0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00}; + uint8_t read_buff[TEST_BUFF_SIZE] = {0}; + struct psa_storage_info_t info = {0, 0}; + + status = get_info_func(stype, 5, &info); + TEST_ASSERT_EQUAL(PSA_ERROR_DOES_NOT_EXIST, status); + + status = set_func(stype, 5, TEST_BUFF_SIZE, write_buff, PSA_STORAGE_FLAG_WRITE_ONCE); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + + info.size = 0; + info.flags = PSA_STORAGE_FLAG_WRITE_ONCE; + status = get_info_func(stype, 5, &info); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + TEST_ASSERT_EQUAL(TEST_BUFF_SIZE, info.size); + TEST_ASSERT_EQUAL(PSA_STORAGE_FLAG_WRITE_ONCE, info.flags); + + status = get_func(stype, 5, 0, TEST_BUFF_SIZE, read_buff); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + TEST_ASSERT_EQUAL_MEMORY(write_buff, read_buff, TEST_BUFF_SIZE); + + status = set_func(stype, 5, TEST_BUFF_SIZE, write_buff, PSA_STORAGE_FLAG_WRITE_ONCE); + TEST_ASSERT_EQUAL(PSA_ERROR_NOT_PERMITTED, status); + + status = set_func(stype, 5, TEST_BUFF_SIZE, write_buff, 0); + TEST_ASSERT_EQUAL(PSA_ERROR_NOT_PERMITTED, status); + + status = remove_func(stype, 5); + TEST_ASSERT_EQUAL(PSA_ERROR_NOT_PERMITTED, status); + + info.size = 0; + info.flags = PSA_STORAGE_FLAG_WRITE_ONCE; + status = get_info_func(stype, 5, &info); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + TEST_ASSERT_EQUAL(TEST_BUFF_SIZE, info.size); + TEST_ASSERT_EQUAL(PSA_STORAGE_FLAG_WRITE_ONCE, info.flags); +} + +utest::v1::status_t case_its_teardown_handler(const Case *const source, const size_t passed, const size_t failed, const failure_t reason) +{ + psa_status_t status; + status = mbed_psa_reboot_and_request_new_security_state(PSA_LIFECYCLE_ASSEMBLY_AND_TEST); + TEST_ASSERT_EQUAL(PSA_LIFECYCLE_SUCCESS, status); + return greentea_case_teardown_handler(source, passed, failed, reason); +} + +template +utest::v1::status_t case_its_setup_handler(const Case *const source, const size_t index_of_case) +{ + psa_status_t status; + if (stype == its) { + status = mbed_psa_reboot_and_request_new_security_state(PSA_LIFECYCLE_ASSEMBLY_AND_TEST); + TEST_ASSERT_EQUAL(PSA_LIFECYCLE_SUCCESS, status); + } else { + status = psa_ps_reset(); + TEST_ASSERT_EQUAL(PSA_SUCCESS, status); + } + return greentea_case_setup_handler(source, index_of_case); +} + +Case cases[] = { + Case("PSA prot internal storage - Basic", case_its_setup_handler, pits_ps_test, case_its_teardown_handler), + Case("PSA prot internal storage - Write-once", case_its_setup_handler, pits_ps_write_once_test, case_its_teardown_handler), + Case("PSA protected storage - Basic", case_its_setup_handler, pits_ps_test), + Case("PSA protected storage - Write-once", case_its_setup_handler, pits_ps_write_once_test) +}; + +utest::v1::status_t greentea_test_setup(const size_t number_of_cases) +{ +#ifndef NO_GREENTEA + GREENTEA_SETUP(60, "default_auto"); +#endif + 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/TESTS/psa/prot_internal_storage/COMPONENT_SPE/psa_setup.c b/TESTS/psa/prot_internal_storage/COMPONENT_SPE/psa_setup.c deleted file mode 100644 index 1d89eb712eb..00000000000 --- a/TESTS/psa/prot_internal_storage/COMPONENT_SPE/psa_setup.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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" -#include "spm_internal.h" -#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" - -extern const uint32_t crypto_srv_external_sids[4]; - -spm_partition_t g_partitions[3] = { - { - .partition_id = TEST_ITS_RESET_ID, - .thread_id = 0, - .flags_rot_srv = TEST_ITS_RESET_WAIT_ANY_SID_MSK, - .flags_interrupts = 0, - .rot_services = NULL, - .rot_services_count = TEST_ITS_RESET_ROT_SRV_COUNT, - .extern_sids = NULL, - .extern_sids_count = TEST_ITS_RESET_EXT_ROT_SRV_COUNT, - .irq_mapper = NULL, - }, - { - .partition_id = CRYPTO_SRV_ID, - .thread_id = 0, - .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, - .flags_interrupts = 0, - .rot_services = NULL, - .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 = ITS_ID, - .thread_id = 0, - .flags_rot_srv = ITS_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, - .irq_mapper = NULL, - }, -}; - -/* Check all the defined memory regions for overlapping. */ - -/* A list of all the memory regions. */ -const mem_region_t *mem_regions = NULL; - -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); - -uint32_t init_partitions(spm_partition_t **partitions) -{ - if (NULL == partitions) { - SPM_PANIC("partitions is NULL!\n"); - } - - test_its_reset_init(&(g_partitions[0])); - 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 deleted file mode 100644 index e5cc3bff461..00000000000 --- a/TESTS/psa/prot_internal_storage/TARGET_FUTURE_SEQUANA_PSA/prot_internal_storage.hex +++ /dev/null @@ -1,4578 +0,0 @@ -: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_EMUL/test_pits.c b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_EMUL/test_pits.c deleted file mode 100644 index 60a2d9a8547..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_EMUL/test_pits.c +++ /dev/null @@ -1,28 +0,0 @@ -/* 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 TARGET_PSA -#error [NOT_SUPPORTED] ITS tests can run only on PSA-enabled targets. -#endif // TARGET_PSA - -#include "test_pits.h" -#include "test_pits_impl.h" - -psa_its_status_t test_psa_its_reset(void) -{ - return test_psa_its_reset_impl(); -} 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 deleted file mode 100644 index e5eae50392e..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* 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. - */ -#include -#include -#include "psa_prot_internal_storage.h" -#include "test_pits_impl.h" -#include "kv_config.h" -#include "KVMap.h" -#include "KVStore.h" -#include "mbed_error.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -using namespace mbed; - -#define STR_EXPAND(tok) #tok - -psa_its_status_t test_psa_its_reset_impl(void) -{ - psa_its_status_t status = PSA_ITS_SUCCESS; - - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - KVMap &kv_map = KVMap::get_instance(); - KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); - if (!kvstore) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - if (kvstore->reset() != MBED_SUCCESS) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - return status; -} - -#ifdef __cplusplus -} -#endif diff --git a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.h b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.h deleted file mode 100644 index 4b072345212..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IMPL/test_pits_impl.h +++ /dev/null @@ -1,34 +0,0 @@ -/* 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 __PITS_IMPL_H__ -#define __PITS_IMPL_H__ - -#include "psa_prot_internal_storage.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -psa_its_status_t test_psa_its_reset_impl(void); - -#ifdef __cplusplus -} -#endif - -#endif // __PITS_IMPL_H__ diff --git a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IPC/test_pits.c b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IPC/test_pits.c deleted file mode 100644 index 8493581f9ee..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_PSA_SRV_IPC/test_pits.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -#include "spm_client.h" -#include "psa_prot_internal_storage.h" -#include "test_pits.h" -#include "psa_test_its_reset_ifs.h" - -psa_its_status_t test_psa_its_reset(void) -{ - psa_handle_t conn = psa_connect(TEST_PSA_ITS_RESET, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_error_t status = psa_call(conn, NULL, 0, NULL, 0); - if (status == PSA_DROP_CONNECTION) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} diff --git a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.c b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.c deleted file mode 100644 index 88b3fc93078..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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" -#include "mbed_toolchain.h" /* For using MBED_ALIGN macro */ -#include "rtx_os.h" -#include "spm_panic.h" -#include "spm_internal.h" -#include "psa_test_its_reset_partition.h" -#include "psa_test_its_reset_ifs.h" - - -/* Threads stacks */ -MBED_ALIGN(8) uint8_t test_its_reset_thread_stack[1024] = {0}; - -/* Threads control blocks */ -osRtxThread_t test_its_reset_thread_cb = {0}; - -/* Thread attributes - for thread initialization */ -osThreadAttr_t test_its_reset_thread_attr = { - .name = "test_its_reset", - .attr_bits = 0, - .cb_mem = &test_its_reset_thread_cb, - .cb_size = sizeof(test_its_reset_thread_cb), - .stack_mem = test_its_reset_thread_stack, - .stack_size = 1024, - .priority = osPriorityNormal, - .tz_module = 0, - .reserved = 0 -}; - -spm_rot_service_t test_its_reset_rot_services[TEST_ITS_RESET_ROT_SRV_COUNT] = { - { - .sid = TEST_PSA_ITS_RESET, - .mask = TEST_PSA_ITS_RESET_MSK, - .partition = NULL, - .min_version = 1, - .min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED, - .allow_nspe = true, - .queue = { - .head = NULL, - .tail = NULL - } - }, -}; - - -static osRtxMutex_t test_its_reset_mutex = {0}; -static const osMutexAttr_t test_its_reset_mutex_attr = { - .name = "test_its_reset_mutex", - .attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust, - .cb_mem = &test_its_reset_mutex, - .cb_size = sizeof(test_its_reset_mutex), -}; - - -extern void test_pits_entry(void *ptr); - -void test_its_reset_init(spm_partition_t *partition) -{ - if (NULL == partition) { - SPM_PANIC("partition is NULL!\n"); - } - - partition->mutex = osMutexNew(&test_its_reset_mutex_attr); - if (NULL == partition->mutex) { - SPM_PANIC("Failed to create mutex for secure partition test_its_reset!\n"); - } - - for (uint32_t i = 0; i < TEST_ITS_RESET_ROT_SRV_COUNT; ++i) { - test_its_reset_rot_services[i].partition = partition; - } - partition->rot_services = test_its_reset_rot_services; - - partition->thread_id = osThreadNew(test_pits_entry, NULL, &test_its_reset_thread_attr); - if (NULL == partition->thread_id) { - SPM_PANIC("Failed to create start main thread of partition test_its_reset!\n"); - } -} diff --git a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.h b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.h deleted file mode 100644 index 58012ba0aa7..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/psa_test_its_reset_partition.h +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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 -#define PSA_TEST_ITS_RESET_PARTITION_H - -#define TEST_ITS_RESET_ID 11 - -#define TEST_ITS_RESET_ROT_SRV_COUNT (1UL) -#define TEST_ITS_RESET_EXT_ROT_SRV_COUNT (0UL) - -/* TEST_ITS_RESET event flags */ -#define TEST_ITS_RESET_RESERVED1_POS (1UL) -#define TEST_ITS_RESET_RESERVED1_MSK (1UL << TEST_ITS_RESET_RESERVED1_POS) - -#define TEST_ITS_RESET_RESERVED2_POS (2UL) -#define TEST_ITS_RESET_RESERVED2_MSK (1UL << TEST_ITS_RESET_RESERVED2_POS) - - - -#define TEST_PSA_ITS_RESET_MSK_POS (4UL) -#define TEST_PSA_ITS_RESET_MSK (1UL << TEST_PSA_ITS_RESET_MSK_POS) - -#define TEST_ITS_RESET_WAIT_ANY_SID_MSK (\ - TEST_PSA_ITS_RESET_MSK) - - -#endif // PSA_TEST_ITS_RESET_PARTITION_H 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 deleted file mode 100644 index e5eae50392e..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/test_pits_impl.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* 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. - */ -#include -#include -#include "psa_prot_internal_storage.h" -#include "test_pits_impl.h" -#include "kv_config.h" -#include "KVMap.h" -#include "KVStore.h" -#include "mbed_error.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -using namespace mbed; - -#define STR_EXPAND(tok) #tok - -psa_its_status_t test_psa_its_reset_impl(void) -{ - psa_its_status_t status = PSA_ITS_SUCCESS; - - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - KVMap &kv_map = KVMap::get_instance(); - KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); - if (!kvstore) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - if (kvstore->reset() != MBED_SUCCESS) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - return status; -} - -#ifdef __cplusplus -} -#endif diff --git a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/test_pits_reset_partition.c b/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/test_pits_reset_partition.c deleted file mode 100644 index efdd1ad0c70..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/COMPONENT_SPE/test_pits_reset_partition.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -// -------------------------------------- Includes ----------------------------------- - -#include -#include "cmsis_os2.h" -#include "spm_server.h" -#include "spm_panic.h" -#include "psa_test_its_reset_partition.h" -#include "psa_prot_internal_storage.h" -#include "test_pits_impl.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void test_pits_entry(void *ptr) -{ - uint32_t signals = 0; - psa_msg_t msg = {0}; - psa_error_t status = PSA_SUCCESS; - - while (1) { - signals = psa_wait_any(PSA_BLOCK); - if ((signals & TEST_PSA_ITS_RESET_MSK) != 0) { - psa_get(TEST_PSA_ITS_RESET_MSK, &msg); - switch (msg.type) { - case PSA_IPC_CONNECT: //fallthrough - case PSA_IPC_DISCONNECT: { - break; - } - case PSA_IPC_CALL: { - status = test_psa_its_reset_impl(); - break; - } - default: { - SPM_PANIC("Unexpected message type %d!", (int)(msg.type)); - break; - } - } - - psa_reply(msg.handle, status); - } - } -} - -#ifdef __cplusplus -} -#endif diff --git a/TESTS/psa/prot_internal_storage/its_reset/psa_test_its_reset_ifs.h b/TESTS/psa/prot_internal_storage/its_reset/psa_test_its_reset_ifs.h deleted file mode 100644 index e61ae5e349e..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/psa_test_its_reset_ifs.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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 -#define PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H - -#define TEST_PSA_ITS_RESET 0x00011A04 - -#endif // PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H diff --git a/TESTS/psa/prot_internal_storage/its_reset/test_pits.h b/TESTS/psa/prot_internal_storage/its_reset/test_pits.h deleted file mode 100644 index 44535b43998..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/test_pits.h +++ /dev/null @@ -1,48 +0,0 @@ -/* 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 __TEST_INTERNAL_TRUSTED_STORAGE_H__ -#define __TEST_INTERNAL_TRUSTED_STORAGE_H__ - -/** @file -@brief This file describes the PSA Internal Trusted Storage API -*/ - -#include -#include -#include "psa_prot_internal_storage.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** - * \brief Remove the provided key and its associated data from the storage - * - * \return A status indicating the success/failure of the operation - * - * \retval PSA_ITS_SUCCESS The operation completed successfully - * \retval PSA_ITS_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) - */ -psa_its_status_t test_psa_its_reset(void); - -#ifdef __cplusplus -} -#endif - -#endif // __TEST_INTERNAL_TRUSTED_STORAGE_H__ diff --git a/TESTS/psa/prot_internal_storage/its_reset/test_pits_psa.json b/TESTS/psa/prot_internal_storage/its_reset/test_pits_psa.json deleted file mode 100644 index c2abfdbe01f..00000000000 --- a/TESTS/psa/prot_internal_storage/its_reset/test_pits_psa.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "TEST_ITS_RESET", - "type": "APPLICATION-ROT", - "priority": "NORMAL", - "id": "0x0000000B", - "entry_point": "test_pits_entry", - "stack_size": "0x400", - "heap_size": "0x400", - "services": [{ - "name": "TEST_PSA_ITS_RESET", - "identifier": "0x00011A04", - "signal": "TEST_PSA_ITS_RESET_MSK", - "non_secure_clients": true, - "minor_version": 1, - "minor_policy": "RELAXED" - } - ], - "source_files": [ - "COMPONENT_SPE/test_pits_reset_partition.c" - ] - } diff --git a/TESTS/psa/prot_internal_storage/main.cpp b/TESTS/psa/prot_internal_storage/main.cpp deleted file mode 100644 index 5eb940e8d41..00000000000 --- a/TESTS/psa/prot_internal_storage/main.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* -* 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 TARGET_PSA -#error [NOT_SUPPORTED] ITS tests can run only on PSA-enabled targets. -#endif // TARGET_PSA - -#include "greentea-client/test_env.h" -#include "unity/unity.h" -#include "utest/utest.h" -#include "psa_prot_internal_storage.h" -#include "test_pits.h" - -using namespace utest::v1; - -#define TEST_BUFF_SIZE 16 - -static void pits_test() -{ - psa_its_status_t status = PSA_ITS_SUCCESS; - uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; - uint8_t read_buff[TEST_BUFF_SIZE] = {0}; - struct psa_its_info_t info = {0, PSA_ITS_WRITE_ONCE_FLAG}; - memset(read_buff, 0, TEST_BUFF_SIZE); - - status = test_psa_its_reset(); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - - status = psa_its_get_info(5, &info); - TEST_ASSERT_EQUAL(PSA_ITS_ERROR_KEY_NOT_FOUND, status); - - status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, 0); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - - status = psa_its_get_info(5, &info); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - TEST_ASSERT_EQUAL(TEST_BUFF_SIZE, info.size); - TEST_ASSERT_EQUAL(0, info.flags); - - status = psa_its_get(5, 0, TEST_BUFF_SIZE, read_buff); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - TEST_ASSERT_EQUAL_MEMORY(write_buff, read_buff, TEST_BUFF_SIZE); - - memset(read_buff, 0, TEST_BUFF_SIZE); - status = psa_its_get(5, 1, TEST_BUFF_SIZE, read_buff); - TEST_ASSERT_NOT_EQUAL(PSA_ITS_SUCCESS, status); - - status = psa_its_get(5, 1, TEST_BUFF_SIZE - 1, read_buff); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - TEST_ASSERT_EQUAL_MEMORY(write_buff + 1, read_buff, TEST_BUFF_SIZE - 1); - - status = psa_its_remove(5); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - - status = psa_its_get_info(5, &info); - TEST_ASSERT_EQUAL(PSA_ITS_ERROR_KEY_NOT_FOUND, status); -} - -static void pits_write_once_test() -{ - psa_its_status_t status = PSA_ITS_SUCCESS; - uint8_t write_buff[TEST_BUFF_SIZE] = {0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00}; - uint8_t read_buff[TEST_BUFF_SIZE] = {0}; - struct psa_its_info_t info = {0, 0}; - - status = test_psa_its_reset(); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - - status = psa_its_get_info(5, &info); - TEST_ASSERT_EQUAL(PSA_ITS_ERROR_KEY_NOT_FOUND, status); - - status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, PSA_ITS_WRITE_ONCE_FLAG); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - - info.size = 0; - info.flags = 0; - status = psa_its_get_info(5, &info); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - TEST_ASSERT_EQUAL(TEST_BUFF_SIZE, info.size); - TEST_ASSERT_EQUAL(PSA_ITS_WRITE_ONCE_FLAG, info.flags); - - status = psa_its_get(5, 0, TEST_BUFF_SIZE, read_buff); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - TEST_ASSERT_EQUAL_MEMORY(write_buff, read_buff, TEST_BUFF_SIZE); - - status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, PSA_ITS_WRITE_ONCE_FLAG); - TEST_ASSERT_NOT_EQUAL(PSA_ITS_SUCCESS, status); - - status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, 0); - TEST_ASSERT_NOT_EQUAL(PSA_ITS_SUCCESS, status); - - status = psa_its_remove(5); - TEST_ASSERT_NOT_EQUAL(PSA_ITS_SUCCESS, status); - - info.size = 0; - info.flags = 0; - status = psa_its_get_info(5, &info); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); - TEST_ASSERT_EQUAL(TEST_BUFF_SIZE, info.size); - TEST_ASSERT_EQUAL(PSA_ITS_WRITE_ONCE_FLAG, info.flags); - - status = test_psa_its_reset(); - TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status); -} - -Case cases[] = { - Case("PSA prot internal storage - Basic", pits_test), - Case("PSA prot internal storage - Write-once", pits_write_once_test), -}; - -utest::v1::status_t greentea_test_setup(const size_t number_of_cases) -{ -#ifndef NO_GREENTEA - GREENTEA_SETUP(60, "default_auto"); -#endif - 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/TESTS/psa/spm_client/COMPONENT_NSPE/client_ipc_tests.cpp b/TESTS/psa/spm_client/COMPONENT_NSPE/client_ipc_tests.cpp index 8023b85870c..55ed4751629 100644 --- a/TESTS/psa/spm_client/COMPONENT_NSPE/client_ipc_tests.cpp +++ b/TESTS/psa/spm_client/COMPONENT_NSPE/client_ipc_tests.cpp @@ -19,11 +19,15 @@ #error [NOT_SUPPORTED] SPM tests can run only on SPM-enabled targets #endif // COMPONENT_PSA_SRV_IPC +#ifndef TARGET_MBED_SPM +#error [NOT_SUPPORTED] SPM tests currently only run on MBED_SPM targets +#endif // TARGET_MBED_SPM + #include "mbed.h" #include "greentea-client/test_env.h" #include "unity.h" #include "utest.h" -#include "spm_client.h" +#include "psa/client.h" #include "psa_client_tests_part1_ifs.h" using namespace utest::v1; @@ -37,7 +41,7 @@ using namespace utest::v1; typedef struct th_struct { psa_handle_t handle; - psa_invec_t *iovec_temp; + psa_invec *iovec_temp; uint8_t *expected; uint8_t expected_size; } th_struct_t; @@ -55,7 +59,7 @@ static psa_handle_t client_ipc_tests_connect(uint32_t sid, uint32_t minor_versio static void client_ipc_tests_call( psa_handle_t handle, - psa_invec_t *iovec_temp, + psa_invec *iovec_temp, size_t tx_len, size_t rx_len, uint8_t *expected, @@ -65,7 +69,7 @@ static void client_ipc_tests_call( error_t status = PSA_SUCCESS; uint8_t *response_buf = (uint8_t *)malloc(CLIENT_RSP_BUF_SIZE * sizeof(uint8_t)); memset(response_buf, 0, CLIENT_RSP_BUF_SIZE); - psa_outvec_t resp = {NULL, rx_len}; + psa_outvec resp = {NULL, rx_len}; if (rx_len > 0) { resp.base = response_buf; @@ -105,7 +109,7 @@ void iovec_0_NULL() uint8_t buff1[] = {1, 2, 3, 4, 5}; uint8_t expected_buff[] = {1, 2, 3, 4, 5}; - psa_invec_t iovec_temp[PSA_MAX_IOVEC - 1] = { + psa_invec iovec_temp[PSA_MAX_IOVEC - 1] = { {NULL, 0}, {meta_iovec, sizeof(meta_iovec)}, {buff1, sizeof(buff1)} @@ -128,7 +132,7 @@ void iovec_1_NULL() uint8_t buff1[] = {1, 2, 3, 4, 5}; uint8_t expected_buff[] = {2, 3}; - psa_invec_t iovec_temp[PSA_MAX_IOVEC - 1] = {{meta_iovec, sizeof(meta_iovec)}, + psa_invec iovec_temp[PSA_MAX_IOVEC - 1] = {{meta_iovec, sizeof(meta_iovec)}, {NULL, 0}, {buff1, sizeof(buff1)} }; @@ -150,7 +154,7 @@ void iovec_2_NULL() uint8_t buff1[] = {1, 2, 3, 4, 5}; uint8_t expected_buff[] = {2, 3}; - psa_invec_t iovec_temp[PSA_MAX_IOVEC - 1] = {{meta_iovec, sizeof(meta_iovec)}, + psa_invec iovec_temp[PSA_MAX_IOVEC - 1] = {{meta_iovec, sizeof(meta_iovec)}, {buff1, sizeof(buff1)}, {NULL, 0} }; @@ -164,7 +168,7 @@ void iovec_2_NULL() void in_vec_base_not_NULL_size_0() { uint8_t dummy_buff[] = {1, 2, 3, 4, 5}; - psa_invec_t iovec_temp[1] = { {dummy_buff, 0} }; + psa_invec iovec_temp[1] = { {dummy_buff, 0} }; psa_handle_t handle = client_ipc_tests_connect(PART1_ROT_SRV1, MINOR_VER); @@ -177,7 +181,7 @@ void in_vec_base_not_NULL_size_0() void in_len_0_in_vec_not_NULL() { uint8_t dummy_buff[] = {1, 2, 3, 4, 5}; - psa_invec_t iovec_temp[1] = { {dummy_buff, sizeof(dummy_buff)} }; + psa_invec iovec_temp[1] = { {dummy_buff, sizeof(dummy_buff)} }; psa_handle_t handle = client_ipc_tests_connect(PART1_ROT_SRV1, MINOR_VER); @@ -192,13 +196,13 @@ void out_len_0_outvec_not_NULL() error_t status = PSA_SUCCESS; uint8_t dummy_res[10] = {0}; - psa_outvec_t outvec_temp[1] = {{dummy_res, sizeof(dummy_res)}}; + psa_outvec outvec_temp[1] = {{dummy_res, sizeof(dummy_res)}}; uint8_t dummy_buff[] = {1, 2, 3, 4, 5}; psa_handle_t handle = client_ipc_tests_connect(PART1_ROT_SRV1, MINOR_VER); - psa_invec_t in_vec_temp[2] = { {dummy_buff, sizeof(dummy_buff)}, + psa_invec in_vec_temp[2] = { {dummy_buff, sizeof(dummy_buff)}, {dummy_buff, sizeof(dummy_buff)} }; @@ -219,7 +223,7 @@ void rx_buff_null() uint8_t meta_iovec[2] = {expect_size, off}; uint8_t buff1[] = {1, 2, 3, 4, 5}, buff2[] = {6}; - psa_invec_t iovec_temp[PSA_MAX_IOVEC - 1] = {{meta_iovec, sizeof(meta_iovec)}, + psa_invec iovec_temp[PSA_MAX_IOVEC - 1] = {{meta_iovec, sizeof(meta_iovec)}, {buff1, sizeof(buff1)}, {buff2, sizeof(buff2)} }; @@ -261,7 +265,7 @@ void multiple_call() uint8_t buff2[] = {4, 5, 6}; uint8_t expected_buff[] = {1, 2}; - psa_invec_t iovec_temp[PSA_MAX_IOVEC - 1] = {{meta_iovec, sizeof(meta_iovec)}, + psa_invec iovec_temp[PSA_MAX_IOVEC - 1] = {{meta_iovec, sizeof(meta_iovec)}, {buff1, sizeof(buff1)}, {buff2, sizeof(buff2)} }; @@ -285,7 +289,7 @@ void multiple_call() client_ipc_tests_close(handle); } -static void set_struct(th_struct_t *thr_attr, psa_handle_t handle, psa_invec_t *iovec_temp, uint8_t *expect, uint8_t expected_size) +static void set_struct(th_struct_t *thr_attr, psa_handle_t handle, psa_invec *iovec_temp, uint8_t *expect, uint8_t expected_size) { thr_attr->handle = handle; thr_attr->iovec_temp = iovec_temp; @@ -322,7 +326,7 @@ void multi_thread_diff_handles() uint8_t buff2[] = {4, 5, 6}; uint8_t expected_buff_1[] = {1, 2}; - psa_invec_t iovec_temp_1[PSA_MAX_IOVEC - 1] = {{meta_iovec_1, sizeof(meta_iovec_1)}, + psa_invec iovec_temp_1[PSA_MAX_IOVEC - 1] = {{meta_iovec_1, sizeof(meta_iovec_1)}, {buff1, sizeof(buff1)}, {buff2, sizeof(buff2)} }; @@ -338,7 +342,7 @@ void multi_thread_diff_handles() }; uint8_t expected_buff_2[] = {2, 3}; - psa_invec_t iovec_temp_2[PSA_MAX_IOVEC - 1] = {{meta_iovec_2, sizeof(meta_iovec_2)}, + psa_invec iovec_temp_2[PSA_MAX_IOVEC - 1] = {{meta_iovec_2, sizeof(meta_iovec_2)}, {buff1, sizeof(buff1)}, {buff2, sizeof(buff2)} }; @@ -353,7 +357,7 @@ void multi_thread_diff_handles() }; uint8_t expected_buff_3[] = {3, 4}; - psa_invec_t iovec_temp_3[PSA_MAX_IOVEC - 1] = {{meta_iovec_3, sizeof(meta_iovec_3)}, + psa_invec iovec_temp_3[PSA_MAX_IOVEC - 1] = {{meta_iovec_3, sizeof(meta_iovec_3)}, {buff1, sizeof(buff1)}, {buff2, sizeof(buff2)} }; @@ -408,7 +412,7 @@ void client_close_null_handle() void drop_connection() { psa_handle_t handle = client_ipc_tests_connect(DROP_CONN, DROP_CONN_MINOR_VER); - psa_error_t status = psa_call(handle, NULL, 0, NULL, 0); + psa_status_t status = psa_call(handle, NULL, 0, NULL, 0); TEST_ASSERT_EQUAL_INT(PSA_DROP_CONNECTION, status); status = PSA_SUCCESS; diff --git a/TESTS/psa/spm_client/COMPONENT_SPE/psa_client_tests_part1_partition.c b/TESTS/psa/spm_client/COMPONENT_SPE/TARGET_MBED_SPM/psa_client_tests_part1_partition.c similarity index 99% rename from TESTS/psa/spm_client/COMPONENT_SPE/psa_client_tests_part1_partition.c rename to TESTS/psa/spm_client/COMPONENT_SPE/TARGET_MBED_SPM/psa_client_tests_part1_partition.c index dff2c310450..ec9855f23c2 100644 --- a/TESTS/psa/spm_client/COMPONENT_SPE/psa_client_tests_part1_partition.c +++ b/TESTS/psa/spm_client/COMPONENT_SPE/TARGET_MBED_SPM/psa_client_tests_part1_partition.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -123,3 +123,4 @@ void client_tests_part1_init(spm_partition_t *partition) SPM_PANIC("Failed to create start main thread of partition client_tests_part1!\n"); } } + diff --git a/TESTS/psa/spm_client/COMPONENT_SPE/psa_client_tests_part1_partition.h b/TESTS/psa/spm_client/COMPONENT_SPE/psa_client_tests_part1_partition.h index ebcf6d00d2a..bc5180bb25e 100644 --- a/TESTS/psa/spm_client/COMPONENT_SPE/psa_client_tests_part1_partition.h +++ b/TESTS/psa/spm_client/COMPONENT_SPE/psa_client_tests_part1_partition.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/TESTS/psa/spm_client/COMPONENT_SPE/psa_setup.c b/TESTS/psa/spm_client/COMPONENT_SPE/psa_setup.c index 4c2bf56b647..60e45e42083 100644 --- a/TESTS/psa/spm_client/COMPONENT_SPE/psa_setup.c +++ b/TESTS/psa/spm_client/COMPONENT_SPE/psa_setup.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -29,11 +29,13 @@ #include "cmsis.h" #include "psa_client_tests_part1_partition.h" #include "psa_crypto_srv_partition.h" +#include "psa_platform_partition.h" #include "psa_its_partition.h" extern const uint32_t crypto_srv_external_sids[4]; +extern const uint32_t platform_external_sids[1]; -spm_partition_t g_partitions[3] = { +spm_partition_t g_partitions[4] = { { .partition_id = CLIENT_TESTS_PART1_ID, .thread_id = 0, @@ -56,6 +58,17 @@ spm_partition_t g_partitions[3] = { .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, + { + .partition_id = PLATFORM_ID, + .thread_id = 0, + .flags_rot_srv = PLATFORM_WAIT_ANY_SID_MSK, + .flags_interrupts = 0, + .rot_services = NULL, + .rot_services_count = PLATFORM_ROT_SRV_COUNT, + .extern_sids = platform_external_sids, + .extern_sids_count = PLATFORM_EXT_ROT_SRV_COUNT, + .irq_mapper = NULL, + }, { .partition_id = ITS_ID, .thread_id = 0, @@ -79,6 +92,7 @@ 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 platform_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); uint32_t init_partitions(spm_partition_t **partitions) @@ -89,9 +103,10 @@ uint32_t init_partitions(spm_partition_t **partitions) client_tests_part1_init(&(g_partitions[0])); crypto_srv_init(&(g_partitions[1])); - its_init(&(g_partitions[2])); + platform_init(&(g_partitions[2])); + its_init(&(g_partitions[3])); *partitions = g_partitions; - return 3; + return 4; } diff --git a/TESTS/psa/spm_client/COMPONENT_SPE/server.c b/TESTS/psa/spm_client/COMPONENT_SPE/server.c index df197febdd2..b3419abab27 100644 --- a/TESTS/psa/spm_client/COMPONENT_SPE/server.c +++ b/TESTS/psa/spm_client/COMPONENT_SPE/server.c @@ -15,7 +15,7 @@ * limitations under the License. */ #include -#include "spm_server.h" +#include "psa/service.h" #include "spm_panic.h" #include "psa_client_tests_part1_partition.h" 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 deleted file mode 100644 index 487d99cfffa..00000000000 --- a/TESTS/psa/spm_client/TARGET_FUTURE_SEQUANA_PSA/spm_client.hex +++ /dev/null @@ -1,4582 +0,0 @@ -: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_client/psa_client_tests_part1_ifs.h b/TESTS/psa/spm_client/psa_client_tests_part1_ifs.h index 6c709eb2a51..969bd642182 100644 --- a/TESTS/psa/spm_client/psa_client_tests_part1_ifs.h +++ b/TESTS/psa/spm_client/psa_client_tests_part1_ifs.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/TESTS/psa/spm_server/COMPONENT_NSPE/main.cpp b/TESTS/psa/spm_server/COMPONENT_NSPE/main.cpp index d4b9a7e7ddf..242b6529fd7 100644 --- a/TESTS/psa/spm_server/COMPONENT_NSPE/main.cpp +++ b/TESTS/psa/spm_server/COMPONENT_NSPE/main.cpp @@ -19,11 +19,15 @@ #error [NOT_SUPPORTED] SPM tests can run only on SPM-enabled targets #endif // COMPONENT_PSA_SRV_IPC +#ifndef TARGET_MBED_SPM +#error [NOT_SUPPORTED] SPM tests currently only run on MBED_SPM targets +#endif // TARGET_MBED_SPM + #include "mbed.h" #include "greentea-client/test_env.h" #include "unity.h" #include "utest.h" -#include "spm_client.h" +#include "psa/client.h" #include "psa_server_test_part1_ifs.h" #include "server_tests.h" using namespace utest::v1; @@ -57,7 +61,7 @@ PSA_TEST_CLIENT(identity_during_connect) PSA_TEST_CLIENT(identity_during_call) { - psa_error_t status = PSA_SUCCESS; + psa_status_t status = PSA_SUCCESS; psa_handle_t test_handle = psa_connect(TEST, TEST_ROT_SRV_MINOR); TEST_ASSERT(test_handle > 0); @@ -69,8 +73,8 @@ PSA_TEST_CLIENT(identity_during_call) PSA_TEST_CLIENT(msg_size_assertion) { - psa_error_t status = PSA_SUCCESS; - psa_invec_t data[PSA_MAX_IOVEC] = { + psa_status_t status = PSA_SUCCESS; + psa_invec data[PSA_MAX_IOVEC] = { {test_str, 4}, {test_str + 5, 6}, {test_str + 13, 1}, @@ -93,8 +97,8 @@ PSA_TEST_CLIENT(reject_connection) PSA_TEST_CLIENT(read_at_outofboud_offset) { - psa_error_t status = PSA_SUCCESS; - psa_invec_t data = { test_str, sizeof(test_str) }; + psa_status_t status = PSA_SUCCESS; + psa_invec data = { test_str, sizeof(test_str) }; psa_handle_t test_handle = psa_connect(TEST, TEST_ROT_SRV_MINOR); TEST_ASSERT(test_handle > 0); @@ -106,8 +110,8 @@ PSA_TEST_CLIENT(read_at_outofboud_offset) PSA_TEST_CLIENT(msg_read_truncation) { - psa_error_t status = PSA_SUCCESS; - psa_invec_t data[3] = { + psa_status_t status = PSA_SUCCESS; + psa_invec data[3] = { {test_str, 4}, {test_str + 5, 6}, {test_str + 13, 1} @@ -123,8 +127,8 @@ PSA_TEST_CLIENT(msg_read_truncation) PSA_TEST_CLIENT(skip_zero) { - psa_error_t status = PSA_SUCCESS; - psa_invec_t data = { test_str, sizeof(test_str) }; + psa_status_t status = PSA_SUCCESS; + psa_invec data = { test_str, sizeof(test_str) }; psa_handle_t test_handle = psa_connect(TEST, TEST_ROT_SRV_MINOR); TEST_ASSERT(test_handle > 0); @@ -136,8 +140,8 @@ PSA_TEST_CLIENT(skip_zero) PSA_TEST_CLIENT(skip_some) { - psa_error_t status = PSA_SUCCESS; - psa_invec_t data = { test_str, sizeof(test_str) }; + psa_status_t status = PSA_SUCCESS; + psa_invec data = { test_str, sizeof(test_str) }; psa_handle_t test_handle = psa_connect(TEST, TEST_ROT_SRV_MINOR); TEST_ASSERT(test_handle > 0); @@ -149,8 +153,8 @@ PSA_TEST_CLIENT(skip_some) PSA_TEST_CLIENT(skip_more_than_left) { - psa_error_t status = PSA_SUCCESS; - psa_invec_t data = { test_str, 8 }; + psa_status_t status = PSA_SUCCESS; + psa_invec data = { test_str, 8 }; psa_handle_t test_handle = psa_connect(TEST, TEST_ROT_SRV_MINOR); TEST_ASSERT(test_handle > 0); @@ -164,8 +168,8 @@ PSA_TEST_CLIENT(rhandle_factorial) { uint32_t secure_value = 0; uint32_t value = 1; - psa_error_t status = PSA_SUCCESS; - psa_outvec_t resp = { &secure_value, sizeof(secure_value) }; + psa_status_t status = PSA_SUCCESS; + psa_outvec resp = { &secure_value, sizeof(secure_value) }; psa_handle_t test_handle = psa_connect(TEST, TEST_ROT_SRV_MINOR); TEST_ASSERT(test_handle > 0); @@ -185,12 +189,12 @@ PSA_TEST_CLIENT(cross_partition_call) size_t in_len = strlen(cross_part_buf); TEST_ASSERT_MESSAGE(test_handle > 0, "psa_connect() failed"); - psa_invec_t iovec = { cross_part_buf, in_len }; + psa_invec iovec = { cross_part_buf, in_len }; uint8_t *response_buf = (uint8_t *)malloc(sizeof(uint8_t) * OUT_BUFFER_SIZE); memset(response_buf, 0, OUT_BUFFER_SIZE); - psa_outvec_t resp = { response_buf, OUT_BUFFER_SIZE }; + psa_outvec resp = { response_buf, OUT_BUFFER_SIZE }; - psa_error_t status = psa_call(test_handle, &iovec, 1, &resp, 1); + psa_status_t status = psa_call(test_handle, &iovec, 1, &resp, 1); TEST_ASSERT_EQUAL(PSA_SUCCESS, status); TEST_ASSERT_EQUAL_STRING_LEN("MPS emoclew dna olleHMPS emoclew dna olleH", response_buf, in_len * 2); free(response_buf); @@ -204,7 +208,7 @@ PSA_TEST_CLIENT(doorbell_test) psa_handle_t test_handle = psa_connect(TEST, TEST_ROT_SRV_MINOR); TEST_ASSERT_MESSAGE(test_handle > 0, "psa_connect() failed"); - psa_error_t status = psa_call(test_handle, NULL, 0, NULL, 0); + psa_status_t status = psa_call(test_handle, NULL, 0, NULL, 0); TEST_ASSERT_EQUAL(PSA_SUCCESS, status); psa_close(test_handle); @@ -232,9 +236,9 @@ void spm_teardown(const size_t passed, const size_t failed, const failure_t fail utest::v1::status_t spm_case_setup(const Case *const source, const size_t index_of_case) { - psa_error_t status = PSA_SUCCESS; + psa_status_t status = PSA_SUCCESS; test_action_t action = START_TEST; - psa_invec_t data = {&action, sizeof(action)}; + psa_invec data = {&action, sizeof(action)}; status = psa_call(control_handle, &data, 1, NULL, 0); TEST_ASSERT_EQUAL(PSA_SUCCESS, status); @@ -244,11 +248,11 @@ utest::v1::status_t spm_case_setup(const Case *const source, const size_t index_ utest::v1::status_t spm_case_teardown(const Case *const source, const size_t passed, const size_t failed, const failure_t reason) { - psa_error_t status = PSA_SUCCESS; - psa_error_t test_status = PSA_SUCCESS; + psa_status_t status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; test_action_t action = GET_TEST_RESULT; - psa_invec_t data = {&action, sizeof(action)}; - psa_outvec_t resp = {&test_status, sizeof(test_status)}; + psa_invec data = {&action, sizeof(action)}; + psa_outvec resp = {&test_status, sizeof(test_status)}; // Wait for psa_close to finish on server side osDelay(50); diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part1_partition.c b/TESTS/psa/spm_server/COMPONENT_SPE/TARGET_MBED_SPM/psa_server_test_part1_partition.c similarity index 98% rename from TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part1_partition.c rename to TESTS/psa/spm_server/COMPONENT_SPE/TARGET_MBED_SPM/psa_server_test_part1_partition.c index 8d1b0a53332..9f30cb97988 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part1_partition.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/TARGET_MBED_SPM/psa_server_test_part1_partition.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -117,3 +117,4 @@ void server_test_part1_init(spm_partition_t *partition) SPM_PANIC("Failed to create start main thread of partition server_test_part1!\n"); } } + diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part2_partition.c b/TESTS/psa/spm_server/COMPONENT_SPE/TARGET_MBED_SPM/psa_server_test_part2_partition.c similarity index 98% rename from TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part2_partition.c rename to TESTS/psa/spm_server/COMPONENT_SPE/TARGET_MBED_SPM/psa_server_test_part2_partition.c index a4fc7572c8a..5ca6a0f3a91 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part2_partition.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/TARGET_MBED_SPM/psa_server_test_part2_partition.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -111,3 +111,4 @@ void server_test_part2_init(spm_partition_t *partition) SPM_PANIC("Failed to create start main thread of partition server_test_part2!\n"); } } + diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/partition.c b/TESTS/psa/spm_server/COMPONENT_SPE/partition.c index 0c78bde8afd..34d95958ab2 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/partition.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/partition.c @@ -16,7 +16,7 @@ */ #include "string.h" -#include "spm_server.h" +#include "psa/service.h" #include "spm_panic.h" #include "psa_server_test_part1_partition.h" #include "server_tests.h" @@ -37,8 +37,8 @@ static void init_num_of_tests() void part1_main(void *ptr) { uint32_t signals = 0; - psa_error_t test_status = PSA_SUCCESS; // status of the api calls during the test - psa_error_t test_result = PSA_SUCCESS; // result of the critical section of the test + psa_status_t test_status = PSA_SUCCESS; // status of the api calls during the test + psa_status_t test_result = PSA_SUCCESS; // result of the critical section of the test test_action_t action; uint32_t test_idx = 0; diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/partition2.c b/TESTS/psa/spm_server/COMPONENT_SPE/partition2.c index e5972079ba0..fe1d4740592 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/partition2.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/partition2.c @@ -17,7 +17,7 @@ #include #include "cmsis_os2.h" -#include "spm_server.h" +#include "psa/service.h" #include "spm_panic.h" #include "psa_server_test_part2_partition.h" diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part1_partition.h b/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part1_partition.h index 2a74646e20a..febd5de728f 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part1_partition.h +++ b/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part1_partition.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part2_partition.h b/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part2_partition.h index 97fb77ffd20..9751e389bf9 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part2_partition.h +++ b/TESTS/psa/spm_server/COMPONENT_SPE/psa_server_test_part2_partition.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/psa_setup.c b/TESTS/psa/spm_server/COMPONENT_SPE/psa_setup.c index 3009a4f03be..b7c7b78f86e 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/psa_setup.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/psa_setup.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -30,12 +30,14 @@ #include "psa_server_test_part1_partition.h" #include "psa_server_test_part2_partition.h" #include "psa_crypto_srv_partition.h" +#include "psa_platform_partition.h" #include "psa_its_partition.h" extern const uint32_t server_test_part1_external_sids[2]; extern const uint32_t crypto_srv_external_sids[4]; +extern const uint32_t platform_external_sids[1]; -spm_partition_t g_partitions[4] = { +spm_partition_t g_partitions[5] = { { .partition_id = SERVER_TEST_PART1_ID, .thread_id = 0, @@ -69,6 +71,17 @@ spm_partition_t g_partitions[4] = { .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, + { + .partition_id = PLATFORM_ID, + .thread_id = 0, + .flags_rot_srv = PLATFORM_WAIT_ANY_SID_MSK, + .flags_interrupts = 0, + .rot_services = NULL, + .rot_services_count = PLATFORM_ROT_SRV_COUNT, + .extern_sids = platform_external_sids, + .extern_sids_count = PLATFORM_EXT_ROT_SRV_COUNT, + .irq_mapper = NULL, + }, { .partition_id = ITS_ID, .thread_id = 0, @@ -93,6 +106,7 @@ const uint32_t mem_region_count = 0; 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 platform_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); uint32_t init_partitions(spm_partition_t **partitions) @@ -104,9 +118,10 @@ uint32_t init_partitions(spm_partition_t **partitions) server_test_part1_init(&(g_partitions[0])); server_test_part2_init(&(g_partitions[1])); crypto_srv_init(&(g_partitions[2])); - its_init(&(g_partitions[3])); + platform_init(&(g_partitions[3])); + its_init(&(g_partitions[4])); *partitions = g_partitions; - return 4; + return 5; } diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/server_tests.h b/TESTS/psa/spm_server/COMPONENT_SPE/server_tests.h index 99002eb6b36..437f10609ef 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/server_tests.h +++ b/TESTS/psa/spm_server/COMPONENT_SPE/server_tests.h @@ -28,13 +28,13 @@ typedef struct factorial_data { uint32_t val; } factorial_data_t; -typedef psa_error_t (*psa_test_server_side_func)(psa_error_t *); +typedef psa_status_t (*psa_test_server_side_func)(psa_status_t *); #define PSA_TEST_ERROR (-1L) #define PSA_TEST_CLIENT_NAME(name) psa_test_client_side_ ## name #define PSA_TEST_SERVER_NAME(name) psa_test_server_side_ ## name #define PSA_TEST_CLIENT(name) void PSA_TEST_CLIENT_NAME(name) (void) -#define PSA_TEST_SERVER(name) psa_error_t PSA_TEST_SERVER_NAME(name) (psa_error_t* status_ptr) +#define PSA_TEST_SERVER(name) psa_status_t PSA_TEST_SERVER_NAME(name) (psa_status_t *status_ptr) #define PSA_TEST(name) \ PSA_TEST_CLIENT(name); \ diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/tests.c b/TESTS/psa/spm_server/COMPONENT_SPE/tests.c index c0b4b4d04d0..9aec3a67eed 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/tests.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/tests.c @@ -16,8 +16,8 @@ */ #include "string.h" -#include "spm_client.h" -#include "spm_server.h" +#include "psa/client.h" +#include "psa/service.h" #include "spm_panic.h" #include "psa_server_test_part1_partition.h" #include "psa_server_test_part2_ifs.h" @@ -27,9 +27,9 @@ * Process a generic connect message to TEST ROT_SRV. * @return PSA_SUCCESS or negative error code if failed. */ -static psa_error_t process_connect_request(void) +static psa_status_t process_connect_request(void) { - psa_error_t res = PSA_SUCCESS; + psa_status_t res = PSA_SUCCESS; psa_msg_t msg = {0}; uint32_t signals = psa_wait_any(PSA_BLOCK); if ((signals & TEST_MSK) == 0) { @@ -50,9 +50,9 @@ static psa_error_t process_connect_request(void) * Process a generic disconnect message to TEST ROT_SRV. * @return PSA_SUCCESS or negative error code if failed. */ -static psa_error_t process_disconnect_request(void) +static psa_status_t process_disconnect_request(void) { - psa_error_t res = PSA_SUCCESS; + psa_status_t res = PSA_SUCCESS; psa_msg_t msg = {0}; uint32_t signals = psa_wait_any(PSA_BLOCK); if ((signals & TEST_MSK) == 0) { @@ -71,7 +71,7 @@ static psa_error_t process_disconnect_request(void) PSA_TEST_SERVER(wait_timeout) { - psa_error_t test_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; uint32_t signals = psa_wait_any(7); *status_ptr = ((signals & TEST_MSK) == 0) ? PSA_SUCCESS : PSA_TEST_ERROR;; @@ -89,8 +89,8 @@ PSA_TEST_SERVER(wait_timeout) PSA_TEST_SERVER(identity_during_connect) { - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; int32_t identity = 0; @@ -117,8 +117,8 @@ PSA_TEST_SERVER(identity_during_connect) PSA_TEST_SERVER(identity_during_call) { - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; int32_t identity = 0; uint32_t signals = 0; @@ -151,8 +151,8 @@ PSA_TEST_SERVER(identity_during_call) PSA_TEST_SERVER(msg_size_assertion) { - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; uint32_t signals = 0; size_t read_size = 0; @@ -199,7 +199,7 @@ PSA_TEST_SERVER(msg_size_assertion) PSA_TEST_SERVER(reject_connection) { - psa_error_t res = PSA_SUCCESS; + psa_status_t res = PSA_SUCCESS; psa_msg_t msg = {0}; uint32_t signals = psa_wait_any(PSA_BLOCK); if ((signals & TEST_MSK) == 0) { @@ -220,8 +220,8 @@ PSA_TEST_SERVER(read_at_outofboud_offset) { uint32_t signals = 0; psa_msg_t msg = {0}; - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; uint32_t buff = 52; test_status = process_connect_request(); @@ -255,8 +255,8 @@ PSA_TEST_SERVER(read_at_outofboud_offset) PSA_TEST_SERVER(msg_read_truncation) { - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; uint32_t signals = 0; size_t read_size = 0; @@ -301,8 +301,8 @@ PSA_TEST_SERVER(msg_read_truncation) PSA_TEST_SERVER(skip_zero) { - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; uint32_t signals = 0; size_t read_size = 0; @@ -347,8 +347,8 @@ PSA_TEST_SERVER(skip_zero) PSA_TEST_SERVER(skip_some) { - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; uint32_t signals = 0; size_t read_size1 = 0; @@ -396,8 +396,8 @@ PSA_TEST_SERVER(skip_some) PSA_TEST_SERVER(skip_more_than_left) { - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; uint32_t signals = 0; size_t read_size1 = 0; @@ -537,9 +537,9 @@ PSA_TEST_SERVER(cross_partition_call) { uint32_t signals = 0; psa_msg_t msg = {0}; - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; - psa_error_t partition_call_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; + psa_status_t partition_call_status = PSA_SUCCESS; uint32_t data_read = 0; uint32_t str_len = 0; char *buff = malloc(sizeof(char) * 60); @@ -575,9 +575,9 @@ PSA_TEST_SERVER(cross_partition_call) memcpy(buff + str_len, buff, str_len); data_read *= 2; - psa_invec_t data = { buff, data_read }; + psa_invec data = { buff, data_read }; - psa_outvec_t resp = { buff, data_read }; + psa_outvec resp = { buff, data_read }; psa_handle_t conn_handle = psa_connect(ROT_SRV_REVERSE, 5); if (conn_handle <= 0) { partition_call_status = PSA_TEST_ERROR; @@ -608,9 +608,9 @@ PSA_TEST_SERVER(doorbell_test) { uint32_t signals = 0; psa_msg_t msg = {0}; - psa_error_t test_status = PSA_SUCCESS; - psa_error_t disconnect_status = PSA_SUCCESS; - psa_error_t partition_call_status = PSA_SUCCESS; + psa_status_t test_status = PSA_SUCCESS; + psa_status_t disconnect_status = PSA_SUCCESS; + psa_status_t partition_call_status = PSA_SUCCESS; test_status = process_connect_request(); 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 deleted file mode 100644 index 2bf433ffa47..00000000000 --- a/TESTS/psa/spm_server/TARGET_FUTURE_SEQUANA_PSA/spm_server.hex +++ /dev/null @@ -1,4682 +0,0 @@ -: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_server/psa_server_test_part1_ifs.h b/TESTS/psa/spm_server/psa_server_test_part1_ifs.h index 1d1d5fb0775..1b306884432 100644 --- a/TESTS/psa/spm_server/psa_server_test_part1_ifs.h +++ b/TESTS/psa/spm_server/psa_server_test_part1_ifs.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/TESTS/psa/spm_server/psa_server_test_part2_ifs.h b/TESTS/psa/spm_server/psa_server_test_part2_ifs.h index 6b553419b0a..cc3c3702c6f 100644 --- a/TESTS/psa/spm_server/psa_server_test_part2_ifs.h +++ b/TESTS/psa/spm_server/psa_server_test_part2_ifs.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/TESTS/psa/spm_server/server_tests.h b/TESTS/psa/spm_server/server_tests.h index 99002eb6b36..437f10609ef 100644 --- a/TESTS/psa/spm_server/server_tests.h +++ b/TESTS/psa/spm_server/server_tests.h @@ -28,13 +28,13 @@ typedef struct factorial_data { uint32_t val; } factorial_data_t; -typedef psa_error_t (*psa_test_server_side_func)(psa_error_t *); +typedef psa_status_t (*psa_test_server_side_func)(psa_status_t *); #define PSA_TEST_ERROR (-1L) #define PSA_TEST_CLIENT_NAME(name) psa_test_client_side_ ## name #define PSA_TEST_SERVER_NAME(name) psa_test_server_side_ ## name #define PSA_TEST_CLIENT(name) void PSA_TEST_CLIENT_NAME(name) (void) -#define PSA_TEST_SERVER(name) psa_error_t PSA_TEST_SERVER_NAME(name) (psa_error_t* status_ptr) +#define PSA_TEST_SERVER(name) psa_status_t PSA_TEST_SERVER_NAME(name) (psa_status_t *status_ptr) #define PSA_TEST(name) \ PSA_TEST_CLIENT(name); \ diff --git a/TESTS/psa/spm_smoke/COMPONENT_NSPE/main.cpp b/TESTS/psa/spm_smoke/COMPONENT_NSPE/main.cpp index 67e386601ef..ac14680d378 100644 --- a/TESTS/psa/spm_smoke/COMPONENT_NSPE/main.cpp +++ b/TESTS/psa/spm_smoke/COMPONENT_NSPE/main.cpp @@ -19,12 +19,17 @@ #ifndef COMPONENT_PSA_SRV_IPC #error [NOT_SUPPORTED] SPM tests can run only on SPM-enabled targets #endif // COMPONENT_PSA_SRV_IPC + +#ifndef TARGET_MBED_SPM +#error [NOT_SUPPORTED] SPM tests currently only run on MBED_SPM targets +#endif // TARGET_MBED_SPM + /* -------------------------------------- Includes ----------------------------------- */ #include "greentea-client/test_env.h" #include "unity.h" #include "utest.h" -#include "spm_client.h" +#include "psa/client.h" #include "psa_smoke_test_part1_ifs.h" using namespace utest::v1; @@ -47,7 +52,7 @@ void example_main(void) TEST_ASSERT_MESSAGE(conn_handle > 0, "psa_connect() failed"); - psa_invec_t iovec[PSA_MAX_IOVEC - 1] = { + psa_invec iovec[PSA_MAX_IOVEC - 1] = { { msg_buf, 6 }, { msg_buf + 6, 12 }, { msg_buf + 18, 4 } @@ -55,9 +60,9 @@ void example_main(void) uint8_t *response_buf = (uint8_t *)malloc(sizeof(uint8_t) * CLIENT_RSP_BUF_SIZE); memset(response_buf, 0, CLIENT_RSP_BUF_SIZE); - psa_outvec_t outvec = {response_buf, CLIENT_RSP_BUF_SIZE}; + psa_outvec outvec = {response_buf, CLIENT_RSP_BUF_SIZE}; - psa_error_t status = psa_call(conn_handle, iovec, PSA_MAX_IOVEC - 1, &outvec, 1); + psa_status_t status = psa_call(conn_handle, iovec, PSA_MAX_IOVEC - 1, &outvec, 1); TEST_ASSERT_MESSAGE(PSA_SUCCESS == status, "psa_call() failed"); TEST_ASSERT_EQUAL_STRING(CLIENT_EXPECTED_RESPONSE, response_buf); diff --git a/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_smoke_test_part1_partition.c b/TESTS/psa/spm_smoke/COMPONENT_SPE/TARGET_MBED_SPM/psa_smoke_test_part1_partition.c similarity index 98% rename from TESTS/psa/spm_smoke/COMPONENT_SPE/psa_smoke_test_part1_partition.c rename to TESTS/psa/spm_smoke/COMPONENT_SPE/TARGET_MBED_SPM/psa_smoke_test_part1_partition.c index d80f58e41b2..fcafcc876f8 100644 --- a/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_smoke_test_part1_partition.c +++ b/TESTS/psa/spm_smoke/COMPONENT_SPE/TARGET_MBED_SPM/psa_smoke_test_part1_partition.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -99,3 +99,4 @@ void smoke_test_part1_init(spm_partition_t *partition) SPM_PANIC("Failed to create start main thread of partition smoke_test_part1!\n"); } } + diff --git a/TESTS/psa/spm_smoke/COMPONENT_SPE/partition1.c b/TESTS/psa/spm_smoke/COMPONENT_SPE/partition1.c index 9cd19d6a1bc..07c28a40782 100644 --- a/TESTS/psa/spm_smoke/COMPONENT_SPE/partition1.c +++ b/TESTS/psa/spm_smoke/COMPONENT_SPE/partition1.c @@ -20,7 +20,7 @@ #include #include "cmsis_os2.h" -#include "spm_server.h" +#include "psa/service.h" #include "spm_panic.h" #include "psa_smoke_test_part1_partition.h" diff --git a/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_setup.c b/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_setup.c index 52afd65f81e..116eb77a9c3 100644 --- a/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_setup.c +++ b/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_setup.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -29,11 +29,13 @@ #include "cmsis.h" #include "psa_smoke_test_part1_partition.h" #include "psa_crypto_srv_partition.h" +#include "psa_platform_partition.h" #include "psa_its_partition.h" extern const uint32_t crypto_srv_external_sids[4]; +extern const uint32_t platform_external_sids[1]; -spm_partition_t g_partitions[3] = { +spm_partition_t g_partitions[4] = { { .partition_id = SMOKE_TEST_PART1_ID, .thread_id = 0, @@ -56,6 +58,17 @@ spm_partition_t g_partitions[3] = { .extern_sids_count = CRYPTO_SRV_EXT_ROT_SRV_COUNT, .irq_mapper = NULL, }, + { + .partition_id = PLATFORM_ID, + .thread_id = 0, + .flags_rot_srv = PLATFORM_WAIT_ANY_SID_MSK, + .flags_interrupts = 0, + .rot_services = NULL, + .rot_services_count = PLATFORM_ROT_SRV_COUNT, + .extern_sids = platform_external_sids, + .extern_sids_count = PLATFORM_EXT_ROT_SRV_COUNT, + .irq_mapper = NULL, + }, { .partition_id = ITS_ID, .thread_id = 0, @@ -79,6 +92,7 @@ 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 platform_init(spm_partition_t *partition); void its_init(spm_partition_t *partition); uint32_t init_partitions(spm_partition_t **partitions) @@ -89,9 +103,10 @@ uint32_t init_partitions(spm_partition_t **partitions) smoke_test_part1_init(&(g_partitions[0])); crypto_srv_init(&(g_partitions[1])); - its_init(&(g_partitions[2])); + platform_init(&(g_partitions[2])); + its_init(&(g_partitions[3])); *partitions = g_partitions; - return 3; + return 4; } diff --git a/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_smoke_test_part1_partition.h b/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_smoke_test_part1_partition.h index d57f5178551..474b08ad654 100644 --- a/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_smoke_test_part1_partition.h +++ b/TESTS/psa/spm_smoke/COMPONENT_SPE/psa_smoke_test_part1_partition.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * 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 deleted file mode 100644 index 10e0ef96e2d..00000000000 --- a/TESTS/psa/spm_smoke/TARGET_FUTURE_SEQUANA_PSA/spm_smoke.hex +++ /dev/null @@ -1,4590 +0,0 @@ -: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/TESTS/psa/spm_smoke/psa_smoke_test_part1_ifs.h b/TESTS/psa/spm_smoke/psa_smoke_test_part1_ifs.h index 6b36fcd4e1e..c15708783fd 100644 --- a/TESTS/psa/spm_smoke/psa_smoke_test_part1_ifs.h +++ b/TESTS/psa/spm_smoke/psa_smoke_test_part1_ifs.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/TEST_APPS/device/nfcapp/NFCCommands.cpp b/TEST_APPS/device/nfcapp/NFCCommands.cpp new file mode 100644 index 00000000000..d9c6a609f1c --- /dev/null +++ b/TEST_APPS/device/nfcapp/NFCCommands.cpp @@ -0,0 +1,289 @@ +/* + * 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 +#include +#include +#include +#include +#include "mbed_events.h" +#include "mbed-client-cli/ns_cmdline.h" +#include "rtos/Thread.h" +#include "NFCTestShim.h" +#include "NFCCommands.h" + +#if MBED_CONF_NFCEEPROM +#include "NFCEEPROMDriver.h" +#include "NFCProcessEEPROM.h" +#endif + +using mbed::nfc::nfc_rf_protocols_bitmask_t; + +events::EventQueue HandleTestCommand::_nfcQueue; + +rtos::Thread nfcThread; +bool human_trace_enabled = true; + +NFCTestShim *HandleTestCommand::new_testshim() +{ +#if MBED_CONF_NFCEEPROM + mbed::nfc::NFCEEPROMDriver &eeprom_driver = get_eeprom_driver(_nfcQueue); + + return ((NFCTestShim *)(new NFCProcessEEPROM(_nfcQueue, eeprom_driver))); +#else + return ((NFCTestShim *)(new NFCProcessController(_nfcQueue))); +#endif // EEPROM + +} + +void HandleTestCommand::nfc_routine() +{ + _nfcQueue.dispatch_forever(); +} + +void trace_printf(const char *fmt, ...) +{ + if (human_trace_enabled) { + va_list ap; + va_start(ap, fmt); + cmd_vprintf(fmt, ap); + va_end(ap); + } +} + +HandleTestCommand::HandleTestCommand() +{ + osStatus status = nfcThread.start(mbed::callback(&HandleTestCommand::nfc_routine)); + MBED_ASSERT(status == osOK); +} + +int HandleTestCommand::cmd_get_last_nfc_error(int argc, char *argv[]) +{ + _nfcQueue.call(NFCTestShim::cmd_get_last_nfc_error); + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +/** returns compile time flag if NFC EEPROM was compiled */ +int HandleTestCommand::cmd_get_conf_nfceeprom(int argc, char *argv[]) +{ + _nfcQueue.call(NFCTestShim::cmd_get_conf_nfceeprom); + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + + + +int HandleTestCommand::cmd_set_trace(int argc, char *argv[]) +{ + human_trace_enabled = false; + if (argc > 1) { + static char buffer[7]; + char *p_buffer = buffer; + strncpy(buffer, argv[1], sizeof(buffer) - 1); + buffer[sizeof(buffer) - 1] = 0; + while (*p_buffer) { + *p_buffer = toupper(*p_buffer); + p_buffer++; + } + cmd_printf(buffer); + human_trace_enabled = (0 == strcmp(buffer, "TRUE")) || (0 == strcmp(buffer, "1")) || (0 == strcmp(buffer, "ON")); + } + cmd_printf("set trace '%s'", (human_trace_enabled ? "true" : "false")); + return (CMDLINE_RETCODE_SUCCESS); +} + + +//////////////////////////////////////////////////////////////////////////////////// + +int HandleTestCommand::cmd_set_last_nfc_error(int argc, char *argv[]) +{ + if (argc <= 1) { + cmd_printf("setlastnfcerror() invalid parameter(s)\r\n"); + return (CMDLINE_RETCODE_INVALID_PARAMETERS); + } else { + int value = strtol(argv[1], NULL, 10); + _nfcQueue.call(NFCTestShim::cmd_set_last_nfc_error, value); + } + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + + +int HandleTestCommand::cmd_get_max_ndef(int argc, char *argv[]) +{ + if (pNFC_Test_Shim) { + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_get_max_ndef); + return CMDLINE_RETCODE_EXCUTING_CONTINUE; + } + return CMDLINE_RETCODE_FAIL; +} + + +int HandleTestCommand::cmd_init_nfc(int argc, char *argv[]) +{ + if (pNFC_Test_Shim) { + cmd_printf("WARN init called again!\r\n"); // only legal here, if eeprom driver stops talking + } else { + pNFC_Test_Shim = new_testshim(); + } + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_init); + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +int HandleTestCommand::cmd_read_message(int argc, char *argv[]) +{ + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_read_nfc_contents); + + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +int HandleTestCommand::cmd_set_smartposter(int argc, char *argv[]) +{ + // args are "setsmartposter", "" + if (argc <= 1) { + cmd_printf("setlastnfcerror() invalid parameter(s)\r\n"); + return (CMDLINE_RETCODE_INVALID_PARAMETERS); + } else { + // parse arg and queue it up + char *uri = (char *) malloc(strlen(argv[1]) + 1); + if (uri) { + strcpy(uri, argv[1]); + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_set_smartposter, + uri); // called thread must free + } else { + cmd_printf("WARN out of memory!\r\n"); + return (CMDLINE_RETCODE_FAIL); + } + } + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +int HandleTestCommand::cmd_erase(int argc, char *argv[]) +{ + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_erase); + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +int HandleTestCommand::cmd_write_long_ndef_message(int argc, char *argv[]) +{ + size_t length, idx, sourceLength; + static const char alphabet[] = "thequickbrownfoxjumpedoverthelazydog"; + char *data; + const char *sourceMessage; + + // expect 2 or 3 args " [optional-text]" + if (argc < 2) { + cmd_printf("supply length of message\r\n"); + return (CMDLINE_RETCODE_INVALID_PARAMETERS); + } + + int converted = sscanf(argv[1], "%d", &length); + if (1 != converted) { + cmd_printf("Cannot convert value to int\r\n"); + return (CMDLINE_RETCODE_INVALID_PARAMETERS); + } + // check that it would not overflow + if (length > MBED_CONF_APP_TEST_NDEF_MSG_MAX) { + cmd_printf("Buffer length may not exceed %d !\r\n", (int)MBED_CONF_APP_TEST_NDEF_MSG_MAX); + return (CMDLINE_RETCODE_FAIL); + } + + data = (char *) malloc(length + 1); + if (!data) { + cmd_printf("WARN out of memory!\r\n"); + return (CMDLINE_RETCODE_FAIL); + } + if (argc > 2) { + // user provided text to copy into text NDEF record + sourceMessage = argv[2]; + } else { + // use our internal default message to copy into the text NDEF + sourceMessage = alphabet; + } + sourceLength = strlen(sourceMessage); + for (idx = 0; idx < length; idx++) { + data[idx] = sourceMessage[idx % sourceLength]; + } + data[length] = '\0'; + + // method must release buffer + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_write_long, data); + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +int HandleTestCommand::cmd_start_discovery(int argc, char *argv[]) +{ + if ((argc > 1) && (0 == strcmp(argv[1], "man"))) { + trace_printf("User must restart discovery manually()\r\n"); + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_start_discovery, false); + } else { + trace_printf("App will restart discovery loop on auto()\r\n"); + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_start_discovery, true); + } + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +int HandleTestCommand::cmd_stop_discovery(int argc, char *argv[]) +{ + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_stop_discovery); + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +int HandleTestCommand::cmd_get_supported_rf_protocols(int argc, char *argv[]) +{ + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_get_rf_protocols); + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + +bool HandleTestCommand::set_protocol_target( + nfc_rf_protocols_bitmask_t &bitmask, const char *protocolName) +{ + bool parsed = false; + if (0 == strcmp(protocolName, "t1t")) { + parsed = bitmask.target_t1t = true; + } + if (0 == strcmp(protocolName, "t2t")) { + parsed = bitmask.target_t2t = true; + } + if (0 == strcmp(protocolName, "t3t")) { + parsed = bitmask.target_t3t = true; + } + if (0 == strcmp(protocolName, "t5t")) { + parsed = bitmask.target_t5t = true; + } + if (0 == strcmp(protocolName, "isodep")) { + parsed = bitmask.target_iso_dep = true; + } + if (0 == strcmp(protocolName, "nfcdep")) { + parsed = bitmask.target_nfc_dep = true; + } + return (parsed); +} + +int HandleTestCommand::cmd_configure_rf_protocols(int argc, char *argv[]) +{ + nfc_rf_protocols_bitmask_t protocols = { 0 }; + + int argindex = argc; + while (argindex > 1) { + if (!set_protocol_target(protocols, argv[argindex - 1])) { + cmd_printf("Unknown protocol %s", argv[argindex - 1]); + return (CMDLINE_RETCODE_INVALID_PARAMETERS); + } + argindex--; + } + _nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_configure_rf_protocols, + protocols); + return (CMDLINE_RETCODE_EXCUTING_CONTINUE); +} + diff --git a/TEST_APPS/device/nfcapp/NFCCommands.h b/TEST_APPS/device/nfcapp/NFCCommands.h new file mode 100644 index 00000000000..ffa9746f3ec --- /dev/null +++ b/TEST_APPS/device/nfcapp/NFCCommands.h @@ -0,0 +1,112 @@ +/* + * 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 _NFCCOMMANDS_H_INCLUDED +#define _NFCCOMMANDS_H_INCLUDED + +#if MBED_CONF_NFCEEPROM +#include "NFCProcessEEPROM.h" +#else +#include "NFCProcessCtrl.h" +#endif + +// see https://support.microsoft.com/en-my/help/208427/maximum-url-length-is-2-083-characters-in-internet-explorer +#define MAX_URL_LENGTH 2000 + +#ifndef MBED_CONF_NFCEEPROM +#define MBED_CONF_NFCEEPROM false +#endif + + +/** + * \brief adds human-readable traces not needed by the framework, filter is via a switch set_trace_enable() + * \param fmt standard printf formatter + * \param varargs + */ +void trace_printf(const char *fmt, ...); + +/** + * \brief turns on human readable traces + * \param enabled : set to false to disable the extra traces + */ +void set_trace_enable(bool enabled = true); + +/** + * HandleTestCommand turns all the typed-in/serial commands into function calls sent via a eventqueue to the driver + * shim/wrapper class. + * Methods with cmd_ prefix map to the serial commands, and are building blocks for test cases and scenarios. The + * first function a test must call is typically the initnfc command. Commands report back a test verdict, and a + * NFC status code. The test verdict is always success unless the command is not allowed. Tests much check the + * NFC error code for NFC_OK or zero; this pattern allows us to write negative tests which expect a specific NFC error. + * + * Handlers are statics because the test framework is not supporting C++ + */ +class HandleTestCommand { +public: + HandleTestCommand(); + + /** return and clear the last result code. Type "help getlastnfcerror" for a list of error codes */ + static int cmd_get_last_nfc_error(int argc, char *argv[]); + + /** internal function to test getlastnfcerror */ + static int cmd_set_last_nfc_error(int argc, char *argv[]); + + /** returns compile time flag if NFC EEPROM was compiled */ + static int cmd_get_conf_nfceeprom(int argc, char *argv[]); + + static int cmd_set_trace(int argc, char *argv[]); + + /** For EEPROM, returns the driver max_ndef value, else returns the app config MBED_CONF_APP_TEST_NDEF_MSG_MAX */ + static int cmd_get_max_ndef(int argc, char *argv[]); + + /** Init must be called before invoking any other calls, obtains a driver reference and initializes driver */ + static int cmd_init_nfc(int argc, char *argv[]); + /** write a smartposter url, 'Sp' NDEF to the target */ + static int cmd_set_smartposter(int argc, char *argv[]); + /** erases the EEPROM if present */ + static int cmd_erase(int argc, char *argv[]); + + /** Returns a CSV list of protocols supported */ + static int cmd_get_supported_rf_protocols(int argc, char *argv[]); + /** Sets the protocols supported (unimplemented) */ + static int cmd_configure_rf_protocols(int argc, char *argv[]); + /** starts the NFC discovery loop if controller, has no effect on EEPROM */ + static int cmd_start_discovery(int argc, char *argv[]); + /** stops the NFC discovery loop if controller */ + static int cmd_stop_discovery(int argc, char *argv[]); + + /** read raw EEPROM contents, reads a buffer if a controller is used */ + static int cmd_read_message(int argc, char *argv[]); + /** write a text 'T' NDEF message to the target */ + static int cmd_write_long_ndef_message(int argc, char *argv[]); + +private: + /** set corresponding mask bit on in referenced structure, return false if the supplied string cannot parse */ + static bool set_protocol_target(mbed::nfc::nfc_rf_protocols_bitmask_t &bitmask, const char *protocolName); + static NFCTestShim *new_testshim(); + static void nfc_routine(); + + static events::EventQueue _nfcQueue; +}; + + +// un-implemented or sparse support in drivers, so not covered +int cmd_is_iso7816_supported(int argc, char *argv[]); +int cmd_add_iso7816_application(int argc, char *argv[]); +int cmd_set_tagtype(int argc, char *argv[]); +int cmd_get_tagtype(int argc, char *argv[]); + +#endif // _NFCCOMMANDS_H_INCLUDED diff --git a/TEST_APPS/device/nfcapp/NFCProcessCtrl.cpp b/TEST_APPS/device/nfcapp/NFCProcessCtrl.cpp new file mode 100644 index 00000000000..30fabb10368 --- /dev/null +++ b/TEST_APPS/device/nfcapp/NFCProcessCtrl.cpp @@ -0,0 +1,207 @@ +/* + * 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 +#include +#include +#include +#include "mbed_events.h" +#include "mbed-client-cli/ns_cmdline.h" + +#include "nfc/stack/nfc_errors.h" + +#include "nfc/ndef/common/Text.h" +#include "nfc/ndef/common/URI.h" +#include "nfc/ndef/common/Mime.h" +#include "nfc/ndef/MessageBuilder.h" +#include "nfc/ndef/common/util.h" + + +#include "NFCCommands.h" +#include "NFCProcessCtrl.h" +#include "SmartPoster.h" + +using mbed::Span; +#if ! MBED_CONF_NFCEEPROM +using mbed::nfc::nfc_rf_protocols_bitmask_t; +using mbed::nfc::ndef::MessageBuilder; +using mbed::nfc::ndef::RecordType; +using mbed::nfc::ndef::Record; +using mbed::nfc::ndef::RecordID; +using mbed::nfc::ndef::RecordPayload; +using mbed::nfc::ndef::common::span_from_cstr; +using mbed::nfc::ndef::common::Mime; +using mbed::nfc::ndef::common::Text; +using mbed::nfc::ndef::common::URI; +using mbed::nfc::NFCController; + +/** + * Implements NFCRemoteInitiator::Delegate, NFCController::Delegate + */ + +NFCProcessController::NFCProcessController(events::EventQueue &queue) : + NFCTestShim(queue), + // pins: mosi, miso, sclk, ssel, irq, rst + _pn512_transport(D11, D12, D13, D10, A1, A0), _pn512_driver( + &_pn512_transport), + _nfc_controller(&_pn512_driver, &queue, _ndef_buffer) +{ +} + +/** + * Initialise and configure the NFC controller. + * + * @return NFC_OK in case of success or a meaningful error code in case of + * failure. + */ +nfc_err_t NFCProcessController::init() +{ + trace_printf("init()\r\n"); + + // register callbacks + _nfc_controller.set_delegate(this); + return _nfc_controller.initialize(); +} + + +void NFCProcessController::cmd_get_max_ndef() +{ + cmd_printf("{{maxndef=%d}}\r\n", (int)MBED_CONF_APP_TEST_NDEF_MSG_MAX); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +} + +/** + * Start the discovery of peers. + * + * @return NFC_OK in case of success or a meaningful error code in case of + * failure. + */ +nfc_err_t NFCProcessController::start_discovery() +{ + trace_printf("start_discovery()\r\n"); + + return _nfc_controller.start_discovery(); +} + +/** + * Stop discovery. + * + * @return NFC_OK in case of success or a meaningful error code in case of + * failure. + */ +nfc_err_t NFCProcessController::stop_discovery() +{ + trace_printf("stop_discovery()\r\n"); + return _nfc_controller.cancel_discovery(); +} + +nfc_rf_protocols_bitmask_t NFCProcessController::get_rf_protocols() +{ + trace_printf("get_supported_rf_protocols()\r\n"); + return _nfc_controller.get_supported_rf_protocols(); +} + +nfc_err_t NFCProcessController::set_rf_protocols( + nfc_rf_protocols_bitmask_t protocols) +{ + trace_printf("configure_rf_protocols()\r\n"); + + return _nfc_controller.configure_rf_protocols(protocols); +} + + +/* ------------------------------------------------------------------------ + * Implementation of NFCRemoteInitiator::Delegate + */ +void NFCProcessController::on_connected() +{ + cmd_printf("on_connected()\r\n"); +} + +void NFCProcessController::on_disconnected() +{ + cmd_printf("on_disconnected()\r\n"); + + // reset the state of the remote initiator + _nfc_remote_initiator->set_delegate(NULL); + _nfc_remote_initiator.reset(); + + // restart peer discovery + _nfc_controller.start_discovery(); +} + +void NFCProcessController::parse_ndef_message( + const Span &buffer) +{ + size_t len = buffer.size(); + // copy remotely written message into our dummy buffer + if (len <= sizeof(_ndef_write_buffer)) { + trace_printf("Store remote ndef message of size %d\r\n", len); + memcpy(_ndef_write_buffer, buffer.data(), len); + _ndef_write_buffer_used = len; + } else { + trace_printf("Remote ndef message of size %d too large!\r\n", len); + } +} + +size_t NFCProcessController::build_ndef_message(const Span &buffer) +{ + trace_printf("Copying message %d bytes to query buffer\r\n", + _ndef_write_buffer_used); + memcpy(buffer.data(), _ndef_write_buffer, _ndef_write_buffer_used); + for (size_t k = 0; k < _ndef_write_buffer_used; k++) { + cmd_printf("%02x ", buffer[k]); + } + return _ndef_write_buffer_used; +} + +const char *NFCProcessController::str_discovery_terminated_reason( + nfc_discovery_terminated_reason_t reason) +{ + static const char *reasons[4] = { "completed", "cancelled", "rf error"}; + switch (reason) { + case nfc_discovery_terminated_completed : + case nfc_discovery_terminated_canceled: + case nfc_discovery_terminated_rf_error: + return reasons[reason]; + } + return "unexpected!"; +} + + +void NFCProcessController::on_discovery_terminated( + nfc_discovery_terminated_reason_t reason) +{ + trace_printf("on_discovery_terminated(%s)\r\n", + str_discovery_terminated_reason(reason)); + if (reason != nfc_discovery_terminated_completed + && this->_discovery_restart) { + start_discovery(); + } +} + +void NFCProcessController::on_nfc_initiator_discovered( + const SharedPtr &nfc_initiator) +{ + trace_printf("on_nfc_initiator_discovered()\r\n"); + + // setup the local remote initiator + _nfc_remote_initiator = nfc_initiator; + _nfc_remote_initiator->set_delegate(this); + _nfc_remote_initiator->connect(); +} + +#endif // #if ! MBED_CONF_NFCEEPROM + diff --git a/TEST_APPS/device/nfcapp/NFCProcessCtrl.h b/TEST_APPS/device/nfcapp/NFCProcessCtrl.h new file mode 100644 index 00000000000..2f610bc08ce --- /dev/null +++ b/TEST_APPS/device/nfcapp/NFCProcessCtrl.h @@ -0,0 +1,88 @@ +/* + * 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 _NFCPROCESS_H_INCLUDED +#define _NFCPROCESS_H_INCLUDED + +#include +#include +#include +#include +#include "mbed_events.h" +#include "nfc/ndef/MessageBuilder.h" +#include "nfc/ndef/common/URI.h" +#include "nfc/ndef/common/util.h" +#include "NFCTestShim.h" + +#if !MBED_CONF_NFCEEPROM + +#include "nfc/nfcdefinitions.h" +#ifdef TARGET_PN512 +#include "nfc/controllers/PN512Driver.h" +#include "nfc/controllers/PN512SPITransportDriver.h" +#endif +#include "nfc/NFCRemoteInitiator.h" +#include "nfc/NFCController.h" +#include "nfc/ndef/common/util.h" + +/** + * Wrapper class handles calls and callbacks for NFC controller drivers. Note, that users must call "start" + * in order to start the discovery loop for controllers. An internal buffer stores the NFC message and records. + */ +class NFCProcessController: NFCTestShim, + mbed::nfc::NFCRemoteInitiator::Delegate, + mbed::nfc::NFCController::Delegate { +public: + NFCProcessController(events::EventQueue &queue); + + void cmd_get_max_ndef(); + nfc_err_t init(); + nfc_err_t start_discovery(); + nfc_err_t stop_discovery(); + mbed::nfc::nfc_rf_protocols_bitmask_t get_rf_protocols(); + nfc_err_t set_rf_protocols(mbed::nfc::nfc_rf_protocols_bitmask_t protocols); + + virtual void parse_ndef_message(const mbed::Span &buffer); + virtual size_t build_ndef_message(const mbed::Span &buffer); + const char *str_discovery_terminated_reason( + nfc_discovery_terminated_reason_t reason); + +private: + // these events are handled, to restart discovery + /** + * Implementation of NFCRemoteEndpoint::Delegate */ + virtual void on_connected(); + /** + * Implementation of NFCRemoteEndpoint::Delegate */ + virtual void on_disconnected(); + /** + * Implementation of NFCController::Delegate */ + virtual void on_discovery_terminated( + nfc_discovery_terminated_reason_t reason); + /** + * Implementation of NFCController::Delegate */ + virtual void on_nfc_initiator_discovered( + const SharedPtr &nfc_initiator); + +private: + mbed::nfc::PN512SPITransportDriver _pn512_transport; + mbed::nfc::PN512Driver _pn512_driver; + mbed::nfc::NFCController _nfc_controller; + SharedPtr _nfc_remote_initiator; +}; +#endif // Controller + +#endif // _NFCPROCESS_H_INCLUDED diff --git a/TEST_APPS/device/nfcapp/NFCProcessEEPROM.cpp b/TEST_APPS/device/nfcapp/NFCProcessEEPROM.cpp new file mode 100644 index 00000000000..f475ccc65cf --- /dev/null +++ b/TEST_APPS/device/nfcapp/NFCProcessEEPROM.cpp @@ -0,0 +1,146 @@ +/* + * 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 +#include +#include +#include +#include +#include "mbed_events.h" +#include "mbed-client-cli/ns_cmdline.h" + +#include "nfc/stack/nfc_errors.h" +#include "nfc/ndef/common/Text.h" +#include "nfc/ndef/common/URI.h" +#include "nfc/ndef/common/Mime.h" +#include "nfc/ndef/MessageBuilder.h" +#include "nfc/ndef/common/util.h" +#if MBED_CONF_NFCEEPROM +#include "NFCEEPROMDriver.h" + +#include "NFCProcessEEPROM.h" +#include "SmartPoster.h" + +using mbed::Span; +using mbed::nfc::ndef::MessageBuilder; +using mbed::nfc::ndef::RecordType; +using mbed::nfc::ndef::Record; +using mbed::nfc::ndef::RecordID; +using mbed::nfc::ndef::RecordPayload; +using mbed::nfc::ndef::common::span_from_cstr; +using mbed::nfc::ndef::common::Mime; +using mbed::nfc::ndef::common::Text; +using mbed::nfc::ndef::common::URI; +using mbed::nfc::NFCEEPROM; +using mbed::nfc::NFCEEPROMDriver; + +// implements : mbed::nfc::NFCEEPROM::Delegate +NFCProcessEEPROM::NFCProcessEEPROM(events::EventQueue &queue, NFCEEPROMDriver &eeprom_driver) : + NFCTestShim(queue), _eeprom(&eeprom_driver, &queue, _ndef_buffer), _ptr_eeprom_driver(&eeprom_driver) +{} + +nfc_err_t NFCProcessEEPROM::init() +{ + nfc_err_t err = _eeprom.initialize(); + if (err != NFC_OK) { + cmd_printf("NFCProcessEEPROM::init() (error: %d)!\r\n", err); + _queue.break_dispatch(); + } else { + cmd_printf("NFCProcessEEPROM::init() OK\r\n"); + } + _eeprom.set_delegate(this); + return (err); +} + + +void NFCProcessEEPROM::cmd_get_max_ndef() +{ + cmd_printf("{{maxndef=%d}}\r\n", (int)_ptr_eeprom_driver->read_max_size()); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +} + +void NFCProcessEEPROM::queue_write_call() +{ + cmd_printf("NFCProcessEEPROM::queue_write_call() entry\r\n"); + _queue.call(&_eeprom, &NFCEEPROM::write_ndef_message); +} + +void NFCProcessEEPROM::queue_read_call() +{ + cmd_printf("NFCProcessEEPROM::queue_read_call() entry\r\n"); + _queue.call(&_eeprom, &NFCEEPROM::read_ndef_message); +} + +void NFCProcessEEPROM::queue_erase_call() +{ + cmd_printf("NFCProcessEEPROM::queue_erase_call() entry\r\n"); + _queue.call(&_eeprom, &NFCEEPROM::erase_ndef_message); +} + +void NFCProcessEEPROM::on_ndef_message_written(nfc_err_t result) +{ + set_last_nfc_error(result); + if (result == NFC_OK) { + cmd_printf("message written successfully\r\n"); + } else { + cmd_printf("Failed to write (error: %d)!\r\n", result); + } + // complete the async test method here + cmd_ready(CMDLINE_RETCODE_SUCCESS); +} + +void NFCProcessEEPROM::on_ndef_message_read(nfc_err_t result) +{ + set_last_nfc_error(result); + if (result == NFC_OK) { + cmd_printf("message read successfully\r\n"); + } else { + cmd_printf("Failed to read (error: %d)!\r\n", result); + } + // complete the async test method here + cmd_ready(CMDLINE_RETCODE_SUCCESS); +} + +void NFCProcessEEPROM::on_ndef_message_erased(nfc_err_t result) +{ + set_last_nfc_error(result); + if (result == NFC_OK) { + cmd_printf("message erased successfully\r\n"); + } else { + cmd_printf("Failed to erase (error: %d)!\r\n", result); + } + // complete the async test method here + cmd_ready(CMDLINE_RETCODE_SUCCESS); +} + +void NFCProcessEEPROM::parse_ndef_message(const Span &buffer) +{ + cmd_printf("Received an ndef message of size %d\r\n", buffer.size()); + print_ndef_message(buffer, buffer.size()); +} + +size_t NFCProcessEEPROM::build_ndef_message(const Span &buffer) +{ + cmd_printf("Copying ndef message %d bytes into buffer\r\n", _ndef_write_buffer_used); + // make a copy into our buffer + memcpy(buffer.data(), _ndef_write_buffer, _ndef_write_buffer_used); + for (size_t k = 0; k < _ndef_write_buffer_used; k++) { + cmd_printf("%02x ", buffer[k]); + } + return _ndef_write_buffer_used; +} + +#endif // MBED_CONF_NFCEEPROM + diff --git a/TEST_APPS/device/nfcapp/NFCProcessEEPROM.h b/TEST_APPS/device/nfcapp/NFCProcessEEPROM.h new file mode 100644 index 00000000000..c56fec72483 --- /dev/null +++ b/TEST_APPS/device/nfcapp/NFCProcessEEPROM.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 _NFCPROCESS_H_INCLUDED +#define _NFCPROCESS_H_INCLUDED + +#include +#include +#include +#include + +#include "nfc/ndef/MessageBuilder.h" +#include "nfc/ndef/common/URI.h" +#include "nfc/ndef/common/util.h" +#include "NFCTestShim.h" + +#if MBED_CONF_NFCEEPROM +#include "NFCEEPROM.h" +#include "EEPROMDriver.h" + + +/** + * Wrapper class handles events specific to the EEPROM driver. + */ +class NFCProcessEEPROM : NFCTestShim, mbed::nfc::NFCEEPROM::Delegate { +public: + NFCProcessEEPROM(events::EventQueue &queue, mbed::nfc::NFCEEPROMDriver &eeprom_driver); + virtual nfc_err_t init(); + void queue_write_call(); + void queue_write_long_call(); + void queue_read_call(); + void queue_erase_call(); + virtual void cmd_get_max_ndef(); + + +private: + virtual void on_ndef_message_written(nfc_err_t result); + virtual void on_ndef_message_read(nfc_err_t result); + virtual void parse_ndef_message(const mbed::Span &buffer); + virtual size_t build_ndef_message(const mbed::Span &buffer); + virtual void on_ndef_message_erased(nfc_err_t result); +private: + mbed::nfc::NFCEEPROM _eeprom; + mbed::nfc::NFCEEPROMDriver *_ptr_eeprom_driver; +}; + +#endif // eeprom + +#endif // _NFCPROCESS_H_INCLUDED diff --git a/TEST_APPS/device/nfcapp/NFCTestShim.cpp b/TEST_APPS/device/nfcapp/NFCTestShim.cpp new file mode 100644 index 00000000000..c62482f210a --- /dev/null +++ b/TEST_APPS/device/nfcapp/NFCTestShim.cpp @@ -0,0 +1,408 @@ +/* + * 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 +#include +#include +#include +#include +#include "mbed-client-cli/ns_cmdline.h" +#include "nfc/ndef/common/Text.h" +#include "nfc/ndef/common/URI.h" +#include "nfc/ndef/common/Mime.h" +#include "nfc/ndef/MessageBuilder.h" +#include "nfc/ndef/common/util.h" +#include "nfc/nfcdefinitions.h" + +#include "NFCEEPROMDriver.h" +#include "NFCCommands.h" +#include "NFCTestShim.h" +#include "SmartPoster.h" + +using mbed::Span; +using mbed::nfc::ndef::MessageBuilder; +using mbed::nfc::ndef::RecordType; +using mbed::nfc::ndef::common::span_from_cstr; +using mbed::nfc::ndef::common::Text; +using mbed::nfc::ndef::common::URI; +using mbed::nfc::nfc_rf_protocols_bitmask_t; + + +// statics +namespace { + +char const *uri_prefix_string[] = { "", + "http://www.", + "https://www.", + "http://", + "https://", + "tel:", + "mailto:", + "ftp://anonymous:anonymous@", + "ftp://ftp.", + "ftps://", + "sftp://", + "smb://", + "nfs://", + "ftp://", + "dav://", + "news:", + "telnet://", + "imap:", + "rstp://", + "urn:", + "pop:", + "sip:", + "sips:", + "tftp:", + "btspp://", + "btl2cap://", + "btgoep://", + "tcpobex://", + "irdaobex://", + "file://", + "urn:epc:id:", + "urn:epc:tag:", + "urn:epc:pat:", + "urn:epc:raw:", + "urn:epc:", + "urn:nfc:" + }; + + +} + + +int NFCTestShim::last_nfc_error = 0; +NFCTestShim *pNFC_Test_Shim = NULL; + +NFCTestShim::NFCTestShim(events::EventQueue &queue) : + _ndef_write_buffer_used(0), _ndef_poster_message(_ndef_write_buffer), + _discovery_restart(true), // on disconnect, will restart discovery + _queue(queue) +{ +} + +void NFCTestShim::cmd_get_last_nfc_error() +{ + get_last_nfc_error(); +} + +void NFCTestShim::cmd_set_last_nfc_error(int err) +{ + set_last_nfc_error(err); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +} + +void NFCTestShim::cmd_get_conf_nfceeprom() +{ + get_conf_nfceeprom(); +} + +/** \brief The last failed NFC API call status, gets cleared upon reading it. + * \return void The NFC error is set asyncronously by sending text back over serial + */ +void NFCTestShim::get_last_nfc_error() +{ + int last = last_nfc_error; + last_nfc_error = 0; + // return data as text to the plugin framework + cmd_printf("{{lastnfcerror=%d}}\r\n", last); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +} + +void NFCTestShim::set_last_nfc_error(int err) +{ + last_nfc_error = err; + cmd_printf("\r\n{{lastnfcerror=%d}}\r\n", last_nfc_error); +} + +// if an NFC EEPROM driver is configured +void NFCTestShim::get_conf_nfceeprom() +{ + set_last_nfc_error(NFC_OK); + // return data as text to the plugin framework + cmd_printf("{{iseeprom=%s}}\r\n", (MBED_CONF_NFCEEPROM ? "true" : "false")); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +} + +void NFCTestShim::print_ndef_message(const Span &buffer, + size_t length) +{ + // return data as text to the plugin framework + cmd_printf("{{nfcmessage="); + for (size_t k = 0; k < length; k++) { + cmd_printf("%02x ", buffer.data()[k]); + } + cmd_printf("}}\r\n"); +} + +URI::uri_identifier_code_t NFCTestShim::get_ndef_record_type(char const *url) +{ + size_t i; + int len, bestLen = -1, index = -1; + // find largest matching prefix + for (i = 1; i < sizeof(uri_prefix_string) / sizeof(uri_prefix_string[0]); i++) { + len = strlen(uri_prefix_string[i]); + if (0 == strncmp(uri_prefix_string[i], url, len)) { + if (len > bestLen) { + index = i; + bestLen = len; + } + } + } + return (URI::uri_identifier_code_t)index; +} + +char const *NFCTestShim::get_ndef_record_type_prefix(URI::uri_identifier_code_t id) +{ + if ((id < 1) | (id > sizeof(uri_prefix_string) / sizeof(uri_prefix_string[0]))) { + return (""); // unknown case + } + return (::uri_prefix_string[(int)id]); +} + +void NFCTestShim::cmd_init() +{ + nfc_err_t ret = init(); + set_last_nfc_error(ret); + + if (NFC_OK != ret) { + cmd_ready(CMDLINE_RETCODE_FAIL); + } else { + cmd_ready(CMDLINE_RETCODE_SUCCESS); + } +} + +void NFCTestShim::cmd_get_rf_protocols() +{ +#if MBED_CONF_NFCEEPROM + cmd_printf("EEPROM cannot get protocol()\r\n"); + set_last_nfc_error(NFC_ERR_UNSUPPORTED); + cmd_ready(CMDLINE_RETCODE_INVALID_PARAMETERS); + +#else + nfc_rf_protocols_bitmask_t protocols = get_rf_protocols(); + + static char strSupported[7 * 6 + 1] = ""; + if (protocols.target_t1t) { + strcat(strSupported, "t1t,"); + } + if (protocols.target_t2t) { + strcat(strSupported, "t2t,"); + } + if (protocols.target_t3t) { + strcat(strSupported, "t3t,"); + } + if (protocols.target_iso_dep) { + strcat(strSupported, "isodep,"); + } + if (protocols.target_nfc_dep) { + strcat(strSupported, "nfcdep,"); + } + if (protocols.target_t5t) { + strcat(strSupported, "t5t,"); + } + if (strlen(strSupported)) { + strSupported[strlen(strSupported) - 1] = '\0'; // strip trailing comma + } + // return data as text to the plugin framework + cmd_printf("{{protocols=%s}}", strSupported); + set_last_nfc_error(NFC_OK); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +#endif +} + +void NFCTestShim::cmd_configure_rf_protocols( + nfc_rf_protocols_bitmask_t protocols) +{ +#if MBED_CONF_NFCEEPROM + cmd_printf("EEPROM cannot set protocol()\r\n"); + set_last_nfc_error(NFC_ERR_UNSUPPORTED); + cmd_ready(CMDLINE_RETCODE_INVALID_PARAMETERS); +#else + + nfc_err_t err = set_rf_protocols(protocols); + set_last_nfc_error(err); + if (NFC_OK != err) { + cmd_ready(CMDLINE_RETCODE_FAIL); + } else { + cmd_ready(CMDLINE_RETCODE_SUCCESS); + } +#endif +} + +/** \brief Copy data from the Controller buffer, or if EEPROM will initiate a read of the + * eeprom contents which get dumped as a string {{bytes=XX XX XX XX.. }} and parsed by + * the framework + * \return void An ICETEA error code and NFC error is set asyncronously + */ +void NFCTestShim::cmd_read_nfc_contents() +{ +#if MBED_CONF_NFCEEPROM + ((NFCProcessEEPROM *)this)->queue_read_call(); + trace_printf("NFCTestShim::cmd_read_nfc_contents() exit\r\n"); + +#else + // returns last message "written", since we cannot read + print_ndef_message(_ndef_write_buffer, _ndef_write_buffer_used); + trace_printf("Controller buffer data size=%d\r\n", _ndef_write_buffer_used); + set_last_nfc_error(NFC_OK); + + trace_printf("NFCTestShim::cmd_read_nfc_contents() exit\r\n"); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +#endif +} + +void NFCTestShim::cmd_erase() +{ +#if MBED_CONF_NFCEEPROM + ((NFCProcessEEPROM *)this)->queue_erase_call(); +#else + trace_printf("Erase (reset) controller msg buffer\r\n"); + _ndef_write_buffer_used = 0; + memset(_ndef_write_buffer, 0, sizeof(_ndef_write_buffer)); + set_last_nfc_error(NFC_OK); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +#endif +} + +/** \brief Writes a Text T record buffer with really long message - length checks to be done by driver only. + * If an NFC controller, no write to the chip happens, we copy the data into a Controller buffer + * \param text_string This method must free the passed in pointer + * \return void An ICETEA error code and NFC error is set asynchronously + */ +void NFCTestShim::cmd_write_long(char *text_string) +{ + MessageBuilder builder(_ndef_poster_message); + Text text(Text::UTF8, span_from_cstr("en-US"), + span_from_cstr((const char *)(text_string))); + + text.append_as_record(builder, true); + _ndef_write_buffer_used = builder.get_message().size(); + trace_printf("Composed NDEF message %d bytes\r\n", _ndef_write_buffer_used); + +#if MBED_CONF_NFCEEPROM + ((NFCProcessEEPROM *)this)->queue_write_call(); +#else + // not on a wire, and we just stored the message in _ndef_write_buffer above + set_last_nfc_error(NFC_OK); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +#endif + free(text_string); // free buffer allocated by the command class now + trace_printf("NFCTestShim::write_long() exit\r\n"); +} + +/** \brief Write a URI Use case would be to prompt to install an app from the appstore using the tag + * \param uri This method must free the passed in pointer + * \return void An ICETEA error code and NFC error is set asyncronously + */ +void NFCTestShim::cmd_set_smartposter(char *cmdUri) +{ + MessageBuilder builder(_ndef_poster_message); + + struct SPBuilder: MessageBuilder::PayloadBuilder { + SPBuilder(char *cmd_uri) + { + URI::uri_identifier_code_t uri_id = get_ndef_record_type(cmd_uri); + char *urlbegin = cmd_uri + + strlen(get_ndef_record_type_prefix(uri_id)); + uri = URI(uri_id, span_from_cstr(urlbegin)); + cmd_printf("{{uri_id=%d}}\r\n", (int) uri_id); + } + + virtual size_t size() const + { + return uri.get_record_size(); + } + + virtual void build(const Span &buffer) const + { + MessageBuilder smart_poster_builder(buffer); + + uri.append_as_record(smart_poster_builder, true); + } + URI uri; + }; + + builder.append_record( + RecordType(RecordType::well_known_type, span_from_cstr("Sp")), + SPBuilder(cmdUri), true); + + _ndef_write_buffer_used = builder.get_message().size(); + trace_printf("Composed NDEF message %d bytes\r\n", _ndef_write_buffer_used); + +#if MBED_CONF_NFCEEPROM + ((NFCProcessEEPROM *)this)->queue_write_call(); +#else + // not on a wire, so the call just stores the message in a buffer + set_last_nfc_error(NFC_OK); + cmd_ready(CMDLINE_RETCODE_SUCCESS); +#endif + trace_printf("NFCTestShim::setsmartposter() exit\r\n"); + free(cmdUri); +} + +// disabled in EEPROMs, overridden if controller present +void NFCTestShim::cmd_start_discovery(bool manual) +{ +#if MBED_CONF_NFCEEPROM + cmd_printf("EEPROM cannot start_discovery()\r\n"); + set_last_nfc_error(NFC_ERR_UNSUPPORTED); + cmd_ready(CMDLINE_RETCODE_INVALID_PARAMETERS); + +#else + + // todo: Jira logged. remove hard coded protocol + nfc_rf_protocols_bitmask_t protocols = { 0 }; + protocols.target_iso_dep = 1; + + nfc_err_t err = set_rf_protocols(protocols); + + if (manual) { + set_discovery_restart_manual(); + } else { + set_discovery_restart_auto(); + } + err = start_discovery(); + set_last_nfc_error(err); + if (NFC_OK != err) { + cmd_ready(CMDLINE_RETCODE_FAIL); + } else { + cmd_ready(CMDLINE_RETCODE_SUCCESS); + } +#endif +} + +// disabled in EEPROMs, overridden if controller present +void NFCTestShim::cmd_stop_discovery() +{ + +#if MBED_CONF_NFCEEPROM + cmd_printf("EEPROM cannot stop_discovery()\r\n"); + set_last_nfc_error(NFC_ERR_UNSUPPORTED); + cmd_ready(CMDLINE_RETCODE_INVALID_PARAMETERS); +#else + nfc_err_t err = stop_discovery(); + set_last_nfc_error(err); + if (NFC_OK != err) { + cmd_ready(CMDLINE_RETCODE_FAIL); + } else { + cmd_ready(CMDLINE_RETCODE_SUCCESS); + } + +#endif +} + diff --git a/TEST_APPS/device/nfcapp/NFCTestShim.h b/TEST_APPS/device/nfcapp/NFCTestShim.h new file mode 100644 index 00000000000..6aba9b820bd --- /dev/null +++ b/TEST_APPS/device/nfcapp/NFCTestShim.h @@ -0,0 +1,111 @@ +/* + * 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 _NFCTESTSHIM_H_INCLUDED +#define _NFCTESTSHIM_H_INCLUDED + +#include +#include +#include +#include + +#include "mbed_config.h" +#include "nfc/ndef/MessageBuilder.h" +#include "nfc/ndef/common/URI.h" +#include "nfc/ndef/common/util.h" +#include "nfc/NFCDefinitions.h" + +/** + * Test app driver wrapper. This is a base class containing shared EEPROM and Controller test data + logic. + * Variations for the 2 different kinds of driver supported are delegated to derived classes. + */ +class NFCTestShim { +public: + NFCTestShim(events::EventQueue &queue); + + static void cmd_get_last_nfc_error(); + static void cmd_set_last_nfc_error(int err); + static void cmd_get_conf_nfceeprom(); + /** + * For an EEPROM, this queries and responds with the flash size, + * For a Controller, responds with the config macro TEST_NDEF_MSG_MAX + */ + virtual void cmd_get_max_ndef() = 0; + + static void get_last_nfc_error(); + static void set_last_nfc_error(int err); + static void get_conf_nfceeprom(); + static void print_ndef_message(const mbed::Span &buffer, + size_t length); + static mbed::nfc::ndef::common::URI::uri_identifier_code_t get_ndef_record_type(char const *url); + static char const *get_ndef_record_type_prefix(mbed::nfc::ndef::common::URI::uri_identifier_code_t id); + + void cmd_init(); + + void cmd_set_smartposter(char *cmdUri); + void cmd_erase(); + void cmd_write_long(char *text_string); + void cmd_read_nfc_contents(); + void cmd_start_discovery(bool manual = false); + void cmd_stop_discovery(); + void cmd_configure_rf_protocols(mbed::nfc::nfc_rf_protocols_bitmask_t protocols); + void cmd_get_rf_protocols(); + +protected: + // implement/declare EEPROM and Controller model underlying common BH and delegate specializations + virtual nfc_err_t init() = 0; + virtual nfc_err_t set_rf_protocols(mbed::nfc::nfc_rf_protocols_bitmask_t protocols) + { + return NFC_ERR_UNSUPPORTED ; + }; + virtual mbed::nfc::nfc_rf_protocols_bitmask_t get_rf_protocols() + { + mbed::nfc::nfc_rf_protocols_bitmask_t none; + memset((void *)&none, 0, sizeof(none)); + return none; + }; + virtual nfc_err_t start_discovery() + { + return NFC_ERR_UNSUPPORTED ; + }; + virtual nfc_err_t stop_discovery() + { + return NFC_ERR_UNSUPPORTED ; + }; + void set_discovery_restart_auto() + { + _discovery_restart = true; + }; + void set_discovery_restart_manual() + { + _discovery_restart = false; + }; + +protected: + size_t _ndef_write_buffer_used; + mbed::Span _ndef_poster_message; // message to build and send + uint8_t _ndef_write_buffer[MBED_CONF_APP_TEST_NDEF_MSG_MAX]; // if this buffer is smaller than the EEPROM, the driver may crash see IOTPAN-297 + uint8_t _ndef_buffer[MBED_CONF_APP_TEST_NDEF_MSG_MAX]; // driver I/O buffer + bool _discovery_restart; // default true, restart discovery loop again on remote disconnect + events::EventQueue &_queue; +private: + static int last_nfc_error; +}; + +// forward declare single instance +extern NFCTestShim *pNFC_Test_Shim; + +#endif // _NFCTESTSHIM_H_INCLUDED diff --git a/TEST_APPS/device/nfcapp/SmartPoster.cpp b/TEST_APPS/device/nfcapp/SmartPoster.cpp new file mode 100644 index 00000000000..c09cf8488ae --- /dev/null +++ b/TEST_APPS/device/nfcapp/SmartPoster.cpp @@ -0,0 +1,247 @@ +/* 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 "SmartPoster.h" + +#include "nfc/ndef/common/Text.h" +#include "nfc/ndef/common/URI.h" +#include "nfc/ndef/common/Mime.h" +#include "nfc/ndef/MessageBuilder.h" +#include "nfc/ndef/common/util.h" + +using mbed::Span; + +using mbed::nfc::ndef::MessageBuilder; +using mbed::nfc::ndef::RecordType; +using mbed::nfc::ndef::Record; +using mbed::nfc::ndef::RecordID; +using mbed::nfc::ndef::RecordPayload; +using mbed::nfc::ndef::common::span_from_cstr; +using mbed::nfc::ndef::common::Mime; +using mbed::nfc::ndef::common::Text; +using mbed::nfc::ndef::common::URI; + +// todo: this class probably needs to be in the nfc module itself + +namespace { +static RecordType smart_poster_record_type() +{ + return RecordType(RecordType::well_known_type, span_from_cstr("Sp")); +} + +static RecordType action_record_type() +{ + return RecordType(RecordType::well_known_type, span_from_cstr("act")); +} + +static RecordType size_record_type() +{ + return RecordType(RecordType::well_known_type, span_from_cstr("s")); +} + +static RecordType type_record_type() +{ + return RecordType(RecordType::well_known_type, span_from_cstr("T")); +} + +static size_t compute_record_size(const RecordType &type, + const RecordPayload &payload) +{ + return MessageBuilder::compute_record_size( + Record(type, payload, RecordID(), false, false)); +} + +} // end of anonymous namespace + +SmartPoster::SmartPoster(const URI &uri) : + _uri(uri), _action(), _resource_size(0), _action_set(false), _resource_size_set( + false) +{ +} + +void SmartPoster::set_title(const Text &text) +{ + _title = text; +} + +void SmartPoster::set_icon(const Mime &icon) +{ + _icon = icon; +} + +void SmartPoster::set_action(action_t action) +{ + _action = action; + _action_set = true; +} + +void SmartPoster::set_resource_size(uint32_t size) +{ + _resource_size = size; + _resource_size_set = true; +} + +void SmartPoster::set_resource_type(Span &type) +{ + _type.set_text(Text::UTF8, Span(), type); +} + +bool SmartPoster::append_record(MessageBuilder &ndef_builder, + bool is_last_record) const +{ + if (_uri.get_uri_field().empty()) { + return false; + } + + struct PayloadBuilder: MessageBuilder::PayloadBuilder { + PayloadBuilder(const SmartPoster &sp) : + sp(sp) + { + } + + virtual size_t size() const + { + return sp.get_uri_record_size() + sp.get_title_record_size() + + sp.get_icon_record_size() + sp.get_action_record_size() + + sp.get_resource_size_record_size() + + sp.get_type_record_size(); + } + + virtual void build(const Span &buffer) const + { + MessageBuilder smart_poster_builder(buffer); + sp.append_title(smart_poster_builder); + sp.append_icon(smart_poster_builder); + sp.append_resource_size(smart_poster_builder); + sp.append_type(smart_poster_builder); + sp.append_action(smart_poster_builder); + sp.append_uri(smart_poster_builder); + } + + const SmartPoster &sp; + }; + + bool result = ndef_builder.append_record(smart_poster_record_type(), + PayloadBuilder(*this), is_last_record); + return result; +} + +void SmartPoster::append_uri(MessageBuilder &builder) const +{ + _uri.append_as_record(builder, true); +} + +size_t SmartPoster::get_uri_record_size() const +{ + return _uri.get_record_size(); +} + +void SmartPoster::append_title(MessageBuilder &builder) const +{ + if (_title.get_text().empty()) { + return; + } + _title.append_as_record(builder); +} + +size_t SmartPoster::get_title_record_size() const +{ + if (_title.get_text().empty()) { + return 0; + } + + return _title.get_record_size(); +} + +void SmartPoster::append_icon(MessageBuilder &builder) const +{ + if (_icon.get_mime_content().empty()) { + return; + } + _icon.append_as_record(builder); +} + +size_t SmartPoster::get_icon_record_size() const +{ + if (_icon.get_mime_content().empty()) { + return 0; + } + + return _icon.get_record_size(); +} + +void SmartPoster::append_action(MessageBuilder &builder) const +{ + if (!_action_set) { + return; + } + + const uint8_t action_value[1] = { _action }; + builder.append_record(action_record_type(), action_value); +} + +size_t SmartPoster::get_action_record_size() const +{ + if (!_action_set) { + return 0; + } + + const uint8_t action_value[1] = { _action }; + + return compute_record_size(action_record_type(), action_value); +} + +void SmartPoster::append_resource_size(MessageBuilder &builder) const +{ + if (!_resource_size_set) { + return; + } + + uint8_t value[4]; + std::reverse_copy(&_resource_size, &_resource_size + 4, value); + + builder.append_record(size_record_type(), value); +} + +size_t SmartPoster::get_resource_size_record_size() const +{ + if (!_resource_size_set) { + return 0; + } + + uint8_t value[4]; + + return compute_record_size(size_record_type(), value); +} + +void SmartPoster::append_type(MessageBuilder &builder) const +{ + if (_type.get_text().empty()) { + return; + } + + builder.append_record(type_record_type(), _type.get_text()); +} + +size_t SmartPoster::get_type_record_size() const +{ + if (_type.get_text().empty()) { + return 0; + } + + return compute_record_size(type_record_type(), _type.get_text()); +} + diff --git a/TEST_APPS/device/nfcapp/SmartPoster.h b/TEST_APPS/device/nfcapp/SmartPoster.h new file mode 100644 index 00000000000..065abdceac9 --- /dev/null +++ b/TEST_APPS/device/nfcapp/SmartPoster.h @@ -0,0 +1,138 @@ +/* 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 SMARTPOSTER_H_ +#define SMARTPOSTER_H_ + +#include "nfc/ndef/common/Text.h" +#include "nfc/ndef/common/URI.h" +#include "nfc/ndef/common/Mime.h" +#include "nfc/ndef/MessageBuilder.h" + +/** + * Smart poster object. + * + * A smart poster is one of the basic use case of NFC. It encapsulates a URI to + * a resource and meta-data of the resource. + * + * Meta-data are optional, they can be: + * - title: name of the resource + * - icon: image/media associated to the resource + * - action: Action the peer should execute upon reception of the smart poster + * - size: The size of the resource. + * - type: Mime type of the resource. + * + * @note It obeys to value semantic and can be copied around. + */ +class SmartPoster { +public: + typedef mbed::nfc::ndef::common::Mime Mime; + typedef mbed::nfc::ndef::common::Text Text; + typedef mbed::nfc::ndef::common::URI URI; + typedef mbed::nfc::ndef::MessageBuilder MessageBuilder; + + /** + * Type of actions that should be executed upon smart poster reception. + */ + enum action_t { + EXECUTE, //!< EXECUTE + SAVE, //!< SAVE + EDIT //!< EDIT + }; + + /** + * Construct a smart poster. + * + * @param uri The URI to the resource. + */ + SmartPoster(const URI &uri); + + /** + * Set the title of the resource. + * + * @param text The title of the resource to set. + */ + void set_title(const Text &text); + + /** + * Set the icon of the resource. + * + * @param icon The icon to set. + */ + void set_icon(const Mime &icon); + + /** + * Set the action to trigger upon smart poster reception. + * + * @param action The action to do upon reception. + */ + void set_action(action_t action); + + /** + * Set the size of the resource. + * + * @param size The size of the resource. + */ + void set_resource_size(uint32_t size); + + /** + * Set the type of the resource. + * + * @param resource_type The type of the resource pointed by the URI. + */ + void set_resource_type(mbed::Span &resource_type); + + /** + * Append the smart poster as a ndef record. + * + * @param ndef_builder The message builder where the record is appended. + * @param is_last_record Indicates if this message is the last one. + * + * @return true if the message has been appended to the builder or false + * otherwise. + */ + bool append_record(MessageBuilder &ndef_builder, bool is_last_record) const; + +private: + void append_uri(MessageBuilder &builder) const; + size_t get_uri_record_size() const; + + void append_title(MessageBuilder &builder) const; + size_t get_title_record_size() const; + + void append_icon(MessageBuilder &builder) const; + size_t get_icon_record_size() const; + + void append_action(MessageBuilder &builder) const; + size_t get_action_record_size() const; + + void append_resource_size(MessageBuilder &builder) const; + size_t get_resource_size_record_size() const; + + void append_type(MessageBuilder &builder) const; + size_t get_type_record_size() const; + + URI _uri; + Text _title; + Mime _icon; + action_t _action; + uint32_t _resource_size; + Text _type; + + bool _action_set : 1; + bool _resource_size_set : 1; +}; + +#endif /* SMARTPOSTER_H_ */ diff --git a/TEST_APPS/device/nfcapp/main.cpp b/TEST_APPS/device/nfcapp/main.cpp new file mode 100644 index 00000000000..72f6ead2d59 --- /dev/null +++ b/TEST_APPS/device/nfcapp/main.cpp @@ -0,0 +1,157 @@ +/* + * 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 +#include +#include +#include +#include +#include +#include "platform/Span.h" +#include "mbed_events.h" +#include "mbed-client-cli/ns_cmdline.h" +#include "NFCTestShim.h" +#include "NFCCommands.h" + +#if MBED_CONF_NFCEEPROM +using mbed::nfc::NFCEEPROM; +using mbed::nfc::NFCEEPROMDriver; +#else +#ifndef TARGET_PN512 +#warning [NOT_SUPPORTED] NFC not supported for this target +#endif + +#endif // MBED_CONF_NFCEEPROM + +const char *errorcodes = // descriptions from nfc/stack/nfc_errors.h + " 0 NFC_OK\r\n" + " 1 NFC_ERR_UNKNOWN\r\n" + " 2 NFC_ERR_LENGTH\r\n" + " 3 NFC_ERR_NOT_FOUND\r\n" + " 4 NFC_ERR_UNSUPPORTED\r\n" + " 5 NFC_ERR_PARAMS\r\n" + " 6 NFC_ERR_BUFFER_TOO_SMALL\r\n" + " 7 NFC_ERR_TIMEOUT\r\n" + " 8 NFC_ERR_CRC\r\n" + " 9 NFC_ERR_NOPEER\r\n" + "10 NFC_ERR_PARITY\r\n" + "11 NFC_ERR_FIELD\r\n" + "12 NFC_ERR_COLLISION\r\n" + "13 NFC_ERR_WRONG_COMM\r\n" + "14 NFC_ERR_PROTOCOL\r\n" + "15 NFC_ERR_BUSY\r\n" + "16 NFC_ERR_CONTROLLER\r\n" + "17 NFC_ERR_HALTED\r\n" + "18 NFC_ERR_MAC\r\n" + "19 NFC_ERR_UNDERFLOW\r\n" + "20 NFC_ERR_DISCONNECTED\r\n" + "21 NFC_ERR_ABORTED\r\n"; + + +void wrap_printf(const char *f, va_list a) +{ + vprintf(f, a); +} + + +/** Disables VT100 etc. for easy manual UI interaction */ +int set_easy_printer(int argc, char *argv[]) +{ + const char msg[][20] = + { "echo off", "set --retcode true", "set --vt100 off" }; + for (size_t i = 0; i < (sizeof(msg) / sizeof(msg[0])); i++) { + cmd_exe((char *) msg[i]); + } + return (CMDLINE_RETCODE_SUCCESS); +} + + +/** + * This test app can be used standalone interactively with at 115200 baud terminal. It is designed to work with the + * IceTea test framework https://os.mbed.com/docs/latest/tools/icetea-testing-applications.html . This app does + * not run test cases, it wraps functions in the API in ways that let us test multiple cases and scenarios. + * Test commands are routed in the CommandHandler class to an eventqueue, so it interfaces to the driver + * on a separate driver thread, which means test functions complete asynchronously. + * The driver is only called in a thread in the shim or wrapper class called NFCTestShim, which handles driver + * callbacks and completes the async part of a test function. NFCTestShim has specializations for NFC controllers + * and EEPROMS. The classes NFCProcessController and NFCProcessEEPROM respectively implement the needed specialization. + * + * If using an NFC EEPROM, an extra library is needed. Please see the documentation in the README.MD for instructions + * on how to modify this test for new drivers/targets, and the steps to run this test suite. + */ +int main() +{ + cmd_init(&wrap_printf); + HandleTestCommand handleCommands; // For handling test commands and set nfc message queue + + cmd_add("getlastnfcerror", HandleTestCommand::cmd_get_last_nfc_error, + "last NFC error code", errorcodes); + cmd_add("setlastnfcerror", HandleTestCommand::cmd_set_last_nfc_error, + "self-test", "for self-test only"); + cmd_add("iseeprom", HandleTestCommand::cmd_get_conf_nfceeprom, + "get NFC configEEPROM present", + "true if config exists, else false"); + cmd_add("initnfc", HandleTestCommand::cmd_init_nfc, "init NFC driver", + "call first"); + cmd_add("getmaxndef", HandleTestCommand::cmd_get_max_ndef, "get max NDEF record target supports", + "returns the eeprom size, or max buffer if a controller"); + cmd_add("init", HandleTestCommand::cmd_init_nfc, "alias initnfc", + "call first"); + cmd_add("setsmartposter", HandleTestCommand::cmd_set_smartposter, + "send smartposter NDEF", ""); + cmd_add("readmessage", HandleTestCommand::cmd_read_message, + "read EEPROM else return last message", "returns hex dump"); + cmd_add("read", HandleTestCommand::cmd_read_message, "alias readmessage", + "returns hex dump"); + cmd_add("erase", HandleTestCommand::cmd_erase, + "erase EEPROM or clear last message", "erase entire flash/buffer"); + cmd_add("writelong", HandleTestCommand::cmd_write_long_ndef_message, + "fill T NDEF with pattern up to ", + "writelong [messagetorepeat='thequickbrownfoxisadog']"); + cmd_add("start", HandleTestCommand::cmd_start_discovery, + "start discovery [auto=autorestart|man=manual]", + "loop restarts by default, man to disable"); + cmd_add("stop", HandleTestCommand::cmd_stop_discovery, "stop discovery", + "[wait=0] with optional wait for session end"); + + cmd_add("getprotocols", HandleTestCommand::cmd_get_supported_rf_protocols, + "get supported protocols", "returns CSV list, see setprotocols"); + cmd_add("setprotocols", HandleTestCommand::cmd_configure_rf_protocols, + "set rf protocols", "-p [t1t]/[t2t]/[t3t]/[isodep]/[nfcdep]/[t5t]"); + cmd_add("easy", set_easy_printer, "Use human readable terminal output", + "echo off,vt100 off,return-codes visible"); + cmd_add("trace", HandleTestCommand::cmd_set_trace, "detailed tracing on/off, ", + "Defaults to enabled; values like 'on','true','1' all turn it on, anything else turns off detailed tracing."); + +#if MBED_CONF_NFCEEPROM + cmd_printf("MBED NFC EEPROM defined\r\n"); +#else + cmd_printf("MBED NFC Controller tests\r\n"); +#endif + +#ifdef TARGET_M24SR + cmd_printf("Using driver: M24SR\r\n"); +#endif +#ifdef TARGET_PN512 + cmd_printf("Using driver: PN512\r\n"); +#endif + { + int c; + while ((c = getc(stdin)) != EOF) { + cmd_char_input(c); + } + } + return 0; +} diff --git a/TEST_APPS/device/nfcapp/mbed_app.json b/TEST_APPS/device/nfcapp/mbed_app.json new file mode 100644 index 00000000000..291ce371f0d --- /dev/null +++ b/TEST_APPS/device/nfcapp/mbed_app.json @@ -0,0 +1,28 @@ +{ + "config": { + "TEST_NDEF_MSG_MAX": { + "help": "NFC-Driver buffer (EEPROM and Controller) maximum MAX Size of NFC message(s) driver buffer", + "value": 4096 + } + }, + "target_overrides": { + "DISCO_L475VG_IOT01A": { + "target.extra_labels_add": ["M24SR"], + "MBED_NFC_M24SR.nfceeprom": true + }, + "NUCLEO_F401RE": { + "target.extra_labels_add": ["PN512"], + "MBED_NFC_M24SR.nfceeprom": false + }, + "NUCLEO_F746ZG": { + "target.extra_labels_add": ["M24SR"], + "MBED_NFC_M24SR.X_NUCLEO_NFC01A1": true, + "MBED_NFC_M24SR.nfceeprom": true + }, + "NUCLEO_F429ZI": { + "target.extra_labels_add": ["M24SR"], + "MBED_NFC_M24SR.X_NUCLEO_NFC01A1": true, + "MBED_NFC_M24SR.nfceeprom": true + } + } +} diff --git a/TEST_APPS/device/nfcapp/uart.cpp b/TEST_APPS/device/nfcapp/uart.cpp new file mode 100644 index 00000000000..fa6bdf99ae9 --- /dev/null +++ b/TEST_APPS/device/nfcapp/uart.cpp @@ -0,0 +1,45 @@ +/* + * 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 +#include +#include "platform/FileHandle.h" +#include "drivers/UARTSerial.h" + +/** + * Macros for setting console flow control. + */ +#define CONSOLE_FLOWCONTROL_RTS 1 +#define CONSOLE_FLOWCONTROL_CTS 2 +#define CONSOLE_FLOWCONTROL_RTSCTS 3 +#define mbed_console_concat_(x) CONSOLE_FLOWCONTROL_##x +#define mbed_console_concat(x) mbed_console_concat_(x) +#define CONSOLE_FLOWCONTROL mbed_console_concat(MBED_CONF_TARGET_CONSOLE_UART_FLOW_CONTROL) + +#define SERIAL_CONSOLE_BAUD_RATE 115200 + +mbed::FileHandle *mbed::mbed_override_console(int) +{ + static mbed::UARTSerial console(STDIO_UART_TX, STDIO_UART_RX, + SERIAL_CONSOLE_BAUD_RATE); +#if CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_RTS + mbed::console.set_flow_control(SerialBase::RTS, STDIO_UART_RTS, NC); +#elif CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_CTS + mbed::console.set_flow_control(SerialBase::CTS, NC, STDIO_UART_CTS); +#elif CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_RTSCTS + mbed::console.set_flow_control(SerialBase::RTSCTS, STDIO_UART_RTS, STDIO_UART_CTS); +#endif + return &console; +} diff --git a/TEST_APPS/icetea_plugins/nfc_test_parsers.py b/TEST_APPS/icetea_plugins/nfc_test_parsers.py new file mode 100644 index 00000000000..982f75f6f32 --- /dev/null +++ b/TEST_APPS/icetea_plugins/nfc_test_parsers.py @@ -0,0 +1,137 @@ +""" +Copyright 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. +""" + + +from icetea_lib.Plugin.PluginBase import PluginBase +import re +import os + +class NfcTestParsers(PluginBase): + # constructor + def __init__(self): + super(NfcTestParsers, self).__init__() + + def get_parsers(self): + return { + 'iseeprom': self.status_parser, + 'getmaxndef': self.status_parser, + 'getlastnfcerror': self.trace_parser, + 'setlastnfcerror': self.trace_parser, + 'initnfc': self.trace_parser, # all commands that return an NFC error code + 'readmessage' : self.trace_parser, + 'erase' : self.trace_parser, + 'writelong' : self.trace_parser, + 'stop' : self.trace_parser, + 'start' : self.trace_parser, + 'setsmartposter': self.trace_parser, + 'getprotocols': self.trace_parser, + 'setprotocols': self.trace_parser + } + + def status_parser(self, response): + """ + commands that do NOT return an NFC result-code + """ + results = {'iseeprom': None, # 'true' if EEPROM + 'lastnfcerror':0, # ignored here + 'maxndef':None # actual driver buffer size + } + respLines = response.lines + for line in respLines: + try: + # iseeprom + value = PluginBase.find_one(line, "{{iseeprom=([\w]+)}}") + if value is not False: + if ("TRUE" == value.upper() or "1" == value): + results['iseeprom'] = True + else: + results['iseeprom'] = False + # max ndef + value = PluginBase.find_one(line, "{{maxndef=([0-9]+)}}") + if value is not False: + results['maxndef'] = int(value) + except re.error as e: # the framework gobbles errors in the plugin + print("Regex error",e,"occured in",os.path.basename(__file__), "!!") + raise e + return results + + def convert_from_hex(self, data): + value = [] + for byte in data.split(' '): + if bool(byte): + if len(byte) > 2: # the line wrapping code for huge lines appears to munch the space character between 2 bytes + value.append( int(byte[:2], 16)) + value.append( int(byte[2:4], 16)) + else: + value.append( int(byte, 16)) + return value + + # regex findall with additional filtering + @staticmethod + def find_all_hex_data(line, lookup): + """ + regexp search with one value to return. + + :param line: Line + :param lookup: regexp + :return: List of match groups or False + """ + results = re.findall(lookup, line) + if results is not False: + results = [m for m in results if len(m) > 2] # remove empty matches and + # non hex-data result entries + return results + return False + + def trace_parser(self, response): + results = {'iseeprom': None, # 'true' if EEPROM + 'lastnfcerror':None, # 0=OK >0 = error + 'nfcmessage':None, # NDEF array of bytes + 'protocols':None, # csv list + 'uri_id':None} # nfc URI type identifier + respLines = response.lines + started_read_data = False + partial_data = "" + for line in respLines: + try: + value = PluginBase.find_one(line, "{{lastnfcerror=([0-9]+)}}") + if value is not False: + results['lastnfcerror'] = int(value) + # {{nfcmessage=([0-9a-f\s]*)}} + # message may be split over multiple lines, so we will start a search and wait until we get a }} pair + data = PluginBase.find_one(line, "{{nfcmessage=([0-9a-f\s]*).*") + if data is not False: + started_read_data = True + if started_read_data: # read data until we see a }} pair + if "{{nfcmessage=" in line: + line = line[13:] # trim header + if PluginBase.find_one(line, ".*(}})") is not False: # search for end marker + started_read_data = False + line = line[:-2] # trim closing }} + partial_data += line + if not started_read_data: + results['nfcmessage'] = self.convert_from_hex(partial_data) + # t1t,t2t,t3t,isodep,nfcdef,t5t + value = PluginBase.find_one(line, "{{protocols=(([\w]*,?)*)}}") + if value is not False: + results['protocols'] = value # a csv list + # smartposter uri + value = PluginBase.find_one(line, "{{uri_id=([0-9]+)}}") + if value is not False: + results['uri_id'] = int(value) + except re.error as e: # the framework gobbles errors in the plugin + print("Regex error",e,"occured in",os.path.basename(__file__), "!!") + raise e + return results diff --git a/TEST_APPS/icetea_plugins/plugins_to_load.py b/TEST_APPS/icetea_plugins/plugins_to_load.py index 1322fbcc466..3cd4358450c 100644 --- a/TEST_APPS/icetea_plugins/plugins_to_load.py +++ b/TEST_APPS/icetea_plugins/plugins_to_load.py @@ -13,7 +13,10 @@ limitations under the License. """ from ip_test_parsers import IpTestParsers +from nfc_test_parsers import NfcTestParsers + plugins_to_load = { - "ip_test_parsers": IpTestParsers + "ip_test_parsers": IpTestParsers, + "nfc_test_parsers": NfcTestParsers } diff --git a/TEST_APPS/testcases/nfc/README.md b/TEST_APPS/testcases/nfc/README.md new file mode 100644 index 00000000000..8e4cf598361 --- /dev/null +++ b/TEST_APPS/testcases/nfc/README.md @@ -0,0 +1,336 @@ +# NFC tests. + +A CI test suite for NFC component. These tests validate card mbed emulation cases. The key use case is an NFC smart poster supporting comissioning workflow. +The SUT (system under test) is the NFC target. Tests exercise the framework and NDEF transactions when a NFC controller driver is used, or when the stack is configured for an NFC EEPROM chip in the system integration. + +This project is called CreamScone, which is an ice tea framework based cli-driven python test. + + + +- [NFC tests.](#nfc-tests) +- [Overview](#overview) +- [System Test high level requirement](#system-test-high-level-requirement) +- [Low level design](#low-level-design) +- [User Guide](#user-guide) + - [Test cases](#test-cases) + - [cli commands](#cli-commands) + - [How to](#how-to) + - [Running the tests](#running-the-tests) +- [Alternate NFC drivers note:](#alternate-nfc-drivers-note) +- [Known issues](#known-issues) + + + +# Overview +A set of tests run in CI, which can provide: +- Internal confidence +- Faster iterations +- More efficient work +- Clear escalation path + +A [Ice-tea](https://github.com/ARMmbed/mbed-os-5-docs/blob/development/docs/tools/testing/testing_icetea.md) based test suite. In it's simplest form, the suite merely drives API's for the NFC tag reader/writer, and validates a tag simulation running on an idle target, allows test cases in discovery, connection and read/write NDEF records. + +In order to mitigate the costs associated with system testing, use existing frameworks or parts and make it easy to test each individually. The [nfcpy](https://nfcpy.readthedocs.io/) Python library is used as the core of the *CreamScone* component which uses a PN53* device [SCL3711 usb reader](https://www.identiv.com/products/smart-card-readers/rfid-nfc-contactless/scl3711/) over USB to read the mbed simulated tag. This library is used to drive host interactions because it is portable (windows/GNULinux.) Remote NFC interactions will raise events in the mbed application. Connection and read/write events which get handled in user application on the target get wired up to asynchronously return responses and the data values (NDEF messages) to the ice tea framework. These events and data are thus tested/checked in the code (python) running on host. The target test app wraps the API, allowing many new test-scenarios to be written purely in Python. + +**NFC compliance** + +This suite only assists in NFC forum compliance. Developers must self certify using test tools from a provider to uncover early issues and get an external test vendor to achieve certification. + +**Mobiles and inter-op** + +Not in scope. Test procedures using a mobile phone app for Android and for IOS were not in scope for this test suite. + +![Basic Overview](img/simple-overview.png) + +Because the comissioning workflow application quality is the end goal, the NFC suite includes learnings to design the CI setup needed for future system testing that bring a mobile phone into the test-rig. The use of a mobile and bluetooth pairing as well as the continous integration system is not included. + + + +# System Test high level requirement +Mitigate risks identified, to the product from an internal view to supporting releases. Help customers develop a driver or a design, and reduce their production risks. In summary: +- Architecture risks and Api breaks +- Partner cannot NFC forum Certify +- Partner driver has bugs +- Code regressions in O/S +- Arm mbed provided driver or HAL has bugs +- Security vulnerabilities + +In short, “Empower engineers to efficiently ship quality code with confidence.†+ +**Design requirements: ** +- Identify and use tools to allow running in CI system, on many targets/configurations +- Be portable (can run in the CI system) using NFC explorer boards in lab for correctly co-located targets. +- Be able to set up and run locally in development + +# Low level design +**Components** + +API standalone Self tests [test_self.py](TEST_APPS\testcases\nfc\test_self.py) + +API E2E (wireless) tests [test_nfc.py](TEST_APPS\testcases\nfc\test_nfc.py) + +An [icetea](https://github.com/ARMmbed/icetea/blob/master/README.md) framework test program. Commandline (serial port) driven [target app](TEST_APPS\devices\nfcapp\main.cpp) aka _'CreamScone'_ which allows manual interactions with the driver. The app will send all API return data over serial link. + +An icetea plugin [nfc_test_parsers.py](TEST_APPS\icetea_plugins\nfc_test_parsers.py) which parses API responses over the serial port into python variables. + +MbedOS cli test app [main.cpp](TEST_APPS\device\nfcapp\main.cpp). The CLI commands return results asynchronously for most commands which get passed to and handled on a driver thread. + +**Future: ** A complete inter-op ready design intended to include a switch-box to allow the reader to connect to NFC enabled targets nearby using flying cables and a sticky-back antenna. The switch should allow selecting either alternative tags, or NFC peers, and provide inter-operability coverage. The switch-box may be controlled using GPIO either driven from spare IO pins on the target DUT itself (preferred option), or perhaps from a Raspberry pi. + +![inter-op](img/inter-op-view.png) + +![future](img/creamscone-mobile.png) + + +** Reference: ** + +[ARMmbed NFC design](https://github.com/ARMmbed/mbed-os/blob/master/docs/design-documents/nfc/nfc_design.md) + +[ARMmbed NFC code](https://github.com/ARMmbed/mbed-os/tree/master/features/nfc/nfc) + +[ARMmbed NFC example application](https://github.com/ARMmbed/mbed-os-example-nfc/) + +[Python NFC library](https://nfcpy.readthedocs.io/en/latest/topics/get-started.html) + +[NFC forum](https://nfc-forum.org/) + +# User Guide +This section covers the test case specification and how to run the test suite. + +The SUT target is rebooted between tests, since tests modify the target hardware state. + +## Test cases +CLI commands used by each test case describe the steps in a test. +** Basic local only cases ** +- test_nfc_error_codes : inintnfc , setlastnfcerror \ , getlastnfcerror + - Verify that the test CLI engine can initialize the stack, and can return NFC codes +- test_nfc_eeprom : iseeprom + - prints "true" if the target has an EEPROM configured stack, else prints "false" diagnostic only +- test_nfc_get_controller_protocols + - set nfc protocols supported +- test_nfc_set_controller_protocols + - get nfc protocols supported +- test_nfc_setsmartposter : setsmartposter \<-u> \ + - Sets a smartposter message, does not verify over wireless! (Only https protocol tested.) +- test_nfc_erase : initnfc, erase, readmessage + - Erase entire EEPROM, (behaviour for controller stack is null) +- test_nfc_write_long : initnfc, erase, writelong \, readmessage + - Write a very large text T record, and verify expected length written +- test_nfc_reprogrammed : iseeprom, initnfc, erase, wirelessly reprogram, wirelessly verify + - Use a reader/writer to program the tag using the default M24SR chip password +** End-to-End cases ** +- test_nfce2e_target_found + - tag can actually be detected wireless +test_nfce2e_type4_found + - correct tag detected +- test_nfce2e_discovery_loop + - Start or Stop discovery loop or disable depending on stack +test_nfce2e_read_stress + - read large message from device +test_nfce2e_reprogrammed + - modify large message from device +test_nfce2e_reprogrammed_stress + - write moderate message wirelessly +test_nfce2e_smartposter + - as with the basic test, but wirelessly + +** unimplemented due to limited support ** +- test_nfc_iso7816_supported +- test_nfc_add_iso7816_application +- test_nfc_set_tagtype +- test_nfc_get_tagtype + + +## cli commands +cli commands take parameters, its possible to type help at the cli for a list of commands. +``` +mbed sterm --baudrate 115200 +help +... +getlastnfcerror last NFC error code +setlastnfcerror self-test +initnfc init NFC driver +setsmartposter send smartposter NDEF +iseeprom NFC configEEPROM present +readmessage read EEPROM else return last message +erase erase EEPROM or clear last message +writelong fill entire FILE with pattern +... +``` +Note: Most commands also return a NFC status value (type "getlastnfcerror help" in console) which allow us to build negative test cases. +Note: Some commands only apply to NFC controllers, these commands fail with the appropriate not-supported code NFC_ERR_UNSUPPORTED and additionally return -2 error code to ice-tea. Commands like the erase command is a no-op on a NFC Controller target in the test app, for test-writting convenience. + + +**unimplemented CLI commands** +commands that were not implemented in the test app +- set/get tag type +- get/set iso7816 app + +**Excluded** +- power consumption +- throughput +- memory consumption + +## How to +**Wirring diagram for NFC Explorer with PN512** + +If using the Raspbery Pi explorer (PN512) board, use this pinout mapping diagram to connect the shield to the reference target. In this case a ST NucleoF401RE pinout is shown. +``` + Nucleo F401RE Explore NFC + (Arduino header) (pin1 on shield shown with a <|) + +-------+ +-------+ +--------+ + | [NC] | | [B8] | |[ 2][ 1]| + | [IOREF| | [B9] | |[ 4][ 3]| + | [RST] | | [AVDD]| |[ 6][ 5]| +1<---+ [3V3] | | [GND] | |[ 8][ 7]| + | [5V] | | [A5] +--->23 |[10][ 9]| + | [GND] | | [A6] +--->21 |[12][11]| +25<--+ [GND] | | [A7] +--->19 |[14][13]| + | [VIN] | | [B6] +--->3 |[16][15]| + | | | [C7] | |[18][17]| +26<--+ [A0] | | [A9] | |[20][19]| +16<--+ [A1] | | [A9] | |[22][21]| + | ... | | | |[24][23]| + | | | [A8] | |[26][25]| + +-------+ | ... | +--------+ + | | + | | + +-------+ + +Patch using jumper wires to the +indicated pins on the Shield. + +``` +Schematic (https://www.element14.com/community/docs/DOC-76384/l/explore-nfc-board-schematic) +To change pinouts, if your reference design or shield pins differ for the PN512 controller driver, open nfcProcessCtrl.cpp and find the code +```json +NFCProcessController::NFCProcessController(events::EventQueue &queue) : + // pins: mosi, miso, sclk, ssel, irq, rst + _pn512_transport(D11, D12, D13, D10, A1, A0), _pn512_driver( + &_pn512_transport), _queue(queue), _nfc_controller( + &_pn512_driver, &queue, _ndef_buffer) { +} +``` +modify pins as needed. + +**Compilation target drivers** + +If using the EEPROM driver, the mbed_app.json will contain +```json + "target_overrides": { + "DISCO_L475VG_IOT01A": { + "target.extra_labels_add": ["M24SR"] + } + } +... +``` +If using the Explorer Shield or PN512 driver mbed_app.json will add +```json + "target_overrides": { + "NUCLEO_F401RE": { + "target.extra_labels_add": ["PN512"] + } + } +... +``` + +## Running the tests +1. Wire an [explorer shield](https://cpc.farnell.com/nxp/explore-nfc/add-on-board-nfc-for-raspberry/dp/SC13404) up to and compile the target application. +2. Flash the binary to target and verify that it responds with an _`action NDEF record http://www.mbed.com`_ by using a mobile phone to scan over the antenna. +3. Install python (2.7) and install the nfcpy library, [see](https://nfcpy.readthedocs.io/en/latest/topics/get-started.html) . NFC reader can be connected to a serial port, or more commonly a USB dongle. Verify the dongle is functioning. +4. Place the scanner near the explorer shield. Run various test program commands like so: +- python ice_device -command describe + +**run the suite** +In a working folder, run + +`git clone https://github.com/ARMmbed/mbed-os.git` + + +If using the EEPROM driver, ( ST Discovery and the M24SR driver), you need the driver: +`git clone https://github.com/ARMmbed/mbed-nfc-m24sr.git' + + +And copy the files into your mbed root: +`xcopy ..\mbed-nfc-m24sr\*.* .\eeprom_driver\' + +To run the End2End tests, type: +`mbed test --icetea --app-config .\TEST_APPS\device\nfcapp\mbed_app.json -n test_nfce2e` + +To run only the standalone (readerless tests if you do not have a card reader), type: +`mbed test --icetea --app-config .\TEST_APPS\device\nfcapp\mbed_app.json -n test_nfc_eeprom,test_nfc_error_codes,test_nfc_setsmartposter,test_nfc_erase,test_nfc_write_long` + +# Alternate NFC drivers note: + +Please see the example json file .\TEST_APPS\testcases\nfc\mbed_app.json . The test does not check that you have any needed shield installed, so if it "hangs" at the point the "initnfc" command is used, the driver or shield may be the fault. The test assumes that MBED_CONF_NFCEEPROM is set to 1, if not it assumes that a NFC Controller driver is in use. To test drivers other than PN512 and M24SR, it is required to make test code changes that reference the driver. The driver can be instantiated once only. + +If the new driver you add is for Eeprom, open nfccommands.cpp and find the code and modify line as shown +++ +```C++ +NFCTestShim* new_testshim() { +#if MBED_CONF_NFCEEPROM +--- mbed::nfc::NFCEEPROMDriver& eeprom_driver = get_eeprom_driver(nfcQueue); + ++++ mbed::nfc::NFCEEPROMDriver& eeprom_driver = get_myeeprom_driver(nfcQueue); + + return ( (NFCTestShim *)(new NFCProcessEEPROM(nfcQueue, eeprom_driver)) ); +#else + return ((NFCTestShim *) (new NFCProcessController(nfcQueue))); +#endif // EEPROM +``` + +If the driver you add is a Controller driver, open nfcProcessCtrl.cpp and find the code +```C++ +NFCProcessController::NFCProcessController(events::EventQueue &queue) : + // pins: mosi, miso, sclk, ssel, irq, rst + _pn512_transport(D11, D12, D13, D10, A1, A0), _pn512_driver( + &_pn512_transport), _queue(queue), _nfc_controller( + &_pn512_driver, &queue, _ndef_buffer) { +} +``` +1. You will want to replace this and reference the desired controller driver. Likewise, this code is where pinout changes have to be made if using the supplied Controller driver. +2. Search for occurences of guard macros `#ifdef TARGET_PN512` , and `#endif`. Add a new guard macro and code for your specific controller driver at the same point. + + +Note: If the target uses an EEPROM, it need not be powered/running, to be read, mbedOS is not running at that point. + +**Device API error codes** + +You can issue the command "getlastnfcerror help" to see a list of error codes that are returned by most commands. +```C++ +#define NFC_OK 0 ///< No error +#define NFC_ERR_UNKNOWN 1 ///< Unknown error +#define NFC_ERR_LENGTH 2 ///< Length of parameter is wrong +#define NFC_ERR_NOT_FOUND 3 ///< Could not find item +#define NFC_ERR_UNSUPPORTED 4 ///< This action is not supported +#define NFC_ERR_PARAMS 5 ///< These parameters are not correct +#define NFC_ERR_BUFFER_TOO_SMALL 6 ///< The buffer is too small to store all data (buffer overflow) +#define NFC_ERR_TIMEOUT 7 ///< Timeout +#define NFC_ERR_CRC 8 ///< Checksum does not match +#define NFC_ERR_NOPEER 9 ///< No target/initiator in vicinity +#define NFC_ERR_PARITY 10 ///< Parity error +#define NFC_ERR_FIELD 11 ///< No RF field detected (or RF field lost) +#define NFC_ERR_COLLISION 12 ///< Collision detected +#define NFC_ERR_WRONG_COMM 13 ///< Communication error +#define NFC_ERR_PROTOCOL 14 ///< Protocol is not conformant +#define NFC_ERR_BUSY 15 ///< Resource is busy +#define NFC_ERR_CONTROLLER 16 ///< Controller failure +#define NFC_ERR_HALTED 17 ///< Target has been halted +#define NFC_ERR_MAC 18 ///< MAC does not match +#define NFC_ERR_UNDERFLOW 19 ///< Could not send data in time +#define NFC_ERR_DISCONNECTED 20 ///< Link has disconnected +#define NFC_ERR_ABORTED 21 ///< Command was aborted +``` +# Known issues + +1. The test app defines large buffer to store the maximum realistic message of 8K by default. For targets with limited memory (< ~32K) will need to modify the app config. Open mbed_app.config and modify the setting +` "TEST_NDEF_MSG_MAX" : 8192` to suit by overriding it on specific targets. The test cases (python code) which stress read/write will need updates if the buffer is reduced to 2K by editing test_nfc.py and modifying the line(s) to fall within the new macro value. +```python + # Values > 4 k incur large time costs + STRESS_BUFFLEN = 2050 +``` + +2. The test app and the supplied drivers only support Type4 tags. The test app thus does not exercise the different protocols and always sets iso-dep level functionality (Type4) for NFC Controller initialization. + +1. Test test_nfce2e_discovery_loop fails on NFC controller. The NFC controller driver discovery loop cannot be stopped manually. No major functionality is lost, it only prevents a complete disable of NFC at runtime. A bug ticket #IOTPAN-313 was logged to fix the stop function. The Controller still restarts discovery loop normally under app control after a peer disconnects. + +1. The smartposter NDEF record wrapper class `smartposter.h` is also provided as part of the NFC examples. The examples are not needed to compile the test app, but this example class may be usefull to customers. This file may thus move into the NFC component in future. diff --git a/TEST_APPS/testcases/nfc/__init__.py b/TEST_APPS/testcases/nfc/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/TEST_APPS/testcases/nfc/img/creamscone-mobile.png b/TEST_APPS/testcases/nfc/img/creamscone-mobile.png new file mode 100644 index 00000000000..114a622099f Binary files /dev/null and b/TEST_APPS/testcases/nfc/img/creamscone-mobile.png differ diff --git a/TEST_APPS/testcases/nfc/img/inter-op-view.png b/TEST_APPS/testcases/nfc/img/inter-op-view.png new file mode 100644 index 00000000000..5bf98715bb9 Binary files /dev/null and b/TEST_APPS/testcases/nfc/img/inter-op-view.png differ diff --git a/TEST_APPS/testcases/nfc/img/simple-overview.png b/TEST_APPS/testcases/nfc/img/simple-overview.png new file mode 100644 index 00000000000..3c02dd9f86d Binary files /dev/null and b/TEST_APPS/testcases/nfc/img/simple-overview.png differ diff --git a/TEST_APPS/testcases/nfc/mobileapi.md b/TEST_APPS/testcases/nfc/mobileapi.md new file mode 100644 index 00000000000..9c360ae3960 --- /dev/null +++ b/TEST_APPS/testcases/nfc/mobileapi.md @@ -0,0 +1,94 @@ +# NFC test SDK comparison + +A comparison of the SDKs exposed to manage NFC tags on Android IOs and Python module PyNFC. + + + +- [NFC test SDK comparison](#nfc-test-sdk-comparison) +- [Overview](#overview) +- [Comparison](#comparison) + - [IOS (objective C)](#ios-objective-c) + - [Android (Java)](#android-java) + - [pynfc (python)](#pynfc-python) +- [Observe](#observe) + + + +# Overview +A comparison which analyses NFC use cases on mobile, as background to the test case design/implementation in the comissioning workflow :NFC-Bluetooth-pairing application. +- Analyse the [Apple API](https://developer.apple.com/documentation/corenfc) +- Analyse the [Android API](https://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc#java) +- Python test [pynfc modules](https://nfcpy.readthedocs.io/en/latest/modules/index.html) + + +# Comparison +From the lowest level, each programmer interface has a definition for Errors, Link, NDEF, Tags and Sessions. +Note: Comparisons are high level and use past experience and old docs. + + +## IOS (objective C) +1. Errors: + are a struct with 3 members:
+ int:value,
struct:string:usererror
struct:string:localized +1. isodep: + + not supported +1. NDEF support parameters with + + payload
and Typename, +4. Tags: + + Are an Object representing tag +5. Sessions are managed using + + Delegate &callbacks + +## Android (Java) +1. Errors: + + thrown as IOException with cause and message, there are no returned error datas +2. isodep: + + get/set communication parameters and RAW. +3. NDEF: + + Includes SNEP +4. Tags : + + (3)A,(3)B,(4)F,V and isoDep layer +5. Sessions + + Intents and Actions, runtime registration of PendingIntent() allows hooking using tag filters + +## pynfc (python) +1. Errors : + + raises Exceptions nfc.clf.Error and others per class +2. isodep: + + get/set communication parameters and RAW. +3. NDEF: + + full implementation and types. Includes SNEP +4. Tags : + + 1,2,(3)A,(3)B,(4)F isoDep layer +5. Sessions : + + using delegate class callbacks + +# Observe +Negative test cases would be better designed around the user cases, than around the implementations, base error conditions at the API layer look more like +- UnsupportedTarget +- Communication +- Protocol +- (w) Transmission +- (w) Timeout +- (w) BrokenLink +- ValueError + +Valuable test data cases shall be for valid and boundary cases for the smartposter NDEF record: +- uri – URI string ASCII only +- title – Smart poster title(s), (additional internationalizations with IANA codes not tested) +- icons – omitted +- action – The recommended action , a string diff --git a/TEST_APPS/testcases/nfc/nfc_clf_wrapper.py b/TEST_APPS/testcases/nfc/nfc_clf_wrapper.py new file mode 100644 index 00000000000..8a47dbfca19 --- /dev/null +++ b/TEST_APPS/testcases/nfc/nfc_clf_wrapper.py @@ -0,0 +1,98 @@ +""" +Copyright (c) 2017, 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. +""" + +import time +import nfc +from nfc.clf import RemoteTarget +import logging + +""" + Wrap calls to nfcpi testing module, handle loading the driver +""" + + + +def debug_nfc_data(key, value): + """ + print useful data values for the host/user {{in between}} easy to spot brackets. + """ + text = "{{%s=%s}}" % (key, value) + logger.info(text) + + +logger = logging.getLogger() + + +class NfcWrapper: + """ + Finds the NFC reader USB front-end and prepares it for use. + """ + def __init__(self): + # will need a parameter here to help with libusb detection? + # clf.open("usb:04e6:5591") will open the SCL3711-NFC + logger.info("Initializing the NFC tag reader...") + self.clf = nfc.ContactlessFrontend() + if (self.clf.open("usb") ): # the NFC reader was not detected on any USB port! + logger.info("NFC Frontend found OK") + else: + logger.error("The NFC reader was not detected on any USB port!") + self.clfResponse = None + + def connect(self): + # note: only supporting type4 + time.sleep(0.5) + after5s = lambda: time.time() - started > 5 + started = time.time() + + tag = self.clf.connect( rdwr={'on-connect': lambda tag: False}, + terminate = after5s) + if tag: # None if timeout expires + logging.info("NFCReader: connected " + str(tag)) + else: + logging.info("NFCReader: warning, no tag detected ") + return tag + + def mute(self): + """turn off the reader radio""" + if (self.clf.device is not None): + logging.info("NFCReader: radio mute" + self.clf.device.product_name) + self.clf.device.mute() + else: + logging.warning("NFCReader: reader not initialized!") + + def disconnect(self): + logging.info("NFCReader: close frontend.") + self.clf.close() + +""" +Handle interactions with the NFC reader, and singleton +""" +class ContactlessCommandRunner(): + + """ + Lazy initialization singleton to open the reader once only - else when the framework scans for + tests, it causes us to open the reader. This breaks the Windows driver. + """ + def __getattr__(self, name): + if name == 'nfc': + + if ContactlessCommandRunner.__nfc_wrapper is None: + ContactlessCommandRunner.__nfc_wrapper = NfcWrapper() + return ContactlessCommandRunner.__nfc_wrapper + + __nfc_wrapper = None + diff --git a/TEST_APPS/testcases/nfc/nfc_cli_helper.py b/TEST_APPS/testcases/nfc/nfc_cli_helper.py new file mode 100644 index 00000000000..8d49dc9044f --- /dev/null +++ b/TEST_APPS/testcases/nfc/nfc_cli_helper.py @@ -0,0 +1,80 @@ +""" +Copyright (c) 2017, 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. +""" + +# ice-tea cli commands decorator class + + +from nfc_messages import NfcErrors +import logging +import icetea_lib.tools.asserts as asserts + +# Values > 1 k incur large time costs +LARGE_BUFFLEN = 400 # Value for large buffer tests, a maximum value can be read from the target with a command + +class CliHelper(): + """ + Helper methods, checks the nfc SDK error-code for you, makes writing a negative test much easier + Example: + if (target_is_eeprom): + nfc_command("dev1", "start", expected_retcode=-2, expected_nfc_error= NfcErrors.nfc_err_unsupported) + else: + nfc_command("dev1", "start") + """ + + def nfc_command(self, k, cmd, # pylint: disable=invalid-name + wait=True, + timeout=10, + expected_retcode=0, + asynchronous=False, + report_cmd_fail=True, + expected_nfc_error=NfcErrors.nfc_ok): + """ + By default will assert if the NFC result code is non-zero. + """ + response = self.command(k, cmd, wait, timeout, expected_retcode, asynchronous, report_cmd_fail) + asserts.assertEqual(int(response.parsed['lastnfcerror']), expected_nfc_error.value) + return response + + @staticmethod + def command_is(string, command): + return string.split(' ')[0] == command + + @staticmethod + def debug_nfc_data(key, value): + """ + print useful data values for the host/user with a >> preamble to make it easy to spot + """ + text = ">> %s=%s" % (key, value) + logging.Logger.info(text) + + def assert_binary_equal(self, left, right): + asserts.assertEqual(len(left), len(right), "Buffers are not same length %d %d" % (len(left), len(right))) + i = 0 + while i < len(left): + asserts.assertEqual(left[i], ord(right[i]), ("Missmatch @offset %d 0x%x <> 0x%x" % (i, left[i], ord(right[i]))) ) + i = i + 1 + + def assert_text_equal(self, left, right): + """ + Asserts if the 2 buffers (Text) differ + """ + asserts.assertEqual(len(left), len(right), "Buffers are not same length %d %d" % (len(left), len(right))) + i = 0 + while i < len(left): + asserts.assertEqual(ord(left[i]), ord(right[i]), ("Missmatch @offset %d %d <> %d" % (i, ord(left[i]), ord(right[i]))) ) + i = i + 1 + diff --git a/TEST_APPS/testcases/nfc/nfc_messages.py b/TEST_APPS/testcases/nfc/nfc_messages.py new file mode 100644 index 00000000000..895dab29437 --- /dev/null +++ b/TEST_APPS/testcases/nfc/nfc_messages.py @@ -0,0 +1,89 @@ +""" +Copyright (c) 2017, 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. +""" + +import nfc +from enum import Enum +import logging + + +class NfcErrors(Enum): + nfc_ok = 0 + nfc_err_unknown = 1 + nfc_err_length = 2 + nfc_err_not_found = 3 + nfc_err_unsupported = 4 + nfc_err_params = 5 + nfc_err_buffer_too_small = 6 + nfc_err_timeout = 7 + nfc_err_crc = 8 + nfc_err_nopeer = 9 + nfc_err_parity = 10 + nfc_err_field = 11 + nfc_err_collision = 12 + nfc_err_wrong_comm = 13 + nfc_err_protocol = 14 + nfc_err_busy = 15 + nfc_err_controller = 16 + nfc_err_halted = 17 + nfc_err_mac = 18 + nfc_err_underflow = 19 + nfc_err_disconnected = 20 + nfc_err_aborted = 21 + + +''' +return a 'T'ext text ndef record +''' +def make_textrecord(text, language='en-US'): + return nfc.ndef.Message(nfc.ndef.TextRecord(text, language)) + +''' +Return an NDEF message +resource -- url +titles -- list of : colon delimited titles where an optional language code precedes the title - +if lang codes are omitted, 'en' is assumed +action -- one of default/save/exec/edit +''' +def make_smartposter(resource, titles, action = 'default'): + record = nfc.ndef.SmartPosterRecord(resource) + for title in titles: + lang, text = title.split(':', 1) if ':' in title else ('en', title) + record.title[lang] = text + if not action in ('default', 'exec', 'save', 'edit'): + logging.error("action not one of 'default', 'exec', 'save', 'edit'") + return + record.action = action + + return nfc.ndef.Message(record) + + +''' +Program the provided NDEF messsage into the tag (authentication is not required) +''' +def program_remote_tag(message, tag): + if not tag.ndef.is_writeable: + logging.error("This Tag is not writeable.") + return False + tag.ndef.message = message + logging.info("Programmed tag OK.") + return True + +''' +Builds a long string by repeating a shorter string up to the required length +''' +def repeat_string_to_length(string_to_expand, length): + return (string_to_expand * ((length/len(string_to_expand))+1))[:length] diff --git a/TEST_APPS/testcases/nfc/test_nfc.py b/TEST_APPS/testcases/nfc/test_nfc.py new file mode 100644 index 00000000000..cdad33f9e94 --- /dev/null +++ b/TEST_APPS/testcases/nfc/test_nfc.py @@ -0,0 +1,259 @@ +""" +Copyright (c) 2017, 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. +""" + + +from icetea_lib.bench import Bench +from nfc_clf_wrapper import ContactlessCommandRunner +import nfc_messages +import time +from mbed_clitest.tools.tools import test_case +import icetea_lib.tools.asserts as asserts +from nfc_messages import NfcErrors +from nfc_cli_helper import CliHelper +from nfc_cli_helper import LARGE_BUFFLEN + + +class CreamSconeTests(Bench, CliHelper): + """ + This test wrapper requires a usb connected contactless card reader dongle, and allows E2E testing. + See readme file for details + """ + def __init__(self, **kwargs): + testcase_args = { + 'title':"NFC tests with a reader", + 'status':"development", + 'purpose':"NFC e2e", + 'component':["NFC"], + 'type':"regression", + 'requirements':{ + "duts": { + '*': { + "count": 1, + "type": "hardware", + "application": { + "name": "TEST_APPS-device-nfcapp" + } + }, + "1": {"nick": "dev1"} + } + } + } + testcase_args.update(kwargs) + Bench.__init__(self, **testcase_args) + + def setup(self): + self.logger.info("Test setup: Open Reader and mute...") + try: + self.clf = ContactlessCommandRunner() + self.clf.nfc.mute() # mute if the last test case did not mute + except: + raise asserts.TestStepFail("Could not find NFC reader") + + def teardown(self): + self.logger.info("Test teardown: Reboot target...") + self.reset_dut() + self.clf.nfc.mute() # mute if the last test case did not mute + + def prepare_target(self): + """ + simple set up a clean target device + :return: + """ + response = self.nfc_command("dev1", "iseeprom") + eeprom = response.parsed['iseeprom'] + self.logger.info("Target includes NFCEEPROM: %s" % eeprom) + self.nfc_command("dev1", "initnfc") + if not eeprom: + self.nfc_command("dev1", "start") + + self.nfc_command("dev1", "erase") + + +@test_case(CreamSconeTests) +def test_nfce2e_target_found(self): + """ + smoke - Our emulated tag is detectable + """ + + response = self.nfc_command("dev1", "iseeprom") + eeprom = response.parsed['iseeprom'] + + # Invokes icetea command, this method also checks the NFC api result expected_nfc_error=NFC_OK + # Tester can supply the expected_nfc_error=NFC_XXX parameter, to override. + self.nfc_command("dev1", "initnfc") + if not eeprom: + self.nfc_command("dev1", "start") + + tag = self.clf.nfc.connect() + asserts.assertNotNone(tag, "Could not connect to any tag") + + +@test_case(CreamSconeTests) +def test_nfce2e_smartposter(self): + """ + check - Tag can be set and read via contactless + """ + expectedURI = "https://www.mbed.com" # ensure that these differ per test case + + self.prepare_target() + + # write poster tag to target + self.command("dev1", "setsmartposter %s" % expectedURI) + + tag = self.clf.nfc.connect() + asserts.assertNotNone(tag, "Could not connect to any tag") + asserts.assertEqual(1, len(tag.ndef.records), "expected number NDEF records") + + asserts.assertEqual(tag.ndef.records[0].__class__.__name__, "SmartposterRecord", "expected SmartposterRecord") + asserts.assertEqual(expectedURI, tag.ndef.records[0].uri_records[0].uri, "expected exact URI") + + +@test_case(CreamSconeTests) +def test_nfce2e_reprogrammed(self): + """ + check - Tag can be programmed from a remote and read via contactless + """ + expectedURI = "https://www.google.com" + + self.prepare_target() + + # program a poster tag to target + self.logger.info("Write Smartposter MESSAGE wirelessly") + tag = self.clf.nfc.connect() + asserts.assertNotNone(tag, "Could not connect to any tag") + smartposter = nfc_messages.make_smartposter(expectedURI, ["en-US:Other search engines exist"]) + nfc_messages.program_remote_tag(smartposter, tag) + self.logger.info("Remote programmed %d bytes Smartposter" % len(str(smartposter))) + + self.logger.info("Write back Smartposter MESSAGE wirelessly") + tag = self.clf.nfc.connect() + asserts.assertNotNone(tag, "Could not re-connect to any tag") + + asserts.assertEqual(tag.ndef.records[0].__class__.__name__, "SmartposterRecord", "expected SmartposterRecord") + asserts.assertEqual(expectedURI, tag.ndef.records[0].uri_records[0].uri, "expected exact URI") + self.clf.nfc.mute() # disable radio, to allow a local session + + # verify in target + response = self.nfc_command("dev1", "readmessage") + + # check contents + expected_message = str(smartposter) + self.assert_binary_equal(response.parsed['nfcmessage'], expected_message) + + +@test_case(CreamSconeTests) +def test_nfce2e_read_stress(self): + """ + check - Large record can be programmed in and read via contactless + """ + message_to_repeat = 'thequickbrownfoxjumpedoverthelazydog' # repeating message written + text_length = LARGE_BUFFLEN + # calculate actual message to compare to using the library + expected_text = nfc_messages.repeat_string_to_length(message_to_repeat, text_length) + + self.prepare_target() + # write a large message to the tag via API, then read it wirelessly + self.logger.info("Write/set tag MESSAGE (%d) bytes" % text_length) + self.nfc_command("dev1", "writelong %d %s" % (text_length,message_to_repeat)) + + + # assert that read the eeprom contents gives correct data and length + self.logger.info("Read tag MESSAGE wirelessly" ) + tag = self.clf.nfc.connect() + asserts.assertNotNone(tag, "Could not connect to any tag") + + asserts.assertEqual(tag.ndef.records[0].__class__.__name__, "TextRecord", "expected TextRecord") + self.assert_text_equal(tag.ndef.records[0].text, expected_text) + + +@test_case(CreamSconeTests) +def test_nfce2e_reprogrammed_stress(self): + """ + check - Large record can be programmed from a remote and read via contactless + """ + message_to_repeat = 'thequickbrownfoxjumpedoverthelazydog' # repeating message written + text_length = LARGE_BUFFLEN # large values slow down test runs and may time out + + # calculate actual message to compare to using the library + message = nfc_messages.make_textrecord( nfc_messages.repeat_string_to_length(message_to_repeat, text_length)) + expected_message = str(message) + + self.prepare_target() + # program a large tag to target remotely + self.logger.info("Write tag MESSAGE wirelessly (%d) bytes" % len(str(message))) + tag = self.clf.nfc.connect() + asserts.assertNotNone(tag, "Could not connect to any tag") + nfc_messages.program_remote_tag(message, tag) + self.logger.info("%d bytes chunk of data written to tag remotely" % len(str(message))) + self.clf.nfc.mute() + + # read device locally + self.logger.info("Read back tag MESSAGE wirelessly") + tag = self.clf.nfc.connect() + asserts.assertNotNone(tag, "Could not re-connect to any tag") + asserts.assertEqual(tag.ndef.records[0].__class__.__name__, "TextRecord", "expected TextRecord") + self.clf.nfc.mute() # disable the reader radio, to allow local access + + # verify in target + response = self.nfc_command("dev1", "readmessage") + self.assert_binary_equal(response.parsed['nfcmessage'], expected_message) + + +@test_case(CreamSconeTests) +def test_nfce2e_discovery_loop(self): + """ + check - Controller discovery loop stop/start + fails : blocked by an issue on NFC controllers only + """ + expectedURI = "https://www.nasa.com" # ensure that these differ per test case + + response = self.command("dev1", "iseeprom") # will hold result from the init lib call + eeprom = response.parsed['iseeprom'] + self.logger.info("Target includes NFCEEPROM: %s" % eeprom) + + self.nfc_command("dev1", "initnfc") # this NOT automatically start discovery at the same time, the test command + # "start" must be used on a controller. (Eeeproms always have the loop enabled.) + # By default, the test app automatically starts discovery loop again after a reader disconnects from the controller. + # Automatic resume after disconnect can be turned off by using command "start man" , the default is "start auto" . + + if not eeprom: + # we are muted at this point, and the target is not in discovery mode yet. + tag = self.clf.nfc.connect() + asserts.assertNone(tag, "post-init: Tag discovery loop should be stopped!") + self.nfc_command("dev1", "stop") + time.sleep(1) + + tag = self.clf.nfc.connect() + asserts.assertNone(tag, "post-stop: Tag discovery loop should be stopped!") + self.nfc_command("dev1", "start") + time.sleep(1) + + tag = self.clf.nfc.connect() + asserts.assertNotNone(tag, "Could not connect to any tag") + + self.clf.nfc.mute() + self.nfc_command("dev1", "stop") + time.sleep(10) + tag = self.clf.nfc.connect() + # test blocked by issue raised IOTPAN313 NFC Controller discovery can stop but cannot restart - PN512 + asserts.assertNone(tag, "post-restart: Tag discovery loop should be stopped!") + + else: + # eeprom, so not supported + self.nfc_command("dev1", "start", expected_retcode=-2, expected_nfc_error= NfcErrors.nfc_err_unsupported ) + self.nfc_command("dev1", "stop", expected_retcode=-2, expected_nfc_error= NfcErrors.nfc_err_unsupported ) + diff --git a/TEST_APPS/testcases/nfc/test_self.py b/TEST_APPS/testcases/nfc/test_self.py new file mode 100644 index 00000000000..d59eeb3c46d --- /dev/null +++ b/TEST_APPS/testcases/nfc/test_self.py @@ -0,0 +1,256 @@ +""" +Copyright (c) 2017, 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. +""" + +import time +from icetea_lib.bench import Bench +from mbed_clitest.tools.tools import test_case +import icetea_lib.tools.asserts as asserts +import nfc_messages +from nfc_messages import NfcErrors +from nfc_cli_helper import CliHelper +from nfc_cli_helper import LARGE_BUFFLEN +import nfc + +""" +Standalone (no NFC reader needed) tests, which cover API with no end-to-end checks. +""" +class CreamSconeSelfTests(Bench, CliHelper): + def __init__(self, **kwargs): + testcase_args = { + 'title':"NFC tests with no reader", + 'status':"development", + 'purpose':"NFC target-only checks", + 'component':["NFC"], + 'type':"smoke", + 'requirements':{ + "duts": { + '*': { + "count": 1, + "type": "hardware", + "application": { + "name": "TEST_APPS-device-nfcapp" + } + }, + "1": {"nick": "dev1"} + } + } + } + testcase_args.update(kwargs) + Bench.__init__(self, **testcase_args) + + def setup(self): + pass + + def teardown(self): + self.logger.info("Test teardown: Reboot target...") + self.reset_dut() + + +""" +smoke - target app is running, and can exchange simple values +""" +@test_case(CreamSconeSelfTests) +def test_nfc_error_codes(self): + wally = NfcErrors.nfc_err_not_found + for x in range(0, 3): + self.nfc_command("dev1", "setlastnfcerror %d" % wally.value, expected_nfc_error=wally) + self.nfc_command("dev1", "getlastnfcerror", expected_nfc_error=wally) + + self.nfc_command("dev1", "setlastnfcerror %d" % 0) + self.nfc_command("dev1", "getlastnfcerror") + + +""" +smoke - target app reports if NFC eeprom driver present +""" +@test_case(CreamSconeSelfTests) +def test_nfc_eeprom(self): + + response = self.command("dev1", "iseeprom") # will hold result from the init lib call + self.logger.info("Target includes NFCEEPROM: %s" % response.parsed['iseeprom']) + +""" +check - Assert discovery can be started/stopped +""" +@test_case(CreamSconeSelfTests) +def test_nfc_discovery(self): + + self.nfc_command("dev1", "initnfc") + + response = self.nfc_command("dev1", "iseeprom") # will hold result from the init lib call + eeprom = response.parsed['iseeprom'] + self.logger.info("Target includes NFCEEPROM: %s" % eeprom) + if not eeprom: + self.nfc_command("dev1", "start") + self.nfc_command("dev1", "stop") + self.nfc_command("dev1", "start") + self.nfc_command("dev1", "stop") + else: + # eeprom, so not supported + self.nfc_command("dev1", "start", expected_retcode=-2, expected_nfc_error = NfcErrors.nfc_err_unsupported ) + self.nfc_command("dev1", "stop", expected_retcode=-2 , expected_nfc_error= NfcErrors.nfc_err_unsupported ) + +""" +check - Create a SmartPoster but does not read it back +""" +@test_case(CreamSconeSelfTests) +def test_nfc_setsmartposter(self): + + self.nfc_command("dev1", "initnfc") + + self.nfc_command("dev1", "setsmartposter https://www.mbed.com") + +@test_case(CreamSconeSelfTests) +def test_nfc_erase(self): + self.nfc_command("dev1", "initnfc") + response = self.nfc_command("dev1", "iseeprom") + eeprom = response.parsed['iseeprom'] + if eeprom: + self.logger.info("Target includes NFCEEPROM: %s" % eeprom) + self.nfc_command("dev1", "erase", timeout=30) + response = self.nfc_command("dev1", "readmessage") + asserts.assertEqual(response.parsed['nfcmessage'] is None, True) + +''' +check - Build a long message by copying a string to stress the driver with a nominal buffer. Verify contents of entire message +can be read back. +''' +@test_case(CreamSconeSelfTests) +def test_nfc_write_long(self): + messageRep = 'thequickbrownfoxjumpedoverthelazydog' # repeating message written + textLength = LARGE_BUFFLEN # large values take longer + # calculate actual message to compare to using the library + message = nfc_messages.make_textrecord( nfc_messages.repeat_string_to_length(messageRep, textLength)) + expected_message = str(message) + + self.nfc_command("dev1", "initnfc") + response = self.nfc_command("dev1", "iseeprom") + eeprom = response.parsed['iseeprom'] + if eeprom: + self.logger.info("Target includes NFCEEPROM: %s" % eeprom) + self.nfc_command("dev1", "erase") + self.nfc_command("dev1", "writelong %d %s" % (textLength,messageRep)) + response = self.nfc_command("dev1", "readmessage") + # assert that read the eeprom contents gives textlength bytes (including framing bytes which will vary) + self.assert_binary_equal(response.parsed['nfcmessage'], expected_message) + +''' +check - Query supported protocols if we have a controller +''' +@test_case(CreamSconeSelfTests) +def test_nfc_get_controller_protocols(self): + self.nfc_command("dev1", "initnfc") + + response = self.nfc_command("dev1", "iseeprom") + eeprom = response.parsed['iseeprom'] + if eeprom: + self.logger.info("Test ignore - target includes NFCEEPROM: %s" % eeprom) + else: + response = self.nfc_command("dev1", "getprotocols") + self.logger.info("Protocols = %s" % response.parsed['protocols']) + self.assertNotEqual(len(response.parsed['protocols']), 0, "Expected at least 1 protocol supported") + + +''' +check - Can set used protocols if we have a controller +Note: Currently only support Typ4 tags in PN512 driver +''' +@test_case(CreamSconeSelfTests) +def test_nfc_set_controller_protocols(self): + self.nfc_command("dev1", "initnfc") + + response = self.nfc_command("dev1", "iseeprom") + eeprom = response.parsed['iseeprom'] + if eeprom: + # eeproms do not allow target control + self.logger.info("Test ignore - target includes NFCEEPROM: %s" % eeprom) + else: + self.nfc_command("dev1", "setprotocols t1t") + self.nfc_command("dev1", "setprotocols t2t") + self.nfc_command("dev1", "setprotocols t3t") + self.nfc_command("dev1", "setprotocols isodep") + self.nfc_command("dev1", "setprotocols nfcdep") + self.nfc_command("dev1", "setprotocols t5t") + self.nfc_command("dev1", "setprotocols t1t t2t t3t isodep nfcdep t5t") + +''' +check - SmartPoster URI forms are supported (in the test-app) +''' +@test_case(CreamSconeSelfTests) +def test_nfc_check_smartposter_uri_forms(self): + def enum(**enums): + return type('Enum', (), enums) + + IDS = enum(NA=0x00, # Not applicable + HTTP_WWW=0x01, # http://www. + HTTPS_WWW=0x02, # https://www. + HTTP=0x03, # http:// + HTTPS=0x04, # https:// + TEL=0x05, # tel: + MAILTO=0x06, # mailto: + FTP_ANONYMOUS=0x07, # ftp://anonymous:anonymous@ + FTP_FTP=0x08, # ftp://ftp. + FTPS=0x09, # ftps:// + SFTP=0x0A, # sftp:// + SMB=0x0B, # smb:// + NFS=0x0C, # nfs:// + FTP=0x0D, # ftp:// + DAV=0x0E, # dav:// + NEWS=0x0F, # news: + TELNET=0x10, # telnet:// + IMAP=0x11, # imap: + RSTP=0x12, # rstp:// + URN=0x13, # urn: + POP=0x14, # pop: + SIP=0x15, # sip: + SIPS=0x16, # sips: + TFTP=0x17, # tftp: + BTSPP=0x18, # btspp:// + BTL2CAP=0x19, # btl2cap:// + BTGOEP=0x1A, # btgoep:// + TCPOBEX=0x1B, # tcpobex:// + IRDAOBEX=0x1C, # irdaobex:// + FILE=0x1D, # file:// + URN_EPC_ID=0x1E, # urn:epc:id: + URN_EPC_TAG=0x1F, # urn:epc:tag: + URN_EPC_PAT=0x20, # urn:epc:pat: + URN_EPC_RAW=0x21, # urn:epc:raw: + URN_EPC=0x22, # urn:epc: + URN_NFC=0x23, # urn:nfc: + ) + self.nfc_command("dev1", "initnfc") + result = self.nfc_command("dev1", "setsmartposter https://www.mbed.com") + asserts.assertEqual(result.parsed['uri_id'], IDS.HTTPS_WWW, "uri type expected HTTPS_WWW") + result = self.nfc_command("dev1", "setsmartposter http://www.mbed.com") + asserts.assertEqual(result.parsed['uri_id'], IDS.HTTP_WWW) + result = self.nfc_command("dev1", "setsmartposter https://www.topleveldomain") + asserts.assertEqual(result.parsed['uri_id'], IDS.HTTPS_WWW) + result = self.nfc_command("dev1", "setsmartposter tel:555-5551234") + asserts.assertEqual(result.parsed['uri_id'], IDS.TEL) + result = self.nfc_command("dev1", "setsmartposter ftp://www.mbed.com/files/") + asserts.assertEqual(result.parsed['uri_id'], IDS.FTP ) + +''' +smoke - driver buffer size can be retrieved +''' +@test_case(CreamSconeSelfTests) +def test_nfc_get_max_ndef(self): + self.nfc_command("dev1", "initnfc") + max = self.nfc_command("dev1", "getmaxndef").parsed['maxndef'] + self.logger.info("Target NDEF max buffer size %d" % max) + self.logger.info("Teststress size %d" % LARGE_BUFFLEN) + diff --git a/UNITTESTS/CMakeLists.txt b/UNITTESTS/CMakeLists.txt index 7e93bf5c68f..95806c5b7c5 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" @@ -92,6 +92,7 @@ set(unittest-includes-base "${PROJECT_SOURCE_DIR}/target_h/events" "${PROJECT_SOURCE_DIR}/target_h/events/equeue" "${PROJECT_SOURCE_DIR}/target_h/platform" + "${PROJECT_SOURCE_DIR}/target_h/drivers" "${PROJECT_SOURCE_DIR}/stubs" "${PROJECT_SOURCE_DIR}/.." "${PROJECT_SOURCE_DIR}/../features" diff --git a/UNITTESTS/drivers/Watchdog/test_watchdog.cpp b/UNITTESTS/drivers/Watchdog/test_watchdog.cpp new file mode 100644 index 00000000000..c8170e6acf5 --- /dev/null +++ b/UNITTESTS/drivers/Watchdog/test_watchdog.cpp @@ -0,0 +1,142 @@ +/* + * 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 "gtest/gtest.h" +#include "gmock/gmock.h" +#include "drivers/Watchdog.h" + +class TestWatchdog : public testing::Test { +public: + static uint32_t expect_assert_count; + static uint32_t expect_reset_count; +protected: + virtual void SetUp() {} + virtual void TearDown() {} +}; + +uint32_t TestWatchdog::expect_assert_count = 0; +uint32_t TestWatchdog::expect_reset_count = 0; + +void mbed_assert_internal(const char *expr, const char *file, int line) +{ + TestWatchdog::expect_assert_count++; +} + +void mock_system_reset() +{ + TestWatchdog::expect_reset_count++; +} + +TEST_F(TestWatchdog, wdog_constructor) +{ + EXPECT_LE(sizeof(mbed::Watchdog), 1024); + mbed::Watchdog watchdog(500, "watchdog_unittest"); +} + +TEST_F(TestWatchdog, wdog_constructor_with_default_value) +{ + mbed::Watchdog watchdog; +} + +TEST_F(TestWatchdog, wdog_start_pass) +{ + mbed::Watchdog watchdog(500, "watchdog_unittest"); + watchdog.start(); + watchdog.stop(); + EXPECT_EQ(0, TestWatchdog::expect_assert_count); +} + +TEST_F(TestWatchdog, wdog_kick_pass) +{ + mbed::Watchdog watchdog(500, "watchdog_unittest"); + watchdog.start(); + watchdog.kick(); + watchdog.stop(); + EXPECT_EQ(0, TestWatchdog::expect_assert_count); +} + +TEST_F(TestWatchdog, wdog_stop_fail) +{ + mbed::Watchdog watchdog(500, "watchdog_unittest"); + watchdog.start(); + watchdog.stop(); + watchdog.stop(); + EXPECT_EQ(1, TestWatchdog::expect_assert_count); + TestWatchdog::expect_assert_count = 0; +} +TEST_F(TestWatchdog, wdog_kick_fail) +{ + mbed::Watchdog watchdog(500, "watchdog_unittest"); + watchdog.kick(); + EXPECT_EQ(1, TestWatchdog::expect_assert_count); + TestWatchdog::expect_assert_count = 0; +} + +TEST_F(TestWatchdog, wdog_start_kick_pass) +{ + mbed::Watchdog watchdog(500, "watchdog_unittest"); + mbed::Watchdog watchdog1(600, "watchdog_unittest_1"); + mbed::Watchdog watchdog2(700, "watchdog_unittest_2"); + watchdog.start(); + watchdog1.start(); + watchdog2.start(); + watchdog1.kick(); + watchdog.kick(); + watchdog2.kick(); + watchdog1.stop(); + watchdog.stop(); + watchdog2.stop(); + EXPECT_EQ(0, TestWatchdog::expect_assert_count); +} + +TEST_F(TestWatchdog, wdog_start_process_pass) +{ + mbed::Watchdog watchdog(500, "watchdog_unittest"); + watchdog.start(); + watchdog.kick(); + watchdog.process((HW_WATCHDOG_TIMEOUT / 2)); + watchdog.stop(); + EXPECT_EQ(0, TestWatchdog::expect_assert_count); + EXPECT_EQ(0, TestWatchdog::expect_reset_count); +} + +TEST_F(TestWatchdog, wdog_start_process_fail) +{ + mbed::Watchdog watchdog(500, "watchdog_unittest"); + mbed::Watchdog watchdog1(500, "watchdog_unittest-1"); + watchdog.start(); + watchdog1.start(); + watchdog.process((HW_WATCHDOG_TIMEOUT / 2)); + watchdog.process((HW_WATCHDOG_TIMEOUT / 2)); + watchdog1.kick(); + watchdog.process((HW_WATCHDOG_TIMEOUT / 2)); + watchdog.process((HW_WATCHDOG_TIMEOUT / 2)); + watchdog.stop(); + watchdog1.stop(); + EXPECT_EQ(0, TestWatchdog::expect_assert_count); + EXPECT_EQ(1, TestWatchdog::expect_reset_count); + TestWatchdog::expect_reset_count = 0; +} + +TEST_F(TestWatchdog, wdog_start_fail) +{ + mbed::Watchdog watchdog(500, "watchdog_unittest"); + watchdog.start(); + watchdog.start(); + watchdog.stop(); + EXPECT_EQ(1, TestWatchdog::expect_assert_count); + TestWatchdog::expect_assert_count = 0; +} diff --git a/UNITTESTS/drivers/Watchdog/unittest.cmake b/UNITTESTS/drivers/Watchdog/unittest.cmake new file mode 100644 index 00000000000..517701e9eaa --- /dev/null +++ b/UNITTESTS/drivers/Watchdog/unittest.cmake @@ -0,0 +1,27 @@ + +#################### +# UNIT TESTS +#################### +set(TEST_SUITE_NAME "Watchdog") + +# Add test specific include paths +set(unittest-includes ${unittest-includes} + . + ../hal +) + +# Source files +set(unittest-sources + ../drivers/Watchdog.cpp + +) + +# Test files +set(unittest-test-sources + drivers/Watchdog/test_watchdog.cpp + stubs/mbed_critical_stub.c +) + +# defines +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEVICE_WATCHDOG -DMBED_WDOG_ASSERT=1") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEVICE_WATCHDOG -DMBED_WDOG_ASSERT=1") diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp index 3537aa9c8a8..3296cde7ab1 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp @@ -18,7 +18,7 @@ #include "gtest/gtest.h" #include "AT_CellularBase.h" #include "EventQueue.h" -#include "AT_CellularBase.h" +#include "AT_CellularNetwork.h" #include "ATHandler_stub.h" #include "FileHandle_stub.h" #include @@ -33,28 +33,25 @@ class my_base : public AT_CellularBase { } bool check_not_supported() { - static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK + static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; - set_unsupported_features(unsupported_features); - return is_supported(AT_CGSN_WITH_TYPE); - } - bool check_supported() - { - set_unsupported_features(NULL); - return is_supported(AT_CGSN_WITH_TYPE); + set_cellular_properties(cellular_properties); + return get_property(PROPERTY_AT_CGSN_WITH_TYPE); } - bool check_supported_not_found() + bool check_supported() { - static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK - }; - set_unsupported_features(unsupported_features); - return is_supported(SUPPORTED_FEATURE_END_MARK); + return get_property(PROPERTY_AT_CGDATA); } }; @@ -109,19 +106,25 @@ TEST_F(TestAT_CellularBase, test_AT_CellularBase_get_device_error) ATHandler_stub::device_err_value.errCode = 0; } -TEST_F(TestAT_CellularBase, test_AT_CellularBase_set_unsupported_features) +TEST_F(TestAT_CellularBase, test_AT_CellularBase_set_cellular_properties) { EventQueue eq; FileHandle_stub fh; ATHandler ah(&fh, eq, 0, ","); AT_CellularBase at(ah); - static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK + static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; - - at.set_unsupported_features(unsupported_features); + at.set_cellular_properties(cellular_properties); } TEST_F(TestAT_CellularBase, test_AT_CellularBase_is_supported) @@ -131,7 +134,6 @@ TEST_F(TestAT_CellularBase, test_AT_CellularBase_is_supported) ATHandler ah(&fh, eq, 0, ","); my_base my_at(ah); - EXPECT_TRUE(true == my_at.check_supported()); - EXPECT_TRUE(true == my_at.check_supported_not_found()); - EXPECT_TRUE(false == my_at.check_not_supported()); + EXPECT_EQ(true, my_at.check_supported()); + EXPECT_EQ(false, my_at.check_not_supported()); } 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 4d7b80cb98a..0ed26761a2c 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp @@ -27,7 +27,7 @@ #include "Semaphore_stub.h" #include "CellularDevice_stub.h" #include "equeue_stub.h" -#include "CellularSIM.h" +#include "AT_CellularBase_stub.h" using namespace mbed; using namespace events; @@ -115,12 +115,12 @@ class my_stack : public AT_CellularStack { class my_AT_CTX : public AT_CellularContext { public: my_AT_CTX(ATHandler &at, CellularDevice *device, const char *apn = MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN) : - AT_CellularContext(at, device, apn), _st(at) {} - virtual ~my_AT_CTX() {} - virtual bool stack_type_supported(nsapi_ip_stack_t stack_type) + AT_CellularContext(at, device, apn), _st(at) { - return false; + AT_CellularBase_stub::supported_bool = false; } + virtual ~my_AT_CTX() {} + virtual NetworkStack *get_stack() { return &_st; @@ -142,10 +142,6 @@ class my_AT_CTXIPV6 : public AT_CellularContext { my_AT_CTXIPV6(ATHandler &at, CellularDevice *device, const char *apn = MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN) : AT_CellularContext(at, device, apn), _st(at) {} virtual ~my_AT_CTXIPV6() {} - virtual bool stack_type_supported(nsapi_ip_stack_t stack_type) - { - return true; - } virtual NetworkStack *get_stack() { return &_st; @@ -477,7 +473,7 @@ TEST_F(TestAT_CellularContext, connect_disconnect_sync) network_cb_count = 0; // connect in sync mode, semaphore will return 0 so timeout is returned ASSERT_EQ(ctx.connect(), NSAPI_ERROR_TIMEOUT); - ASSERT_EQ(network_cb_count, 0); + ASSERT_EQ(network_cb_count, 1); my_AT_CTX ctx1(at, &dev); ctx1.attach(&network_cb); @@ -490,7 +486,7 @@ TEST_F(TestAT_CellularContext, connect_disconnect_sync) ASSERT_EQ(ctx1.connect(), NSAPI_ERROR_OK); - ASSERT_EQ(network_cb_count, 4); + ASSERT_EQ(network_cb_count, 5); ASSERT_EQ(ctx1.connect(), NSAPI_ERROR_IS_CONNECTED); @@ -499,7 +495,29 @@ TEST_F(TestAT_CellularContext, connect_disconnect_sync) ASSERT_EQ(ctx1.disconnect(), NSAPI_ERROR_OK); EXPECT_TRUE(ctx1.is_connected() == false); + ATHandler_stub::get_debug_clear(); + EXPECT_FALSE(ATHandler_stub::is_get_debug_run()); + ATHandler_stub::debug_call_count_clear(); + at.set_debug(true); ASSERT_EQ(ctx1.connect("1234", "internet", "usern", "pwd"), NSAPI_ERROR_OK); + EXPECT_TRUE(ATHandler_stub::is_get_debug_run()); + EXPECT_TRUE(ATHandler_stub::set_debug_call_count_get() == 3); + EXPECT_TRUE(at.get_debug()); + EXPECT_TRUE(ctx1.is_connected() == true); + ASSERT_EQ(ctx1.disconnect(), NSAPI_ERROR_OK); + EXPECT_TRUE(ctx1.is_connected() == false); + + ATHandler_stub::get_debug_clear(); + EXPECT_FALSE(ATHandler_stub::is_get_debug_run()); + ATHandler_stub::debug_call_count_clear(); + at.set_debug(false); + ASSERT_EQ(ctx1.connect("1234", "internet", "usern", "pwd"), NSAPI_ERROR_OK); + EXPECT_TRUE(ATHandler_stub::is_get_debug_run()); + EXPECT_TRUE(ATHandler_stub::set_debug_call_count_get() == 3); + EXPECT_FALSE(at.get_debug()); + EXPECT_TRUE(ctx1.is_connected() == true); + ASSERT_EQ(ctx1.disconnect(), NSAPI_ERROR_OK); + EXPECT_TRUE(ctx1.is_connected() == false); // More connect test after we are re-writted getting of PDP context... } @@ -528,7 +546,7 @@ TEST_F(TestAT_CellularContext, set_sim_ready) cell_callback_data_t data; data.error = NSAPI_ERROR_OK; ctx.cellular_callback((nsapi_event_t)CellularDeviceReady, (intptr_t)&data); - data.status_data = CellularSIM::SimStateReady; + data.status_data = CellularDevice::SimStateReady; ctx.cellular_callback((nsapi_event_t)CellularSIMStatusChanged, (intptr_t)&data); } diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/unittest.cmake index f10bf17d268..d5b4bf77ac3 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/unittest.cmake @@ -9,6 +9,7 @@ set(unittest-includes ${unittest-includes} ../features/cellular/framework/common ../features/cellular/framework/AT ../features/cellular/framework/device + ../features/netsocket/cellular ) # Source files @@ -33,8 +34,11 @@ set(unittest-test-sources stubs/FileHandle_stub.cpp stubs/mbed_assert_stub.c stubs/NetworkInterface_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp stubs/NetworkStack_stub.cpp stubs/randLIB_stub.cpp stubs/Semaphore_stub.cpp stubs/us_ticker_stub.cpp + stubs/UARTSerial_stub.cpp + stubs/SerialBase_stub.cpp ) diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp index 622844aecb6..5afb5e2c75e 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp @@ -51,26 +51,25 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_get_at_handler) FileHandle_stub fh1; FileHandle_stub fh2; FileHandle_stub fh3; - AT_CellularDevice dev(&fh1); + AT_CellularDevice dev(&fh1); // AT fh1 ref count 1 - EXPECT_TRUE(dev.open_network(&fh1)); + EXPECT_TRUE(dev.open_network(&fh1)); // AT fh1 ref count 2 EXPECT_TRUE(dev.open_sms(&fh2)); AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; - EXPECT_TRUE(dev.open_sim(&fh3)); + EXPECT_TRUE(dev.open_information(&fh3)); ATHandler_stub::fh_value = &fh1; - EXPECT_TRUE(dev.open_power(&fh1)); ATHandler_stub::fh_value = NULL; - AT_CellularDevice *dev2 = new AT_CellularDevice(&fh1); - EXPECT_TRUE(dev2->open_information(&fh1)); - ATHandler *at = dev2->get_at_handler(); - EXPECT_TRUE(at->get_ref_count() == 4); - delete dev2; + AT_CellularDevice *dev2 = new AT_CellularDevice(&fh1); // AT fh1 ref count 3 + EXPECT_TRUE(dev2->open_information(&fh1)); // AT fh1 ref count 4 + ATHandler *at = dev2->get_at_handler(); // AT fh1 ref count 5 + EXPECT_TRUE(at->get_ref_count() == 5); + delete dev2; // AT fh1 2 refs deleted -> ref count 3 EXPECT_TRUE(at->get_ref_count() == 3); - AT_CellularDevice dev3(&fh1); - EXPECT_TRUE(dev3.release_at_handler(at) == NSAPI_ERROR_OK); - EXPECT_TRUE(ATHandler_stub::ref_count == 2); + AT_CellularDevice dev3(&fh1); // AT fh1 ref count 4 + EXPECT_TRUE(dev3.release_at_handler(at) == NSAPI_ERROR_OK); // AT fh1 ref count 3 + EXPECT_TRUE(ATHandler_stub::ref_count == 3); } TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_network) @@ -99,32 +98,6 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_sms) EXPECT_TRUE(sms1 == sms); } -TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_power) -{ - FileHandle_stub fh1; - AT_CellularDevice dev(&fh1); - - CellularPower *pwr = dev.open_power(NULL); - CellularPower *pwr1 = dev.open_power(&fh1); - - EXPECT_TRUE(pwr); - EXPECT_TRUE(pwr1); - EXPECT_TRUE(pwr1 == pwr); -} - -TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_sim) -{ - FileHandle_stub fh1; - AT_CellularDevice dev(&fh1); - - CellularSIM *sim = dev.open_sim(NULL); - CellularSIM *sim1 = dev.open_sim(&fh1); - - EXPECT_TRUE(sim); - EXPECT_TRUE(sim1); - EXPECT_TRUE(sim1 == sim); -} - TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_information) { FileHandle_stub fh1; @@ -142,62 +115,26 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_network) { FileHandle_stub fh1; AT_CellularDevice dev(&fh1); - ATHandler_stub::ref_count = 0; EXPECT_TRUE(dev.open_network(&fh1)); AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; - EXPECT_TRUE(ATHandler_stub::ref_count == 1); + EXPECT_TRUE(ATHandler_stub::ref_count == 2); dev.close_network(); - EXPECT_TRUE(ATHandler_stub::ref_count == kATHandler_destructor_ref_ount); + EXPECT_TRUE(ATHANDLER_REF_COUNT_AT_DESTRUCTOR == kATHandler_destructor_ref_ount); } TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_sms) { FileHandle_stub fh1; AT_CellularDevice dev(&fh1); - ATHandler_stub::ref_count = 0; EXPECT_TRUE(dev.open_sms(&fh1)); AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; - EXPECT_TRUE(ATHandler_stub::ref_count == 1); + EXPECT_TRUE(ATHandler_stub::ref_count == 2); dev.close_sms(); - EXPECT_TRUE(ATHandler_stub::ref_count == kATHandler_destructor_ref_ount); -} - -TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_power) -{ - FileHandle_stub fh1; - AT_CellularDevice dev(&fh1); - ATHandler_stub::ref_count = 0; - - EXPECT_TRUE(dev.open_power(&fh1)); - AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; - EXPECT_TRUE(ATHandler_stub::ref_count == 1); - - dev.close_power(); - EXPECT_TRUE(ATHandler_stub::ref_count == kATHandler_destructor_ref_ount); -} - -TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_sim) -{ - FileHandle_stub fh1; - AT_CellularDevice dev(&fh1); - ATHandler_stub::ref_count = 0; - int ana = 0; - - EXPECT_TRUE(dev.open_sim(&fh1)); - AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; - - ana = ATHandler_stub::ref_count; - - dev.close_sms(); // this should not affect to refcount as it's not opened - EXPECT_TRUE(ATHandler_stub::ref_count == 1); - ana = ATHandler_stub::ref_count; - - dev.close_sim(); - EXPECT_TRUE(ATHandler_stub::ref_count == kATHandler_destructor_ref_ount); + EXPECT_TRUE(ATHANDLER_REF_COUNT_AT_DESTRUCTOR == kATHandler_destructor_ref_ount); } TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_information) @@ -221,7 +158,7 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_information) AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; dev.close_information(); - EXPECT_TRUE(ATHandler_stub::ref_count == kATHandler_destructor_ref_ount); + EXPECT_TRUE(ATHANDLER_REF_COUNT_AT_DESTRUCTOR == kATHandler_destructor_ref_ount); ATHandler_stub::fh_value = NULL; } @@ -233,19 +170,18 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_set_timeout) ATHandler_stub::timeout = 0; ATHandler_stub::default_timeout = false; - // no interfaces open so settings timeout should not change anything dev.set_timeout(5000); - EXPECT_TRUE(ATHandler_stub::timeout == 0); - EXPECT_TRUE(ATHandler_stub::default_timeout == false); + EXPECT_TRUE(ATHandler_stub::timeout == 5000); + EXPECT_TRUE(ATHandler_stub::default_timeout == true); - EXPECT_TRUE(dev.open_sim(&fh1)); - EXPECT_TRUE(ATHandler_stub::ref_count == 1); + EXPECT_TRUE(dev.open_sms(&fh1)); + EXPECT_TRUE(ATHandler_stub::ref_count == 2); dev.set_timeout(5000); EXPECT_TRUE(ATHandler_stub::timeout == 5000); EXPECT_TRUE(ATHandler_stub::default_timeout == true); - dev.close_sim(); + dev.close_sms(); } TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_modem_debug_on) @@ -254,31 +190,76 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_modem_debug_on) AT_CellularDevice dev(&fh1); ATHandler_stub::debug_on = false; - // no interfaces open so debug toggling should not affect dev.modem_debug_on(true); - EXPECT_TRUE(ATHandler_stub::debug_on == false); + EXPECT_TRUE(ATHandler_stub::debug_on == true); - EXPECT_TRUE(dev.open_sim(&fh1)); - EXPECT_TRUE(ATHandler_stub::ref_count == 1); + EXPECT_TRUE(dev.open_sms(&fh1)); + EXPECT_TRUE(ATHandler_stub::ref_count == 2); dev.modem_debug_on(true); EXPECT_TRUE(ATHandler_stub::debug_on == true); - dev.close_sim(); + dev.close_sms(); } -TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_get_send_delay) +TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_init) { FileHandle_stub fh1; AT_CellularDevice dev(&fh1); - EXPECT_TRUE(0 == dev.get_send_delay()); + EXPECT_EQ(dev.init(), NSAPI_ERROR_OK); +} + +TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_shutdown) +{ + FileHandle_stub fh1; + AT_CellularDevice dev(&fh1); + EXPECT_EQ(dev.shutdown(), NSAPI_ERROR_OK); +} + +TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_is_ready) +{ + EventQueue que; + FileHandle_stub fh1; + ATHandler at(&fh1, que, 0, ","); + + AT_CellularDevice dev(&fh1); + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + EXPECT_TRUE(NSAPI_ERROR_OK == dev.is_ready()); +} + +TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_set_power_save_mode) +{ + EventQueue que; + FileHandle_stub fh1; + ATHandler at(&fh1, que, 0, ","); + + AT_CellularDevice dev(&fh1); + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + EXPECT_TRUE(NSAPI_ERROR_OK == dev.set_power_save_mode(0, 0)); + + EXPECT_TRUE(NSAPI_ERROR_OK == dev.set_power_save_mode(10, 0)); + + EXPECT_TRUE(NSAPI_ERROR_OK == dev.set_power_save_mode(912, 0)); + + EXPECT_TRUE(NSAPI_ERROR_OK == dev.set_power_save_mode(1834, 1834)); + + EXPECT_TRUE(NSAPI_ERROR_OK == dev.set_power_save_mode(18345, 18345)); + + EXPECT_TRUE(NSAPI_ERROR_OK == dev.set_power_save_mode(101234, 101234)); + + EXPECT_TRUE(NSAPI_ERROR_OK == dev.set_power_save_mode(1012345, 1012345)); + + EXPECT_TRUE(NSAPI_ERROR_OK == dev.set_power_save_mode(39612345, 39612345)); + + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; + EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == dev.set_power_save_mode(0)); } -TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_init_module) +TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_get_send_delay) { FileHandle_stub fh1; AT_CellularDevice dev(&fh1); - EXPECT_TRUE(NSAPI_ERROR_OK == dev.init_module()); + EXPECT_TRUE(0 == dev.get_send_delay()); } TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_create_delete_context) @@ -287,7 +268,7 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_create_delete_context) AT_CellularDevice *dev = new AT_CellularDevice(&fh1); ATHandler *at = dev->get_at_handler(); - EXPECT_TRUE(at->get_ref_count() == 1); + EXPECT_TRUE(at->get_ref_count() == 2); EXPECT_TRUE(dev->release_at_handler(at) == NSAPI_ERROR_OK); CellularContext *ctx = dev->create_context(NULL); @@ -295,12 +276,12 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_create_delete_context) dev = new AT_CellularDevice(&fh1); at = dev->get_at_handler(); - EXPECT_TRUE(at->get_ref_count() == 1); + EXPECT_TRUE(at->get_ref_count() == 2); ctx = dev->create_context(NULL); CellularContext *ctx1 = dev->create_context(&fh1); - EXPECT_TRUE(at->get_ref_count() == 3); - CellularContext *ctx2 = dev->create_context(&fh1); EXPECT_TRUE(at->get_ref_count() == 4); + CellularContext *ctx2 = dev->create_context(&fh1); + EXPECT_TRUE(at->get_ref_count() == 5); EXPECT_TRUE(ctx); EXPECT_TRUE(ctx1); @@ -311,20 +292,20 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_create_delete_context) EXPECT_TRUE(xx); dev->delete_context(ctx); - EXPECT_TRUE(at->get_ref_count() == 3); + EXPECT_TRUE(at->get_ref_count() == 4); dev->delete_context(ctx1); - EXPECT_TRUE(at->get_ref_count() == 2); + EXPECT_TRUE(at->get_ref_count() == 3); dev->delete_context(NULL); - EXPECT_TRUE(at->get_ref_count() == 2); + EXPECT_TRUE(at->get_ref_count() == 3); dev->delete_context(ctx2); - EXPECT_TRUE(at->get_ref_count() == 1); + EXPECT_TRUE(at->get_ref_count() == 2); ctx = dev->create_context(NULL); - EXPECT_TRUE(at->get_ref_count() == 2); - ctx1 = dev->create_context(&fh1); EXPECT_TRUE(at->get_ref_count() == 3); - ctx2 = dev->create_context(&fh1); + ctx1 = dev->create_context(&fh1); EXPECT_TRUE(at->get_ref_count() == 4); + ctx2 = dev->create_context(&fh1); + EXPECT_TRUE(at->get_ref_count() == 5); EXPECT_TRUE(dev->release_at_handler(at) == NSAPI_ERROR_OK); EXPECT_TRUE(ctx); EXPECT_TRUE(ctx1); @@ -333,3 +314,107 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_create_delete_context) delete dev; } + +TEST_F(TestAT_CellularDevice, TestAT_CellularDevice_set_pin_verify_debug) +{ + EventQueue que; + FileHandle_stub fh1; + ATHandler at(&fh1, que, 0, ","); + AT_CellularDevice *dev = new AT_CellularDevice(&fh1); + + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ATHandler_stub::get_debug_clear(); + EXPECT_FALSE(ATHandler_stub::is_get_debug_run()); + ATHandler_stub::debug_call_count_clear(); + at.set_debug(true); + EXPECT_TRUE(NSAPI_ERROR_OK == dev->set_pin("12")); + EXPECT_TRUE(ATHandler_stub::is_get_debug_run()); + EXPECT_TRUE(ATHandler_stub::set_debug_call_count_get() == 3); + EXPECT_TRUE(at.get_debug()); + + ATHandler_stub::get_debug_clear(); + EXPECT_FALSE(ATHandler_stub::is_get_debug_run()); + ATHandler_stub::debug_call_count_clear(); + at.set_debug(false); + EXPECT_TRUE(NSAPI_ERROR_OK == dev->set_pin("11")); + EXPECT_TRUE(ATHandler_stub::is_get_debug_run()); + EXPECT_TRUE(ATHandler_stub::set_debug_call_count_get() == 3); + EXPECT_FALSE(at.get_debug()); + + delete dev; +} + +TEST_F(TestAT_CellularDevice, TestAT_CellularDevice_set_pin) +{ + FileHandle_stub fh1; + AT_CellularDevice *dev = new AT_CellularDevice(&fh1); + + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ASSERT_EQ(NSAPI_ERROR_OK, dev->set_pin("12")); + + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, dev->set_pin("12")); + + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ATHandler_stub::read_string_value = (char *)"SIM PIN"; + ATHandler_stub::ssize_value = 7; + ASSERT_EQ(NSAPI_ERROR_PARAMETER, dev->set_pin(NULL)); + + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ATHandler_stub::read_string_value = (char *)"READY"; + ATHandler_stub::ssize_value = 5; + ASSERT_EQ(NSAPI_ERROR_OK, dev->set_pin("12")); + + ASSERT_EQ(NSAPI_ERROR_OK, dev->set_pin(NULL)); + + delete dev; +} + +TEST_F(TestAT_CellularDevice, TestAT_CellularDevice_get_sim_state) +{ + FileHandle_stub fh1; + AT_CellularDevice *dev = new AT_CellularDevice(&fh1); + + CellularDevice::SimState state; + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ATHandler_stub::ssize_value = -1; + ATHandler_stub::read_string_value = NULL; + ASSERT_EQ(NSAPI_ERROR_OK, dev->get_sim_state(state)); + ASSERT_EQ(CellularDevice::SimStateUnknown, state); + + ATHandler_stub::read_string_value = (char *)"READY"; + ATHandler_stub::ssize_value = 5; + ASSERT_EQ(NSAPI_ERROR_OK, dev->get_sim_state(state)); + ASSERT_EQ(CellularDevice::SimStateReady, state); + + ATHandler_stub::read_string_value = (char *)"SIM PIN"; + ATHandler_stub::ssize_value = 7; + ASSERT_EQ(NSAPI_ERROR_OK, dev->get_sim_state(state)); + ASSERT_EQ(CellularDevice::SimStatePinNeeded, state); + + ATHandler_stub::read_string_value = (char *)"SIM PUK"; + ATHandler_stub::ssize_value = 7; + ASSERT_EQ(NSAPI_ERROR_OK, dev->get_sim_state(state)); + ASSERT_EQ(CellularDevice::SimStatePukNeeded, state); + + ATHandler_stub::read_string_value = (char *)"SOME CRAP"; + ATHandler_stub::ssize_value = 9; + ASSERT_EQ(NSAPI_ERROR_OK, dev->get_sim_state(state)); + ASSERT_EQ(CellularDevice::SimStateUnknown, state); + + delete dev; +} + +static void device_ready_cb() +{ +} + +TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_set_ready_cb) +{ + EventQueue que; + FileHandle_stub fh1; + AT_CellularDevice *dev = new AT_CellularDevice(&fh1); + + dev->set_ready_cb(&device_ready_cb); + dev->set_ready_cb(0); +} diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/unittest.cmake index 5ce257eab78..2619045d071 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/unittest.cmake @@ -12,6 +12,7 @@ set(unittest-includes ${unittest-includes} ../features/frameworks/mbed-client-randlib/mbed-client-randlib ../drivers ../hal + ../features/netsocket/cellular ) # Source files @@ -27,12 +28,11 @@ set(unittest-test-sources stubs/AT_CellularNetwork_stub.cpp stubs/ATHandler_stub.cpp stubs/AT_CellularSMS_stub.cpp - stubs/AT_CellularSIM_stub.cpp - stubs/AT_CellularPower_stub.cpp stubs/AT_CellularInformation_stub.cpp stubs/CellularUtil_stub.cpp stubs/AT_CellularBase_stub.cpp stubs/NetworkInterface_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp stubs/EventQueue_stub.cpp stubs/FileHandle_stub.cpp stubs/mbed_assert_stub.c diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/at_cellularinformationtest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/at_cellularinformationtest.cpp index 0a6d649e746..883bffd00cf 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/at_cellularinformationtest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/at_cellularinformationtest.cpp @@ -34,6 +34,10 @@ class TestAT_CellularInformation : public testing::Test { void SetUp() { + ATHandler_stub::read_string_index = kRead_string_table_size; + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ATHandler_stub::read_string_value = NULL; + ATHandler_stub::ssize_value = 0; } void TearDown() @@ -118,6 +122,8 @@ TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_revision) EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == aci->get_revision(buf, 8)); EXPECT_TRUE(strlen(buf) == 0); + EXPECT_TRUE(NSAPI_ERROR_PARAMETER == aci->get_revision(NULL, 8)); + EXPECT_TRUE(NSAPI_ERROR_PARAMETER == aci->get_revision(buf, 0)); delete aci; } @@ -152,4 +158,59 @@ TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_serial_number AT_CellularBase_stub::supported_bool = true; EXPECT_TRUE(NSAPI_ERROR_OK == aci.get_serial_number(buf, 8, CellularInformation::IMEI)); EXPECT_TRUE(strcmp("1234567", buf) == 0); + + EXPECT_TRUE(NSAPI_ERROR_PARAMETER == aci.get_serial_number(NULL, 8, CellularInformation::IMEI)); + EXPECT_TRUE(NSAPI_ERROR_PARAMETER == aci.get_serial_number(buf, 0, CellularInformation::IMEI)); +} + +TEST_F(TestAT_CellularInformation, TestAT_CellularInformation_get_imsi) +{ + EventQueue eq; + FileHandle_stub fh; + ATHandler ah(&fh, eq, 0, ","); + AT_CellularInformation aci(ah); + + char imsi[16]; + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ATHandler_stub::read_string_value = (char *)"123456789012345"; + ATHandler_stub::ssize_value = 15; + ASSERT_EQ(NSAPI_ERROR_OK, aci.get_imsi(imsi, sizeof(imsi))); + ASSERT_STREQ(ATHandler_stub::read_string_value, imsi); + + ATHandler_stub::read_string_value = NULL; + ATHandler_stub::ssize_value = -1; + ATHandler_stub::read_string_index = -1; + imsi[0] = 0; + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, aci.get_imsi(imsi, sizeof(imsi))); + ASSERT_EQ(strlen(imsi), 0); + + ASSERT_EQ(NSAPI_ERROR_PARAMETER, aci.get_imsi(NULL, sizeof(imsi))); + + char imsi2[5]; + ASSERT_EQ(NSAPI_ERROR_PARAMETER, aci.get_imsi(imsi2, sizeof(imsi2))); +} + +TEST_F(TestAT_CellularInformation, TestAT_CellularInformation_get_iccid) +{ + EventQueue eq; + FileHandle_stub fh; + ATHandler ah(&fh, eq, 0, ","); + AT_CellularInformation aci(ah); + + char buf[16]; + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + ATHandler_stub::read_string_value = (char *)"123456789012345"; + ATHandler_stub::ssize_value = 15; + ASSERT_EQ(NSAPI_ERROR_OK, aci.get_iccid(buf, 16)); + ASSERT_STREQ(ATHandler_stub::read_string_value, buf); + + buf[0] = 0; + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; + ATHandler_stub::read_string_value = NULL; + ATHandler_stub::ssize_value = -1; + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, aci.get_iccid(buf, 16)); + ASSERT_EQ(strlen(buf), 0); + + ASSERT_EQ(NSAPI_ERROR_PARAMETER, aci.get_iccid(buf, 0)); + ASSERT_EQ(NSAPI_ERROR_PARAMETER, aci.get_iccid(NULL, 16)); } 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 9609ab39358..d79bf9e5e96 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp @@ -52,13 +52,6 @@ class my_AT_CN : public AT_CellularNetwork { public: my_AT_CN(ATHandler &atHandler) : AT_CellularNetwork(atHandler) {} virtual ~my_AT_CN() {} - virtual AT_CellularNetwork::RegistrationMode has_registration(RegistrationType reg_type) - { - if (reg_type == C_GREG) { - return RegistrationModeDisable; - } - return RegistrationModeEnable; - } virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology op_rat) { return NSAPI_ERROR_OK; @@ -69,13 +62,6 @@ class my_AT_CNipv6 : public AT_CellularNetwork { public: my_AT_CNipv6(ATHandler &atHandler) : AT_CellularNetwork(atHandler) {} virtual ~my_AT_CNipv6() {} - virtual AT_CellularNetwork::RegistrationMode has_registration(RegistrationType reg_type) - { - if (reg_type == C_GREG) { - return RegistrationModeDisable; - } - return RegistrationModeEnable; - } virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology op_rat) { return NSAPI_ERROR_OK; @@ -150,32 +136,32 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_registration_params) ATHandler_stub::read_string_value = NULL; ATHandler_stub::ssize_value = 0; // Check get_registration_params without specifying the registration type - EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_params(reg_params_check)); - EXPECT_TRUE(reg_params_check._status == CellularNetwork::RegistrationDenied); - EXPECT_TRUE(reg_params_check._act == CellularNetwork::RAT_EGPRS); - EXPECT_TRUE(reg_params_check._cell_id == 305463233); - EXPECT_TRUE(reg_params_check._active_time == 240); - EXPECT_TRUE(reg_params_check._periodic_tau == 70 * 60 * 60); + ASSERT_EQ(NSAPI_ERROR_OK, cn.get_registration_params(reg_params_check)); + ASSERT_EQ(reg_params_check._status, CellularNetwork::RegistrationDenied); + ASSERT_EQ(reg_params_check._act, CellularNetwork::RAT_EGPRS); + ASSERT_EQ(reg_params_check._cell_id, 305463233); + ASSERT_EQ(reg_params_check._active_time, 240); + ASSERT_EQ(reg_params_check._periodic_tau, 70 * 60 * 60); reg_params._status = CellularNetwork::NotRegistered; reg_params._act = CellularNetwork::RAT_GSM; reg_params._cell_id = 1; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_params(CellularNetwork::C_GREG, reg_params)); - EXPECT_TRUE(reg_params._status == CellularNetwork::RegistrationDenied); - EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_EGPRS); - EXPECT_TRUE(reg_params._cell_id == -1); + ASSERT_EQ(NSAPI_ERROR_OK, cn.get_registration_params(CellularNetwork::C_REG, reg_params)); + ASSERT_EQ(reg_params._status, CellularNetwork::RegistrationDenied); + ASSERT_EQ(reg_params._act, CellularNetwork::RAT_EGPRS); + ASSERT_EQ(reg_params._cell_id, -1); my_AT_CN nw(at); reg_params._status = CellularNetwork::NotRegistered; reg_params._act = CellularNetwork::RAT_GSM; - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == nw.get_registration_params(CellularNetwork::C_GREG, reg_params)); - EXPECT_TRUE(reg_params._status == CellularNetwork::NotRegistered); - EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_GSM); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, nw.get_registration_params(CellularNetwork::C_GREG, reg_params)); + ASSERT_EQ(reg_params._status, CellularNetwork::NotRegistered); + ASSERT_EQ(reg_params._act, CellularNetwork::RAT_GSM); - EXPECT_TRUE(NSAPI_ERROR_OK == nw.get_registration_params(CellularNetwork::C_EREG, reg_params)); - EXPECT_TRUE(reg_params._status == CellularNetwork::RegistrationDenied); - EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_EGPRS); + ASSERT_EQ(NSAPI_ERROR_OK, nw.get_registration_params(CellularNetwork::C_EREG, reg_params)); + ASSERT_EQ(reg_params._status, CellularNetwork::RegistrationDenied); + ASSERT_EQ(reg_params._act, CellularNetwork::RAT_EGPRS); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; reg_params._status = CellularNetwork::NotRegistered; @@ -184,15 +170,15 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_registration_params) reg_params._active_time = 2; reg_params._periodic_tau = 3; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_registration_params(CellularNetwork::C_EREG, reg_params)); - EXPECT_TRUE(reg_params._status == CellularNetwork::NotRegistered); - EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_UNKNOWN); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, cn.get_registration_params(CellularNetwork::C_EREG, reg_params)); + ASSERT_EQ(reg_params._status, CellularNetwork::NotRegistered); + ASSERT_EQ(reg_params._act, CellularNetwork::RAT_UNKNOWN); EXPECT_TRUE(reg_params._cell_id == -1 && reg_params._active_time == -1 && reg_params._periodic_tau == -1); - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_registration_params(CellularNetwork::C_GREG, reg_params)); - EXPECT_TRUE(reg_params._status == CellularNetwork::NotRegistered); - EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_UNKNOWN); - EXPECT_TRUE(reg_params._cell_id == -1); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, cn.get_registration_params(CellularNetwork::C_REG, reg_params)); + ASSERT_EQ(reg_params._status, CellularNetwork::NotRegistered); + ASSERT_EQ(reg_params._act, CellularNetwork::RAT_UNKNOWN); + ASSERT_EQ(reg_params._cell_id, -1); reg_params._status = CellularNetwork::SearchingNetwork; reg_params._act = CellularNetwork::RAT_GSM; @@ -304,63 +290,63 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_registration_urc) AT_CellularNetwork cn(at); CellularNetwork::RegistrationType type = CellularNetwork::C_EREG; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_OK, cn.set_registration_urc(type, true)); type = CellularNetwork::C_GREG; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, cn.set_registration_urc(type, true)); type = CellularNetwork::C_REG; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_OK, cn.set_registration_urc(type, true)); my_AT_CN nw(at); type = CellularNetwork::C_EREG; - EXPECT_TRUE(NSAPI_ERROR_OK == nw.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_OK, nw.set_registration_urc(type, true)); type = CellularNetwork::C_GREG; - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == nw.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, nw.set_registration_urc(type, true)); type = CellularNetwork::C_REG; - EXPECT_TRUE(NSAPI_ERROR_OK == nw.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_OK, nw.set_registration_urc(type, true)); type = CellularNetwork::C_EREG; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_OK, cn.set_registration_urc(type, false)); type = CellularNetwork::C_GREG; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, cn.set_registration_urc(type, false)); type = CellularNetwork::C_REG; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_OK, cn.set_registration_urc(type, false)); type = CellularNetwork::C_EREG; - EXPECT_TRUE(NSAPI_ERROR_OK == nw.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_OK, nw.set_registration_urc(type, false)); type = CellularNetwork::C_GREG; - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == nw.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, nw.set_registration_urc(type, false)); type = CellularNetwork::C_REG; - EXPECT_TRUE(NSAPI_ERROR_OK == nw.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_OK, nw.set_registration_urc(type, false)); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; type = CellularNetwork::C_EREG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, cn.set_registration_urc(type, true)); type = CellularNetwork::C_GREG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, cn.set_registration_urc(type, true)); type = CellularNetwork::C_REG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, cn.set_registration_urc(type, true)); type = CellularNetwork::C_EREG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == nw.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, nw.set_registration_urc(type, true)); type = CellularNetwork::C_GREG; - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == nw.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, nw.set_registration_urc(type, true)); type = CellularNetwork::C_REG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == nw.set_registration_urc(type, true)); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, nw.set_registration_urc(type, true)); type = CellularNetwork::C_EREG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, cn.set_registration_urc(type, false)); type = CellularNetwork::C_GREG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, cn.set_registration_urc(type, false)); type = CellularNetwork::C_REG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, cn.set_registration_urc(type, false)); type = CellularNetwork::C_EREG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == nw.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, nw.set_registration_urc(type, false)); type = CellularNetwork::C_GREG; - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == nw.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_UNSUPPORTED, nw.set_registration_urc(type, false)); type = CellularNetwork::C_REG; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == nw.set_registration_urc(type, false)); + ASSERT_EQ(NSAPI_ERROR_DEVICE_ERROR, nw.set_registration_urc(type, false)); } TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_attach) @@ -486,8 +472,8 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_scan_plmn) ATHandler_stub::bool_value = false; EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == cn.set_access_technology(CellularNetwork::RAT_UTRAN)); EXPECT_TRUE(NSAPI_ERROR_OK == cn.scan_plmn(ops, c)); - EXPECT_TRUE(c == 0); - EXPECT_TRUE(ops.get_head() == NULL); + EXPECT_TRUE(c == 1); + EXPECT_TRUE(ops.get_head() != NULL); } TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_ciot_optimization_config) @@ -498,53 +484,49 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_ciot_optimization_con AT_CellularNetwork cn(at); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_ciot_optimization_config(CellularNetwork::SUPPORTED_UE_OPT_NO_SUPPORT, CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE)); + EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_ciot_optimization_config(CellularNetwork::CIOT_OPT_NO_SUPPORT, CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE, NULL)); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_ciot_optimization_config(CellularNetwork::SUPPORTED_UE_OPT_NO_SUPPORT, CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE)); + EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_ciot_optimization_config(CellularNetwork::CIOT_OPT_NO_SUPPORT, CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE, NULL)); } -TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_ciot_optimization_config) +TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_ciot_ue_optimization_config) { EventQueue que; FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); AT_CellularNetwork cn(at); - CellularNetwork::Supported_UE_Opt sup = CellularNetwork::SUPPORTED_UE_OPT_NO_SUPPORT; - CellularNetwork::Preferred_UE_Opt pref = CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE; + CellularNetwork::CIoT_Supported_Opt sup = CellularNetwork::CIOT_OPT_NO_SUPPORT; + CellularNetwork::CIoT_Preferred_UE_Opt pref = CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE; ATHandler_stub::int_value = 1; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_ciot_optimization_config(sup, pref)); - EXPECT_TRUE(sup == CellularNetwork::SUPPORTED_UE_OPT_CONTROL_PLANE); + EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_ciot_ue_optimization_config(sup, pref)); + EXPECT_TRUE(sup == CellularNetwork::CIOT_OPT_CONTROL_PLANE); EXPECT_TRUE(pref == CellularNetwork::PREFERRED_UE_OPT_CONTROL_PLANE); - sup = CellularNetwork::SUPPORTED_UE_OPT_NO_SUPPORT; + sup = CellularNetwork::CIOT_OPT_NO_SUPPORT; pref = CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE; ATHandler_stub::int_value = 1; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; ATHandler_stub::nsapi_error_ok_counter = 0; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_ciot_optimization_config(sup, pref)); - EXPECT_TRUE(sup == CellularNetwork::SUPPORTED_UE_OPT_NO_SUPPORT); + EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_ciot_ue_optimization_config(sup, pref)); + EXPECT_TRUE(sup == CellularNetwork::CIOT_OPT_NO_SUPPORT); EXPECT_TRUE(pref == CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE); } -TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_extended_signal_quality) +TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_ciot_network_optimization_config) { EventQueue que; FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); AT_CellularNetwork cn(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - int rx = -1, be = -1, rs = -1, ec = -1, rsrq = -1, rsrp = -1; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_extended_signal_quality(rx, be, rs, ec, rsrq, rsrp)); - EXPECT_TRUE(rx == -1 && be == -1 && rs == -1 && ec == -1 && rsrq == -1 && rsrp == -1); - - ATHandler_stub::int_value = 5; + CellularNetwork::CIoT_Supported_Opt sup = CellularNetwork::CIOT_OPT_NO_SUPPORT; + ATHandler_stub::int_value = 1; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_extended_signal_quality(rx, be, rs, ec, rsrq, rsrp)); - EXPECT_TRUE(rx == 5 && be == 5 && rs == 5 && ec == 5 && rsrq == 5 && rsrp == 5); + EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_ciot_network_optimization_config(sup)); + EXPECT_TRUE(sup == CellularNetwork::CIOT_OPT_MAX); } TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_signal_quality) @@ -556,13 +538,14 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_signal_quality) AT_CellularNetwork cn(at); int rs = -1, ber = -1; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_signal_quality(rs, ber)); + EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_signal_quality(rs, &ber)); EXPECT_TRUE(rs == -1 && ber == -1); ATHandler_stub::int_value = 1; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_signal_quality(rs, ber)); - EXPECT_TRUE(rs == -111 && ber == 1); + EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_signal_quality(rs, &ber)); + EXPECT_EQ(rs, -111); + EXPECT_EQ(ber, 1); } TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_3gpp_error) @@ -684,3 +667,16 @@ TEST_F(TestAT_CellularNetwork, test_get_connection_status) EXPECT_TRUE(NSAPI_STATUS_DISCONNECTED == cn.get_connection_status()); } +TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_receive_period) +{ + EventQueue que; + FileHandle_stub fh1; + ATHandler at(&fh1, que, 0, ","); + + AT_CellularNetwork cn(at); + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_receive_period(1, CellularNetwork::EDRXUTRAN_Iu_mode, 3)); + + ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; + EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_receive_period(1, CellularNetwork::EDRXUTRAN_Iu_mode, 3)); +} diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularpower/at_cellularpowertest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularpower/at_cellularpowertest.cpp deleted file mode 100644 index 48b67abd2f6..00000000000 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularpower/at_cellularpowertest.cpp +++ /dev/null @@ -1,201 +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 "gtest/gtest.h" -#include -#include "AT_CellularNetwork.h" -#include "EventQueue.h" -#include "ATHandler.h" -#include "AT_CellularPower.h" -#include "FileHandle_stub.h" -#include "ATHandler_stub.h" - -using namespace mbed; -using namespace events; - -// AStyle ignored as the definition is not clear due to preprocessor usage -// *INDENT-OFF* -class TestAT_CellularPower : public testing::Test { -protected: - - void SetUp() { - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - } - - void TearDown() { - } -}; -// *INDENT-ON* - - -static void device_ready_cb() -{ -} - -TEST_F(TestAT_CellularPower, Create) -{ - - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower *pow = new AT_CellularPower(at); - - EXPECT_TRUE(pow != NULL); - - delete pow; -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_on) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.on()); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_off) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.off()); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_set_at_mode) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == pow.set_at_mode()); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.set_at_mode()); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_set_power_level) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == pow.set_power_level(6)); - EXPECT_TRUE(NSAPI_ERROR_OK == pow.set_power_level(1, 1)); - EXPECT_TRUE(NSAPI_ERROR_OK == pow.set_power_level(1, 0)); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.set_power_level(6)); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_reset) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == pow.reset()); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.reset()); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_opt_power_save_mode) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(0, 0)); - - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(10, 0)); - - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(912, 0)); - - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(1834, 1834)); - - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(18345, 18345)); - - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(101234, 101234)); - - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(1012345, 1012345)); - - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(39612345, 39612345)); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.opt_power_save_mode(0, 0)); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_opt_receive_period) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_receive_period(1, CellularPower::EDRXUTRAN_Iu_mode, 3)); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.opt_receive_period(1, CellularPower::EDRXUTRAN_Iu_mode, 3)); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_is_device_ready) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE; - EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == pow.is_device_ready()); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_set_device_ready_urc_cb) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.set_device_ready_urc_cb(&device_ready_cb)); - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.set_device_ready_urc_cb(NULL)); -} - -TEST_F(TestAT_CellularPower, test_AT_CellularPower_remove_device_ready_urc_cb) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularPower pow(at); - EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.set_device_ready_urc_cb(&device_ready_cb)); - - pow.remove_device_ready_urc_cb(NULL); - pow.remove_device_ready_urc_cb(&device_ready_cb); -} diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularpower/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularpower/unittest.cmake deleted file mode 100644 index 82dc0e9b38b..00000000000 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularpower/unittest.cmake +++ /dev/null @@ -1,28 +0,0 @@ - -#################### -# UNIT TESTS -#################### - -# Add test specific include paths -set(unittest-includes ${unittest-includes} - features/cellular/framework/common/util - ../features/cellular/framework/common - ../features/cellular/framework/AT - ../features/frameworks/mbed-client-randlib/mbed-client-randlib -) - -# Source files -set(unittest-sources - ../features/cellular/framework/AT/AT_CellularPower.cpp -) - -# Test files -set(unittest-test-sources - features/cellular/framework/AT/at_cellularpower/at_cellularpowertest.cpp - stubs/ATHandler_stub.cpp - stubs/AT_CellularBase_stub.cpp - stubs/EventQueue_stub.cpp - stubs/FileHandle_stub.cpp - stubs/CellularUtil_stub.cpp - stubs/mbed_assert_stub.c -) diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularsim/at_cellularsimtest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularsim/at_cellularsimtest.cpp deleted file mode 100644 index e4fe6a1ce10..00000000000 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularsim/at_cellularsimtest.cpp +++ /dev/null @@ -1,204 +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 "gtest/gtest.h" -#include "ATHandler_stub.h" -#include -#include "AT_CellularNetwork.h" -#include "EventQueue.h" -#include "ATHandler.h" -#include "AT_CellularSIM.h" -#include "FileHandle_stub.h" -#include "CellularLog.h" -#include "ATHandler_stub.h" - -using namespace mbed; -using namespace events; - -// AStyle ignored as the definition is not clear due to preprocessor usage -// *INDENT-OFF* -class TestAT_CellularSIM : public testing::Test { -protected: - - void SetUp() - { - ATHandler_stub::read_string_index = kRead_string_table_size; - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - ATHandler_stub::read_string_value = NULL; - ATHandler_stub::ssize_value = 0; - } - - void TearDown() - { - } -}; -// *INDENT-ON* - -TEST_F(TestAT_CellularSIM, Create) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularSIM *sim = new AT_CellularSIM(at); - - EXPECT_TRUE(sim != NULL); - delete sim; -} - -TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_set_pin) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularSIM sim(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin("12")); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.set_pin("12")); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - ATHandler_stub::read_string_value = (char *)"READY"; - ATHandler_stub::ssize_value = 5; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin("12")); - - EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin(NULL)); -} - -TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_change_pin) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularSIM sim(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.change_pin("12", "34")); - EXPECT_TRUE(NSAPI_ERROR_OK == sim.change_pin(NULL, "34")); - EXPECT_TRUE(NSAPI_ERROR_OK == sim.change_pin("12", NULL)); - EXPECT_TRUE(NSAPI_ERROR_OK == sim.change_pin(NULL, NULL)); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.change_pin("12", "34")); -} - -TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_set_pin_query) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularSIM sim(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin_query("12", true)); - EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin_query(NULL, true)); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin_query("12", false)); - EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin_query(NULL, false)); - - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.set_pin_query("12", false)); - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.set_pin_query("12", true)); -} - -TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_get_sim_state) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - AT_CellularSIM sim(at); - CellularSIM::SimState state; - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - ATHandler_stub::ssize_value = -1; - ATHandler_stub::read_string_value = NULL; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state)); - EXPECT_TRUE(CellularSIM::SimStateUnknown == state); - - ATHandler_stub::read_string_value = (char *)"READY"; - ATHandler_stub::ssize_value = 5; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state)); - EXPECT_TRUE(CellularSIM::SimStateReady == state); - - ATHandler_stub::read_string_value = (char *)"SIM PIN"; - ATHandler_stub::ssize_value = 7; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state)); - EXPECT_TRUE(CellularSIM::SimStatePinNeeded == state); - - ATHandler_stub::read_string_value = (char *)"SIM PUK"; - ATHandler_stub::ssize_value = 7; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state)); - EXPECT_TRUE(CellularSIM::SimStatePukNeeded == state); - - ATHandler_stub::read_string_value = (char *)"SOME CRAP"; - ATHandler_stub::ssize_value = 9; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state)); - EXPECT_TRUE(CellularSIM::SimStateUnknown == state); -} - -TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_get_imsi) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - char imsi[16]; - AT_CellularSIM sim(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - ATHandler_stub::read_string_value = (char *)"123456789012345"; - ATHandler_stub::ssize_value = 15; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_imsi(imsi)); - EXPECT_TRUE(strcmp(ATHandler_stub::read_string_value, imsi) == 0); - - ATHandler_stub::read_string_value = NULL; - ATHandler_stub::ssize_value = -1; - ATHandler_stub::read_string_index = -1; - imsi[0] = 0; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.get_imsi(imsi)); - EXPECT_TRUE(strlen(imsi) == 0); - - EXPECT_TRUE(NSAPI_ERROR_PARAMETER == sim.get_imsi(NULL)); - - // this would fail as get_imsi should take another param which is the size of the buffer which we could use for validation. - // Now we have improved documentation that that the given imsi buffer size must be over 15. - //char imsi2[5]; - //EXPECT_TRUE(NSAPI_ERROR_PARAMETER == sim.get_imsi(imsi2)); -} - -TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_get_iccid) -{ - EventQueue que; - FileHandle_stub fh1; - ATHandler at(&fh1, que, 0, ","); - - char buf[16]; - AT_CellularSIM sim(at); - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - ATHandler_stub::read_string_value = (char *)"123456789012345"; - ATHandler_stub::ssize_value = 15; - EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_iccid(buf, 16)); - EXPECT_TRUE(strcmp(ATHandler_stub::read_string_value, buf) == 0); - - buf[0] = 0; - ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; - ATHandler_stub::read_string_value = NULL; - ATHandler_stub::ssize_value = -1; - EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.get_iccid(buf, 16)); - EXPECT_TRUE(strlen(buf) == 0); -} diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularsim/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularsim/unittest.cmake deleted file mode 100644 index 7adbfef8711..00000000000 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularsim/unittest.cmake +++ /dev/null @@ -1,29 +0,0 @@ - -#################### -# UNIT TESTS -#################### - -# Add test specific include paths -set(unittest-includes ${unittest-includes} - features/cellular/framework/common/util - ../features/cellular/framework/common - ../features/cellular/framework/AT - ../features/frameworks/mbed-client-randlib/mbed-client-randlib -) - -# Source files -set(unittest-sources - ../features/cellular/framework/AT/AT_CellularSIM.cpp -) - -# Test files -set(unittest-test-sources - features/cellular/framework/AT/at_cellularsim/at_cellularsimtest.cpp - stubs/ATHandler_stub.cpp - stubs/AT_CellularBase_stub.cpp - stubs/EventQueue_stub.cpp - stubs/FileHandle_stub.cpp - stubs/CellularUtil_stub.cpp - stubs/us_ticker_stub.cpp - stubs/mbed_assert_stub.c -) diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp index a21b7098dec..fb8eeef021b 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp @@ -71,14 +71,14 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_initialize) AT_CellularSMS sms(at); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE; - EXPECT_TRUE(NSAPI_ERROR_NO_MEMORY == sms.initialize(CellularSMS::CellularSMSMmodeText)); + EXPECT_EQ(NSAPI_ERROR_AUTH_FAILURE, sms.initialize(CellularSMS::CellularSMSMmodeText)); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == sms.initialize(CellularSMS::CellularSMSMmodeText)); + EXPECT_EQ(NSAPI_ERROR_OK, sms.initialize(CellularSMS::CellularSMSMmodeText)); sms.set_sms_callback(&my_callback); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; - EXPECT_TRUE(NSAPI_ERROR_OK == sms.initialize(CellularSMS::CellularSMSMmodeText)); + EXPECT_EQ(NSAPI_ERROR_OK, sms.initialize(CellularSMS::CellularSMSMmodeText)); ATHandler_stub::call_immediately = false; } diff --git a/UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp b/UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp index 211f80cc180..4f85540dddc 100644 --- a/UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp @@ -112,7 +112,6 @@ TEST_F(TestATHandler, test_ATHandler_list) EXPECT_TRUE(at1->close() == NSAPI_ERROR_OK); EXPECT_TRUE(at2->get_ref_count() == 1); EXPECT_TRUE(at2->close() == NSAPI_ERROR_OK); - EXPECT_TRUE(at1->close() == NSAPI_ERROR_PARAMETER); ATHandler::set_at_timeout_list(1000, false); ATHandler::set_debug_list(false); @@ -160,7 +159,7 @@ TEST_F(TestATHandler, test_ATHandler_set_urc_handler) at.set_urc_handler(ch, cb); //THIS IS NOT same callback in find_urc_handler??? - EXPECT_TRUE(NSAPI_ERROR_OK == at.set_urc_handler(ch, cb)); + at.set_urc_handler(ch, cb); } TEST_F(TestATHandler, test_ATHandler_remove_urc_handler) @@ -174,8 +173,7 @@ TEST_F(TestATHandler, test_ATHandler_remove_urc_handler) mbed::Callback cb(&urc_callback); at.set_urc_handler(ch, cb); - //This does nothing!!! - at.remove_urc_handler(ch); + at.set_urc_handler(ch, 0); } TEST_F(TestATHandler, test_ATHandler_get_last_error) @@ -330,15 +328,6 @@ TEST_F(TestATHandler, test_ATHandler_process_oob) filehandle_stub_table = NULL; } -TEST_F(TestATHandler, test_ATHandler_set_filehandle_sigio) -{ - EventQueue que; - FileHandle_stub fh1; - - ATHandler at(&fh1, que, 0, ","); - at.set_filehandle_sigio(); -} - TEST_F(TestATHandler, test_ATHandler_flush) { EventQueue que; @@ -996,10 +985,10 @@ TEST_F(TestATHandler, test_ATHandler_resp_start) filehandle_stub_table = table9; filehandle_stub_table_pos = 0; + at.set_urc_handler("urc: ", &urc_callback); at.set_urc_handler("urc: ", NULL); at.resp_start(); - // Match URC consumes to CRLF -> nothing to read after that -> ERROR - EXPECT_TRUE(at.get_last_error() == NSAPI_ERROR_DEVICE_ERROR); + EXPECT_EQ(at.get_last_error(), NSAPI_ERROR_OK); char table10[] = "urc: info\r\ngarbage\r\nprefix: info\r\nOK\r\n\0"; at.flush(); diff --git a/UNITTESTS/features/cellular/framework/common/util/utiltest.cpp b/UNITTESTS/features/cellular/framework/common/util/utiltest.cpp index 09f87c87e1b..a2b5b4dcc9f 100644 --- a/UNITTESTS/features/cellular/framework/common/util/utiltest.cpp +++ b/UNITTESTS/features/cellular/framework/common/util/utiltest.cpp @@ -138,8 +138,7 @@ TEST_F(Testutil, prefer_ipv6) TEST_F(Testutil, separate_ip_addresses) { - char *s = (char *)malloc(128); - + char s[128] = {'\0'}; char ip[64] = {0}; char subnet[64] = {0}; diff --git a/UNITTESTS/features/cellular/framework/device/cellulardevice/cellulardevicetest.cpp b/UNITTESTS/features/cellular/framework/device/cellulardevice/cellulardevicetest.cpp index 4eb5e3d6e6b..d73ea9ff0eb 100644 --- a/UNITTESTS/features/cellular/framework/device/cellulardevice/cellulardevicetest.cpp +++ b/UNITTESTS/features/cellular/framework/device/cellulardevice/cellulardevicetest.cpp @@ -21,7 +21,6 @@ #include "FileHandle_stub.h" #include "myCellularDevice.h" #include "CellularStateMachine_stub.h" -#include "CellularSIM.h" using namespace mbed; @@ -54,7 +53,7 @@ TEST_F(TestCellularDevice, test_create_delete) dev = NULL; CellularDevice *dev1 = CellularDevice::get_default_instance(); - EXPECT_TRUE(dev1); + EXPECT_FALSE(dev1); } TEST_F(TestCellularDevice, test_set_sim_pin) @@ -185,11 +184,11 @@ TEST_F(TestCellularDevice, test_get_context_list) CellularContext *ctx = dev->create_context(); EXPECT_TRUE(dev->get_context_list()); delete dev; - dev = NULL; dev = new myCellularDevice(&fh1); EXPECT_TRUE(dev); EXPECT_FALSE(dev->get_context_list()); + delete dev; } TEST_F(TestCellularDevice, test_stop) @@ -221,7 +220,7 @@ TEST_F(TestCellularDevice, test_cellular_callback) dev->cellular_callback((nsapi_event_t)CellularDeviceReady, (intptr_t)&data); dev->set_sim_pin("1234"); - data.status_data = CellularSIM::SimStatePinNeeded; + data.status_data = CellularDevice::SimStatePinNeeded; dev->cellular_callback((nsapi_event_t)CellularSIMStatusChanged, (intptr_t)&data); CellularContext *ctx = dev->create_context(); @@ -229,3 +228,15 @@ TEST_F(TestCellularDevice, test_cellular_callback) delete dev; } + +TEST_F(TestCellularDevice, test_shutdown) +{ + FileHandle_stub fh1; + CellularDevice *dev = new myCellularDevice(&fh1); + EXPECT_TRUE(dev); + + CellularStateMachine_stub::nsapi_error_value = NSAPI_ERROR_OK; + ASSERT_EQ(dev->shutdown(), NSAPI_ERROR_OK); + + delete dev; +} diff --git a/UNITTESTS/features/cellular/framework/device/cellulardevice/unittest.cmake b/UNITTESTS/features/cellular/framework/device/cellulardevice/unittest.cmake index 7da80e97b17..43888121ca7 100644 --- a/UNITTESTS/features/cellular/framework/device/cellulardevice/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/device/cellulardevice/unittest.cmake @@ -8,6 +8,7 @@ set(unittest-includes ${unittest-includes} /features/cellular/framework/device/cellulardevice ../features/cellular/framework/device ../features/cellular/framework/common + ../features/netsocket/cellular ) # Source files @@ -30,6 +31,7 @@ set(unittest-test-sources stubs/AT_CellularContext_stub.cpp stubs/Semaphore_stub.cpp stubs/NetworkInterface_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp ) # defines diff --git a/UNITTESTS/features/cellular/framework/device/cellularstatemachine/cellularstatemachinetest.cpp b/UNITTESTS/features/cellular/framework/device/cellularstatemachine/cellularstatemachinetest.cpp new file mode 100644 index 00000000000..5466b72ae6b --- /dev/null +++ b/UNITTESTS/features/cellular/framework/device/cellularstatemachine/cellularstatemachinetest.cpp @@ -0,0 +1,416 @@ +/* + * 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 "gtest/gtest.h" +#include + +#include "CellularDevice.h" +#include "AT_CellularDevice_stub.h" +#include "FileHandle_stub.h" +#include "AT_CellularNetwork_stub.h" +#include "myCellularDevice.h" +#include "Thread_stub.h" +#include "cmsis_os2.h" +#include "equeue_stub.h" + +using namespace mbed; + +enum UT_CellularState { + UT_STATE_INIT = 0, + UT_STATE_POWER_ON, + UT_STATE_DEVICE_READY, + UT_STATE_SIM_PIN, + UT_STATE_REGISTERING_NETWORK, + UT_STATE_MANUAL_REGISTERING_NETWORK, + UT_STATE_ATTACHING_NETWORK, + UT_STATE_MAX_FSM_STATE +}; + +// AStyle ignored as the definition is not clear due to preprocessor usage +// *INDENT-OFF* +class TestCellularStateMachine : public testing::Test { +protected: + + void SetUp() + { + Thread_stub::osStatus_value = osOK; + } + + void TearDown() + { + } +}; + +static void cellular_callback(nsapi_event_t ev, intptr_t ptr) +{ + +} + +namespace mbed { + +class UT_CellularStateMachine { + +public: + + UT_CellularStateMachine() { + _state_machine = NULL; + } + + ~UT_CellularStateMachine() { + delete _state_machine; + _state_machine = NULL; + } + + CellularStateMachine *create_state_machine(CellularDevice &device, events::EventQueue &queue) + { + _state_machine = new CellularStateMachine(device, queue); + return _state_machine; + } + + void delete_state_machine() { + delete _state_machine; + _state_machine = NULL; + } + + void set_cellular_callback(mbed::Callback status_cb) + { + _state_machine->set_cellular_callback(status_cb); + } + + nsapi_error_t start_dispatch() + { + return _state_machine->start_dispatch(); + } + + nsapi_error_t run_to_power_on() + { + return _state_machine->run_to_state(CellularStateMachine::STATE_POWER_ON); + } + + nsapi_error_t run_to_device_ready() + { + return _state_machine->run_to_state(CellularStateMachine::STATE_DEVICE_READY); + } + + nsapi_error_t run_to_device_sim_ready() + { + return _state_machine->run_to_state(CellularStateMachine::STATE_SIM_PIN); + } + + nsapi_error_t run_to_device_registered() + { + return _state_machine->run_to_state(CellularStateMachine::STATE_REGISTERING_NETWORK); + } + + nsapi_error_t run_to_device_attached() + { + return _state_machine->run_to_state(CellularStateMachine::STATE_ATTACHING_NETWORK); + } + + void stop() + { + _state_machine->stop(); + } + + void set_sim_pin(const char *sim_pin) + { + _state_machine->set_sim_pin(sim_pin); + } + + void set_retry_timeout_array(uint16_t *timeout, int array_len) + { + _state_machine->set_retry_timeout_array(timeout, array_len); + } + + void set_plmn(const char *plmn) + { + _state_machine->set_plmn(plmn); + } + + bool get_current_status(UT_CellularState ¤t_state, UT_CellularState &target_state) + { + return _state_machine->get_current_status((CellularStateMachine::CellularState&)current_state, + (CellularStateMachine::CellularState&)target_state); + } + + void cellular_event_changed(nsapi_event_t ev, intptr_t ptr) + { + _state_machine->cellular_event_changed(ev, ptr); + } + + void reset() + { + _state_machine->reset(); + } + void ready_urc_cb() + { + _state_machine->device_ready_cb(); + } + + CellularStateMachine * _state_machine; +}; +} + +TEST_F(TestCellularStateMachine, test_create_delete) +{ + UT_CellularStateMachine ut; + FileHandle_stub fh1; + + CellularDevice *dev = new myCellularDevice(&fh1); + EXPECT_TRUE(dev); + + CellularStateMachine *stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + ut.delete_state_machine(); + + delete dev; + dev = NULL; +} + +TEST_F(TestCellularStateMachine, test_setters) +{ + UT_CellularStateMachine ut; + FileHandle_stub fh1; + + CellularDevice *dev = new myCellularDevice(&fh1); + EXPECT_TRUE(dev); + + CellularStateMachine *stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + ut.set_cellular_callback(&cellular_callback); + + ut.set_sim_pin(NULL); + ut.set_sim_pin("1234"); + ut.set_plmn(NULL); + ut.set_plmn("12345"); + + uint16_t timeout[20] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; + ut.set_retry_timeout_array(timeout, 10); // test max length + ut.set_retry_timeout_array(timeout, 20); // test too big array + ut.set_retry_timeout_array(0, 10); // null array + + ut.delete_state_machine(); + + delete dev; + dev = NULL; +} + +TEST_F(TestCellularStateMachine, test_start_dispatch) +{ + UT_CellularStateMachine ut; + FileHandle_stub fh1; + + CellularDevice *dev = new myCellularDevice(&fh1); + EXPECT_TRUE(dev); + + CellularStateMachine *stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + nsapi_error_t err = ut.start_dispatch(); + ASSERT_EQ(NSAPI_ERROR_OK, err); + ut.delete_state_machine(); + + Thread_stub::osStatus_value = osErrorNoMemory; + stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + err = ut.start_dispatch(); + ASSERT_EQ(NSAPI_ERROR_NO_MEMORY, err); + ut.delete_state_machine(); + + delete dev; + dev = NULL; +} + +TEST_F(TestCellularStateMachine, test_stop) +{ + UT_CellularStateMachine ut; + FileHandle_stub fh1; + + CellularDevice *dev = new AT_CellularDevice(&fh1); + EXPECT_TRUE(dev); + + CellularStateMachine *stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + + ut.stop(); // nothing created, run through + ut.delete_state_machine(); + + stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + nsapi_error_t err = ut.start_dispatch(); + ASSERT_EQ(NSAPI_ERROR_OK, err); + + ut.stop(); // thread is created, now stop will delete it + ut.delete_state_machine(); + + stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + err = ut.start_dispatch(); + ASSERT_EQ(NSAPI_ERROR_OK, err); + + ut.set_cellular_callback(&cellular_callback); + + struct equeue_event ptr; + equeue_stub.void_ptr = &ptr; + equeue_stub.call_cb_immediately = true; + + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_power_on()); + + ut.stop(); // thread and power are created, now stop will delete them + ut.delete_state_machine(); + + stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + err = ut.start_dispatch(); + ASSERT_EQ(NSAPI_ERROR_OK, err); + + ut.set_cellular_callback(&cellular_callback); + + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_ready()); + + ut.stop(); // thread and network are created, now stop will delete them + ut.delete_state_machine(); + + delete dev; + dev = NULL; +} + +TEST_F(TestCellularStateMachine, test_run_to_state) +{ + UT_CellularStateMachine ut; + FileHandle_stub fh1; + + CellularDevice *dev = new AT_CellularDevice(&fh1); + EXPECT_TRUE(dev); + + CellularStateMachine *stm = ut.create_state_machine(*dev, *dev->get_queue()); + EXPECT_TRUE(stm); + + nsapi_error_t err = ut.start_dispatch(); + ASSERT_EQ(NSAPI_ERROR_OK, err); + + struct equeue_event ptr; + equeue_stub.void_ptr = 0; + equeue_stub.call_cb_immediately = false; + ASSERT_EQ(NSAPI_ERROR_NO_MEMORY, ut.run_to_power_on()); + ut.reset(); + + equeue_stub.void_ptr = &ptr; + equeue_stub.call_cb_immediately = true; + + ut.set_cellular_callback(&cellular_callback); + + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_power_on()); + UT_CellularState current_state; + UT_CellularState target_state; + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_POWER_ON, current_state); + ASSERT_EQ(UT_STATE_POWER_ON, target_state); + ut.reset(); + + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_ready()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_DEVICE_READY, current_state); + ASSERT_EQ(UT_STATE_DEVICE_READY, target_state); + ut.ready_urc_cb(); + ut.reset(); + + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_ready()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_DEVICE_READY, current_state); + ASSERT_EQ(UT_STATE_DEVICE_READY, target_state); + ut.reset(); + + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_ready()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_DEVICE_READY, current_state); + ASSERT_EQ(UT_STATE_DEVICE_READY, target_state); + ut.reset(); + + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_ready()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_DEVICE_READY, current_state); + ASSERT_EQ(UT_STATE_DEVICE_READY, target_state); + ut.reset(); + + AT_CellularDevice_stub::init_module_failure_count = 1; + AT_CellularNetwork_stub::set_registration_urc_fail_counter = 4; + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_sim_ready()); + (void) ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_SIM_PIN, current_state); + ASSERT_EQ(UT_STATE_SIM_PIN, target_state); + ut.reset(); + + AT_CellularDevice_stub::pin_needed = true; + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_sim_ready()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_SIM_PIN, current_state); + ASSERT_EQ(UT_STATE_SIM_PIN, target_state); + ut.reset(); + + ut.set_sim_pin("1234"); + AT_CellularDevice_stub::pin_needed = true; + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_sim_ready()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_SIM_PIN, current_state); + ASSERT_EQ(UT_STATE_SIM_PIN, target_state); + ut.reset(); + + ut.set_sim_pin("1234"); + AT_CellularDevice_stub::pin_needed = true; + AT_CellularDevice_stub::set_pin_failure_count = 1; + AT_CellularDevice_stub::get_sim_failure_count = 1; + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_sim_ready()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_SIM_PIN, current_state); + ASSERT_EQ(UT_STATE_SIM_PIN, target_state); + ut.reset(); + + cell_callback_data_t data; + data.status_data = CellularNetwork::RegisteredHomeNetwork; + AT_CellularNetwork_stub::get_registration_params_fail_counter = 10; + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_registered()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_REGISTERING_NETWORK, current_state); + ASSERT_EQ(UT_STATE_REGISTERING_NETWORK, target_state); + ut.cellular_event_changed((nsapi_event_t)CellularRegistrationStatusChanged, (intptr_t)&data); + ut.reset(); + + // manual registering + ut.set_plmn("12345"); + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_registered()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_MANUAL_REGISTERING_NETWORK, current_state); + ASSERT_EQ(UT_STATE_MANUAL_REGISTERING_NETWORK, target_state); + ut.cellular_event_changed((nsapi_event_t)CellularRegistrationStatusChanged, (intptr_t)&data); + ut.reset(); + + ut.set_plmn(0); + ASSERT_EQ(NSAPI_ERROR_OK, ut.run_to_device_attached()); + (void)ut.get_current_status(current_state, target_state); + ASSERT_EQ(UT_STATE_ATTACHING_NETWORK, current_state); + ASSERT_EQ(UT_STATE_ATTACHING_NETWORK, target_state); + ut.reset(); + + ut.delete_state_machine(); + + delete dev; + dev = NULL; +} + + + + + diff --git a/UNITTESTS/features/cellular/framework/device/cellularstatemachine/unittest.cmake b/UNITTESTS/features/cellular/framework/device/cellularstatemachine/unittest.cmake new file mode 100644 index 00000000000..ac5fcfee74d --- /dev/null +++ b/UNITTESTS/features/cellular/framework/device/cellularstatemachine/unittest.cmake @@ -0,0 +1,45 @@ + +#################### +# UNIT TESTS +#################### + +# Add test specific include paths +set(unittest-includes ${unittest-includes} + /features/cellular/framework/device/cellularstatemachine + ../features/cellular/framework/device + ../features/cellular/framework/common + ../features/netsocket/cellular +) + +# Source files +set(unittest-sources + ../features/cellular/framework/device/CellularStateMachine.cpp + ../features/cellular/framework/AT/ATHandler_factory.cpp +) + +# Test files +set(unittest-test-sources + features/cellular/framework/device/cellularstatemachine/cellularstatemachinetest.cpp + stubs/FileHandle_stub.cpp + stubs/CellularDevice_stub.cpp + stubs/EventQueue_stub.cpp + stubs/mbed_assert_stub.c + stubs/UARTSerial_stub.cpp + stubs/SerialBase_stub.cpp + stubs/ATHandler_stub.cpp + stubs/AT_CellularNetwork_stub.cpp + stubs/AT_CellularBase_stub.cpp + stubs/AT_CellularContext_stub.cpp + stubs/AT_CellularDevice_stub.cpp + stubs/Semaphore_stub.cpp + stubs/NetworkInterface_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp + stubs/Thread_stub.cpp + stubs/Mutex_stub.cpp + stubs/EventQueue_stub.cpp + stubs/equeue_stub.c +) + +# defines +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMDMRTS=PTC0 -DMDMCTS=PTC1 -DMDMTXD=NC -DMDMRXD=NC -DMBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE=115200 -DCELLULAR_DEVICE=myCellularDevice -DDEVICE_SERIAL_FC=1") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMDMRTS=PTC0 -DMDMCTS=PTC1 -DMDMTXD=NC -DMDMRXD=NC -DMBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE=115200 -DCELLULAR_DEVICE=myCellularDevice -DDEVICE_SERIAL_FC=1") diff --git a/UNITTESTS/features/lorawan/loramaccrypto/unittest.cmake b/UNITTESTS/features/lorawan/loramaccrypto/unittest.cmake index e41d6689065..a2740df4496 100644 --- a/UNITTESTS/features/lorawan/loramaccrypto/unittest.cmake +++ b/UNITTESTS/features/lorawan/loramaccrypto/unittest.cmake @@ -35,6 +35,7 @@ set(unittest-test-sources stubs/cipher_stub.c stubs/aes_stub.c stubs/cmac_stub.c + ../features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c ) 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/features/netsocket/DTLSSocketWrapper/test_DTLSSocketWrapper.cpp b/UNITTESTS/features/netsocket/DTLSSocketWrapper/test_DTLSSocketWrapper.cpp index b1f2dcfd487..e63c8750c93 100644 --- a/UNITTESTS/features/netsocket/DTLSSocketWrapper/test_DTLSSocketWrapper.cpp +++ b/UNITTESTS/features/netsocket/DTLSSocketWrapper/test_DTLSSocketWrapper.cpp @@ -58,6 +58,7 @@ class TestDTLSSocketWrapper : public testing::Test { stack.return_socketAddress = SocketAddress(); eventFlagsStubNextRetval.clear(); delete wrapper; + delete transport; } char *cert = "-----BEGIN CERTIFICATE-----\ @@ -103,6 +104,7 @@ TEST_F(TestDTLSSocketWrapper, constructor) TEST_F(TestDTLSSocketWrapper, constructor_hostname) { DTLSSocketWrapper *wrapper2 = new DTLSSocketWrapper(transport, "localhost"); + delete wrapper2; } /* connect */ @@ -323,6 +325,8 @@ TEST_F(TestDTLSSocketWrapper, set_root_ca_cert_invalid) mbedtls_stub.counter = 0; mbedtls_stub.retArray[0] = 1; // mbedtls_x509_crt_parse error EXPECT_EQ(wrapper->set_root_ca_cert(cert, strlen(cert)), NSAPI_ERROR_PARAMETER); + // We need to deallocate the crt pointer ourselves. + delete (wrapper->get_ca_chain()); } TEST_F(TestDTLSSocketWrapper, set_client_cert_key) diff --git a/UNITTESTS/features/netsocket/EthernetInterface/unittest.cmake b/UNITTESTS/features/netsocket/EthernetInterface/unittest.cmake index 472d5f0a264..cd794cae08e 100644 --- a/UNITTESTS/features/netsocket/EthernetInterface/unittest.cmake +++ b/UNITTESTS/features/netsocket/EthernetInterface/unittest.cmake @@ -17,7 +17,8 @@ set(unittest-sources ../features/frameworks/nanostack-libservice/source/libip6string/ip6tos.c ../features/frameworks/nanostack-libservice/source/libip4string/stoip4.c ../features/frameworks/nanostack-libservice/source/libip6string/stoip6.c - ../features/frameworks/nanostack-libservice/source/libBits/common_functions.c + ../features/frameworks/nanostack-libservice/source/libBits/common_functions.c + ../features/frameworks/nanostack-libservice/source/libList/ns_list.c ) # Test files @@ -33,5 +34,7 @@ set(unittest-test-sources stubs/stoip4_stub.c stubs/ip4tos_stub.c stubs/NetworkStack_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp stubs/SocketStats_Stub.cpp + stubs/mbed_error.c ) diff --git a/UNITTESTS/features/netsocket/NetworkInterface/test_NetworkInterface.cpp b/UNITTESTS/features/netsocket/NetworkInterface/test_NetworkInterface.cpp index 15fb805e04d..5dc2575b308 100644 --- a/UNITTESTS/features/netsocket/NetworkInterface/test_NetworkInterface.cpp +++ b/UNITTESTS/features/netsocket/NetworkInterface/test_NetworkInterface.cpp @@ -20,6 +20,7 @@ #include "NetworkStack_stub.h" class stubNetworkInterface : public NetworkInterface { +public: virtual nsapi_error_t connect() { return NSAPI_ERROR_OK; @@ -32,13 +33,22 @@ class stubNetworkInterface : public NetworkInterface { { return &stack; }; -public: + virtual void attach(mbed::Callback cb) + { + status_cb = cb; + } + void event(nsapi_event_t e, intptr_t i) + { + status_cb(e, i); + } +private: + mbed::Callback status_cb; NetworkStackstub stack; }; class TestNetworkInterface : public testing::Test { protected: - NetworkInterface *iface; + stubNetworkInterface *iface; virtual void SetUp() { @@ -118,7 +128,7 @@ TEST_F(TestNetworkInterface, gethostbyname_async) TEST_F(TestNetworkInterface, add_dns_server) { SocketAddress a("127.0.0.1", 1024); - EXPECT_EQ(iface->add_dns_server(a), NSAPI_ERROR_OK); + EXPECT_EQ(iface->add_dns_server(a, ""), NSAPI_ERROR_OK); } TEST_F(TestNetworkInterface, get_connection_status) @@ -131,4 +141,81 @@ TEST_F(TestNetworkInterface, set_blocking) EXPECT_EQ(iface->set_blocking(true), NSAPI_ERROR_UNSUPPORTED); } -// No way to test attach as it doesn't do or return anything. +void my_iface_callback(nsapi_event_t e, intptr_t i) +{ + (void)e; + (void)i; + callback_is_called = true; +} +static bool second_callback_called; +void my_iface_callback2(nsapi_event_t e, intptr_t i) +{ + (void)e; + (void)i; + second_callback_called = true; +} + +TEST_F(TestNetworkInterface, add_event_listener) +{ + callback_is_called = false; + second_callback_called = false; + iface->add_event_listener(my_iface_callback); + iface->event(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, 0); + EXPECT_EQ(callback_is_called, true); + + iface->remove_event_listener(my_iface_callback); +} + +TEST_F(TestNetworkInterface, remove_event_listener) +{ + // Add two callback and check that both are called + callback_is_called = false; + second_callback_called = false; + iface->add_event_listener(my_iface_callback); + iface->add_event_listener(my_iface_callback2); + iface->event(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, 0); + EXPECT_EQ(callback_is_called, true); + EXPECT_EQ(second_callback_called, true); + + // Remove one of the callbacks + iface->remove_event_listener(my_iface_callback2); + callback_is_called = false; + second_callback_called = false; + + // expect only the one is called which remains in the list + iface->event(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, 0); + EXPECT_EQ(callback_is_called, true); + EXPECT_EQ(second_callback_called, false); + + // Remove also the last callback, and expect nothing is called + iface->remove_event_listener(my_iface_callback); + callback_is_called = false; + second_callback_called = false; + iface->event(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, 0); + EXPECT_EQ(callback_is_called, false); + EXPECT_EQ(second_callback_called, false); +} + +TEST_F(TestNetworkInterface, correct_event_listener_per_interface) +{ + stubNetworkInterface *iface2 = new stubNetworkInterface(); + iface->add_event_listener(my_iface_callback); + iface2->add_event_listener(my_iface_callback2); + + callback_is_called = false; + second_callback_called = false; + iface->event(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, 0); + EXPECT_EQ(callback_is_called, true); + EXPECT_EQ(second_callback_called, false); + + callback_is_called = false; + second_callback_called = false; + iface2->event(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, 0); + EXPECT_EQ(callback_is_called, false); + EXPECT_EQ(second_callback_called, true); + + iface->remove_event_listener(my_iface_callback); + iface2->remove_event_listener(my_iface_callback2); + + delete iface2; +} diff --git a/UNITTESTS/features/netsocket/NetworkInterface/unittest.cmake b/UNITTESTS/features/netsocket/NetworkInterface/unittest.cmake index fd219809831..5c142078dac 100644 --- a/UNITTESTS/features/netsocket/NetworkInterface/unittest.cmake +++ b/UNITTESTS/features/netsocket/NetworkInterface/unittest.cmake @@ -12,7 +12,8 @@ set(unittest-sources ../features/frameworks/nanostack-libservice/source/libip6string/ip6tos.c ../features/frameworks/nanostack-libservice/source/libip4string/stoip4.c ../features/frameworks/nanostack-libservice/source/libip6string/stoip6.c - ../features/frameworks/nanostack-libservice/source/libBits/common_functions.c + ../features/frameworks/nanostack-libservice/source/libBits/common_functions.c + ../features/frameworks/nanostack-libservice/source/libList/ns_list.c ) # Test files @@ -25,5 +26,7 @@ set(unittest-test-sources stubs/nsapi_dns_stub.cpp stubs/EventFlags_stub.cpp features/netsocket/NetworkInterface/test_NetworkInterface.cpp + stubs/NetworkInterfaceDefaults_stub.cpp stubs/SocketStats_Stub.cpp + stubs/mbed_error.c ) diff --git a/UNITTESTS/features/netsocket/TCPSocket/test_TCPSocket.cpp b/UNITTESTS/features/netsocket/TCPSocket/test_TCPSocket.cpp index 6dcd1999abc..40fcf6e1959 100644 --- a/UNITTESTS/features/netsocket/TCPSocket/test_TCPSocket.cpp +++ b/UNITTESTS/features/netsocket/TCPSocket/test_TCPSocket.cpp @@ -272,8 +272,12 @@ TEST_F(TestTCPSocket, accept) nsapi_error_t error; stack.return_value = NSAPI_ERROR_OK; socket->open((NetworkStack *)&stack); - EXPECT_NE(socket->accept(&error), static_cast(NULL)); + TCPSocket *sock = socket->accept(&error); + EXPECT_NE(sock, static_cast(NULL)); EXPECT_EQ(error, NSAPI_ERROR_OK); + if (sock) { + sock->close(); + } } TEST_F(TestTCPSocket, accept_would_block) diff --git a/UNITTESTS/features/netsocket/TLSSocketWrapper/test_TLSSocketWrapper.cpp b/UNITTESTS/features/netsocket/TLSSocketWrapper/test_TLSSocketWrapper.cpp index 32499fca51a..201924e7949 100644 --- a/UNITTESTS/features/netsocket/TLSSocketWrapper/test_TLSSocketWrapper.cpp +++ b/UNITTESTS/features/netsocket/TLSSocketWrapper/test_TLSSocketWrapper.cpp @@ -56,6 +56,7 @@ class TestTLSSocketWrapper : public testing::Test { stack.return_values.clear(); eventFlagsStubNextRetval.clear(); delete wrapper; + delete transport; } char *cert = "-----BEGIN CERTIFICATE-----\ @@ -101,6 +102,7 @@ TEST_F(TestTLSSocketWrapper, constructor) TEST_F(TestTLSSocketWrapper, constructor_hostname) { TLSSocketWrapper *wrapper2 = new TLSSocketWrapper(transport, "localhost"); + delete wrapper2; } /* connect */ diff --git a/UNITTESTS/features/netsocket/WiFiAccessPoint/test_WiFiAccessPoint.cpp b/UNITTESTS/features/netsocket/WiFiAccessPoint/test_WiFiAccessPoint.cpp index ef27e5e1989..959332832c5 100644 --- a/UNITTESTS/features/netsocket/WiFiAccessPoint/test_WiFiAccessPoint.cpp +++ b/UNITTESTS/features/netsocket/WiFiAccessPoint/test_WiFiAccessPoint.cpp @@ -62,5 +62,6 @@ TEST_F(TestWiFiAccessPoint, set_data) EXPECT_EQ(testAp.channel, ap1->get_channel()); EXPECT_EQ(testAp.rssi, ap1->get_rssi()); EXPECT_EQ(testAp.security, ap1->get_security()); + delete ap1; } diff --git a/UNITTESTS/features/netsocket/cellular/CellularNonIPSocket/test_CellularNonIPSocket.cpp b/UNITTESTS/features/netsocket/cellular/CellularNonIPSocket/test_CellularNonIPSocket.cpp new file mode 100644 index 00000000000..2d6ac4dcea6 --- /dev/null +++ b/UNITTESTS/features/netsocket/cellular/CellularNonIPSocket/test_CellularNonIPSocket.cpp @@ -0,0 +1,156 @@ +/* + * 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 "gtest/gtest.h" +#include "features/netsocket/cellular/CellularNonIPSocket.h" +#include "CellularContext_stub.h" + +using namespace mbed; + +// Control the rtos EventFlags stub. See EventFlags_stub.cpp +extern std::list eventFlagsStubNextRetval; + +static bool callback_is_called; +static void my_callback() +{ + callback_is_called = true; +} + +class TestCellularNonIPSocket : public testing::Test { +protected: + CellularNonIPSocket *socket; + ControlPlane_netif_stub *cp_netif; + CellularContext_stub cellular_context; + nsapi_size_t dataSize; + char dataBuf[10]; + + virtual void SetUp() + { + socket = new CellularNonIPSocket(); + cp_netif = NULL; + dataSize = 10; + } + + virtual void TearDown() + { + delete socket; + } +}; + +TEST_F(TestCellularNonIPSocket, open_null_cp_netif) +{ + EXPECT_EQ(socket->open(static_cast(NULL)), NSAPI_ERROR_PARAMETER); +} + +TEST_F(TestCellularNonIPSocket, open_null_context) +{ + EXPECT_EQ(socket->open(static_cast(NULL)), NSAPI_ERROR_PARAMETER); +} + +TEST_F(TestCellularNonIPSocket, open_context) +{ + EXPECT_EQ(socket->open((CellularContext *)&cellular_context), NSAPI_ERROR_OK); +} + +TEST_F(TestCellularNonIPSocket, open_cp_netif) +{ + cp_netif = cellular_context.get_cp_netif(); + EXPECT_EQ(socket->open((ControlPlane_netif *)cp_netif), NSAPI_ERROR_OK); +} + +TEST_F(TestCellularNonIPSocket, open_twice) +{ + EXPECT_EQ(socket->open((CellularContext *)&cellular_context), NSAPI_ERROR_OK); + EXPECT_EQ(socket->open((CellularContext *)&cellular_context), NSAPI_ERROR_PARAMETER); +} + +TEST_F(TestCellularNonIPSocket, close) +{ + socket->open((CellularContext *)&cellular_context); + EXPECT_EQ(socket->close(), NSAPI_ERROR_OK); +} + +TEST_F(TestCellularNonIPSocket, close_no_open) +{ + EXPECT_EQ(socket->close(), NSAPI_ERROR_NO_SOCKET); +} + +TEST_F(TestCellularNonIPSocket, sigio) +{ + callback_is_called = false; + socket->open((CellularContext *)&cellular_context); + socket->sigio(mbed::callback(my_callback)); + socket->close(); // Trigger event; + EXPECT_EQ(callback_is_called, true); +} + +/* send */ + +TEST_F(TestCellularNonIPSocket, send_no_open) +{ + EXPECT_EQ(socket->send((char *)dataBuf, dataSize), NSAPI_ERROR_NO_SOCKET); +} + +TEST_F(TestCellularNonIPSocket, send_error_would_block) +{ + socket->open((CellularContext *)&cellular_context); + cp_netif = cellular_context.get_cp_netif(); + cp_netif->return_value = NSAPI_ERROR_WOULD_BLOCK; + eventFlagsStubNextRetval.push_back(osFlagsError); // Break the wait loop + EXPECT_EQ(socket->send(dataBuf, dataSize), NSAPI_ERROR_WOULD_BLOCK); +} + +TEST_F(TestCellularNonIPSocket, send_error_other) +{ + socket->open((CellularContext *)&cellular_context); + cp_netif = cellular_context.get_cp_netif(); + cp_netif->return_value = NSAPI_ERROR_NO_MEMORY; + EXPECT_EQ(socket->send(dataBuf, dataSize), NSAPI_ERROR_NO_MEMORY); +} + +TEST_F(TestCellularNonIPSocket, send_error_no_timeout) +{ + socket->open((CellularContext *)&cellular_context); + cp_netif = cellular_context.get_cp_netif(); + cp_netif->return_value = NSAPI_ERROR_WOULD_BLOCK; + socket->set_blocking(false); + EXPECT_EQ(socket->send(dataBuf, dataSize), NSAPI_ERROR_WOULD_BLOCK); +} + +TEST_F(TestCellularNonIPSocket, send) +{ + socket->open((CellularContext *)&cellular_context); + cp_netif = cellular_context.get_cp_netif(); + cp_netif->return_value = dataSize; + EXPECT_EQ(socket->send(dataBuf, dataSize), dataSize); +} + +TEST_F(TestCellularNonIPSocket, recv) +{ + EXPECT_EQ(socket->recv(&dataBuf, dataSize), NSAPI_ERROR_NO_SOCKET); + + socket->open((CellularContext *)&cellular_context); + cp_netif = cellular_context.get_cp_netif(); + + cp_netif->return_value = 100; + EXPECT_EQ(socket->recv(&dataBuf, dataSize), 100); + + cp_netif->return_value = NSAPI_ERROR_WOULD_BLOCK; + eventFlagsStubNextRetval.push_back(0); + eventFlagsStubNextRetval.push_back(osFlagsError); // Break the wait loop + EXPECT_EQ(socket->recv(&dataBuf, dataSize), NSAPI_ERROR_WOULD_BLOCK); +} diff --git a/UNITTESTS/features/netsocket/cellular/CellularNonIPSocket/unittest.cmake b/UNITTESTS/features/netsocket/cellular/CellularNonIPSocket/unittest.cmake new file mode 100644 index 00000000000..2dd69cad717 --- /dev/null +++ b/UNITTESTS/features/netsocket/cellular/CellularNonIPSocket/unittest.cmake @@ -0,0 +1,22 @@ + +#################### +# UNIT TESTS +#################### + +# Add test specific include paths +set(unittest-includes ${unittest-includes} + ../features/netsocket/cellular +) + +set(unittest-sources + ../features/netsocket/cellular/CellularNonIPSocket.cpp +) + +set(unittest-test-sources + features/netsocket/cellular/CellularNonIPSocket/test_CellularNonIPSocket.cpp + stubs/NetworkInterface_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp + stubs/NetworkStack_stub.cpp + stubs/EventFlags_stub.cpp + stubs/Mutex_stub.cpp +) diff --git a/UNITTESTS/platform/mbed_watchdog_mgr/Watchdog.cpp b/UNITTESTS/platform/mbed_watchdog_mgr/Watchdog.cpp new file mode 100644 index 00000000000..33ba1e91468 --- /dev/null +++ b/UNITTESTS/platform/mbed_watchdog_mgr/Watchdog.cpp @@ -0,0 +1,57 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 DEVICE_WATCHDOG + +#include "Watchdog.h" + +namespace mbed { + +Watchdog *Watchdog::_first; + +Watchdog::Watchdog(uint32_t timeout, const char *const str): _name(str) +{ + +} + +void Watchdog::start() +{ + +} + +void Watchdog::kick() +{ + +} + +void Watchdog::stop() +{ + +} + +void Watchdog::process(uint32_t elapsed_ms) +{ + +} + +Watchdog::~Watchdog() +{ + +} + +} // namespace mbed + +#endif // DEVICE_WATCHDOG diff --git a/UNITTESTS/platform/mbed_watchdog_mgr/test_mbed_watchdog_mgr.cpp b/UNITTESTS/platform/mbed_watchdog_mgr/test_mbed_watchdog_mgr.cpp new file mode 100644 index 00000000000..25524d0d435 --- /dev/null +++ b/UNITTESTS/platform/mbed_watchdog_mgr/test_mbed_watchdog_mgr.cpp @@ -0,0 +1,70 @@ +/* + * 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 "gtest/gtest.h" +#include "gmock/gmock.h" +#include "mbed_watchdog_mgr.h" + +using namespace mbed; +extern bool testcase; +// AStyle ignored as the definition is not clear due to preprocessor usage +// *INDENT-OFF* +// AStyle ignored as the definition is not clear due to preprocessor usage +// *INDENT-OFF* +class TestMbedWatchdogMgr : public testing::Test { +protected: + + void SetUp() + { + } + + void TearDown() + { + } +}; +// *INDENT-ON* + +TEST_F(TestMbedWatchdogMgr, test_mbed_watchdog_mgr_start_pass) +{ + EXPECT_TRUE(mbed_wdog_manager_start()); +} + +TEST_F(TestMbedWatchdogMgr, test_mbed_watchdog_mgr_start_fail) +{ + EXPECT_FALSE(mbed_wdog_manager_start()); +} + +TEST_F(TestMbedWatchdogMgr, test_mbed_watchdog_mgr_stop_pass) +{ + EXPECT_TRUE(mbed_wdog_manager_stop()); +} + +TEST_F(TestMbedWatchdogMgr, test_mbed_watchdog_mgr_stop_fail) +{ + EXPECT_FALSE(mbed_wdog_manager_stop()); +} + +TEST_F(TestMbedWatchdogMgr, test_mbed_wdog_manager_get_max_timeout) +{ + EXPECT_EQ(0xFFFFFFFF, mbed_wdog_manager_get_max_timeout()); +} + + +TEST_F(TestMbedWatchdogMgr, test_mbed_wdog_manager_get_timeout) +{ + EXPECT_EQ(500, mbed_wdog_manager_get_timeout()); +} + diff --git a/UNITTESTS/platform/mbed_watchdog_mgr/unittest.cmake b/UNITTESTS/platform/mbed_watchdog_mgr/unittest.cmake new file mode 100644 index 00000000000..2b466aa804a --- /dev/null +++ b/UNITTESTS/platform/mbed_watchdog_mgr/unittest.cmake @@ -0,0 +1,29 @@ + +#################### +# UNIT TESTS +#################### +set(TEST_SUITE_NAME "mbed_watchdog_mgr") +# Add test specific include paths +set(unittest-includes ${unittest-includes} + . + ../hal +) + +# Source files +set(unittest-sources + ../platform/mbed_watchdog_mgr.cpp + +) + +# Test files +set(unittest-test-sources + platform/mbed_watchdog_mgr/test_mbed_watchdog_mgr.cpp + platform/mbed_watchdog_mgr/Watchdog.cpp + stubs/mbed_assert_stub.c + stubs/mbed_critical_stub.c + stubs/watchdog_api_stub.c +) + +# defines +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEVICE_WATCHDOG -DHW_WATCHDOG_TIMEOUT=500") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEVICE_WATCHDOG -DHW_WATCHDOG_TIMEOUT=500") diff --git a/UNITTESTS/stubs/ATHandler_stub.cpp b/UNITTESTS/stubs/ATHandler_stub.cpp index 5ae5d4fca68..2dda6054656 100644 --- a/UNITTESTS/stubs/ATHandler_stub.cpp +++ b/UNITTESTS/stubs/ATHandler_stub.cpp @@ -51,11 +51,34 @@ 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]; +const char *ATHandler_stub::read_string_table[kRead_string_table_size] = {'\0'}; 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]; +char *ATHandler_stub::urc_string_table[kATHandler_urc_table_max_size] = {'\0'}; + +bool ATHandler_stub::get_debug_flag = false; +uint8_t ATHandler_stub::set_debug_call_count = 0; + +bool ATHandler_stub::is_get_debug_run() +{ + return ATHandler_stub::get_debug_flag; +} + +void ATHandler_stub::get_debug_clear() +{ + ATHandler_stub::get_debug_flag = false; +} + +uint8_t ATHandler_stub::set_debug_call_count_get() +{ + return ATHandler_stub::set_debug_call_count; +} + +void ATHandler_stub::debug_call_count_clear() +{ + ATHandler_stub::set_debug_call_count = 0; +} ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, uint32_t timeout, const char *output_delimiter, uint16_t send_delay) : _nextATHandler(0), @@ -76,9 +99,17 @@ ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, uint32_t timeout, const void ATHandler::set_debug(bool debug_on) { + ++ATHandler_stub::set_debug_call_count; ATHandler_stub::debug_on = debug_on; } +bool ATHandler::get_debug() const +{ + ATHandler_stub::get_debug_flag = true; + + return ATHandler_stub::debug_on; +} + ATHandler::~ATHandler() { ATHandler_stub::ref_count = kATHandler_destructor_ref_ount; @@ -121,7 +152,7 @@ void ATHandler::set_file_handle(FileHandle *fh) { } -nsapi_error_t ATHandler::set_urc_handler(const char *urc, mbed::Callback cb) +void ATHandler::set_urc_handler(const char *urc, mbed::Callback cb) { if (ATHandler_stub::urc_amount < kATHandler_urc_table_max_size) { ATHandler_stub::callback[ATHandler_stub::urc_amount] = cb; @@ -138,7 +169,6 @@ nsapi_error_t ATHandler::set_urc_handler(const char *urc, mbed::Callback if (ATHandler_stub::call_immediately) { cb(); } - return ATHandler_stub::nsapi_error_value; } void ATHandler::remove_urc_handler(const char *prefix) diff --git a/UNITTESTS/stubs/ATHandler_stub.h b/UNITTESTS/stubs/ATHandler_stub.h index e243e355ba0..a6b39f06fd5 100644 --- a/UNITTESTS/stubs/ATHandler_stub.h +++ b/UNITTESTS/stubs/ATHandler_stub.h @@ -26,11 +26,13 @@ #ifndef __AT_HANDLER_STUB_H__ #define __AT_HANDLER_STUB_H__ +#define ATHANDLER_REF_COUNT_AT_DESTRUCTOR -909 + static const int kRead_string_table_size = 100; 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_destructor_ref_ount = ATHANDLER_REF_COUNT_AT_DESTRUCTOR; static const int kATHandler_urc_table_max_size = 10; static const int kATHandler_urc_string_max_size = 16; @@ -62,6 +64,13 @@ 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]; + +extern bool get_debug_flag; +bool is_get_debug_run(); +void get_debug_clear(); +extern uint8_t set_debug_call_count; +uint8_t set_debug_call_count_get(); +void debug_call_count_clear(); } #endif diff --git a/UNITTESTS/stubs/AT_CellularBase_stub.cpp b/UNITTESTS/stubs/AT_CellularBase_stub.cpp index 1c7f25a4bf0..d4b1369418a 100644 --- a/UNITTESTS/stubs/AT_CellularBase_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularBase_stub.cpp @@ -16,10 +16,8 @@ */ #include "nsapi_types.h" -#include "AT_CellularBase.h" #include "AT_CellularBase_stub.h" - - +#include "AT_CellularNetwork.h" using namespace mbed; ATHandler *AT_CellularBase_stub::handler_value = NULL; @@ -43,7 +41,17 @@ device_err_t AT_CellularBase::get_device_error() const return AT_CellularBase_stub::device_err_value; } -bool AT_CellularBase::is_supported(SupportedFeature feature) +intptr_t AT_CellularBase::get_property(CellularProperty key) { + if (key == PROPERTY_C_GREG) { + return AT_CellularNetwork::RegistrationModeDisable; + } else if (key == PROPERTY_C_REG || key == PROPERTY_C_EREG) { + return AT_CellularNetwork::RegistrationModeEnable; + } else if (key == PROPERTY_AT_CGAUTH) { + return true; + } else if (key == PROPERTY_IPV4_PDP_TYPE) { + return true; + } + return AT_CellularBase_stub::supported_bool; } diff --git a/UNITTESTS/stubs/AT_CellularBase_stub.h b/UNITTESTS/stubs/AT_CellularBase_stub.h index ec32d8eb28d..bbf63882feb 100644 --- a/UNITTESTS/stubs/AT_CellularBase_stub.h +++ b/UNITTESTS/stubs/AT_CellularBase_stub.h @@ -15,7 +15,7 @@ * limitations under the License. */ -#include "ATHandler.h" +#include "AT_CellularBase.h" namespace AT_CellularBase_stub { extern mbed::ATHandler *handler_value; diff --git a/UNITTESTS/stubs/AT_CellularContext_stub.cpp b/UNITTESTS/stubs/AT_CellularContext_stub.cpp index 8e8daba61bb..f608fd98c85 100644 --- a/UNITTESTS/stubs/AT_CellularContext_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularContext_stub.cpp @@ -19,12 +19,12 @@ using namespace mbed; -AT_CellularContext::AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularBase(at), _ip_stack_type_requested(DEFAULT_STACK), _is_connected(false), _is_blocking(true), - _current_op(OP_INVALID), _device(device), _nw(0), _fh(0) +AT_CellularContext::AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : + AT_CellularBase(at), _is_blocking(true), _is_connected(false), + _current_op(OP_INVALID), _device(device), _nw(0), _fh(0), _cp_req(cp_req), _nonip_req(nonip_req), _cp_in_use(false) { _stack = NULL; - _ip_stack_type = DEFAULT_STACK; + _pdp_type = DEFAULT_PDP_TYPE; _authentication_type = CellularContext::CHAP; _connect_status = NSAPI_STATUS_DISCONNECTED; _is_context_active = false; @@ -36,12 +36,21 @@ AT_CellularContext::AT_CellularContext(ATHandler &at, CellularDevice *device, co _cid = -1; _new_context_set = false; _next = NULL; + _cp_netif = NULL; } AT_CellularContext::~AT_CellularContext() { } +void AT_CellularContext::set_file_handle(UARTSerial *serial, PinName dcd_pin, bool active_high) +{ +} + +void AT_CellularContext::enable_hup(bool enable) +{ +} + void AT_CellularContext::set_file_handle(FileHandle *fh) { } @@ -82,6 +91,8 @@ uint32_t AT_CellularContext::get_timeout_for_operation(ContextOperation op) cons return timeout; } + + bool AT_CellularContext::is_connected() { return true; @@ -135,19 +146,23 @@ const char *AT_CellularContext::get_gateway() return NULL; } -bool AT_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) +AT_CellularBase::CellularProperty AT_CellularContext::pdp_type_t_to_cellular_property(pdp_type_t pdp_type) { - return true; -} + AT_CellularBase::CellularProperty prop = PROPERTY_IPV4_PDP_TYPE; + if (pdp_type == IPV6_PDP_TYPE) { + prop = PROPERTY_IPV6_PDP_TYPE; + } else if (pdp_type == IPV4V6_PDP_TYPE) { + prop = PROPERTY_IPV4V6_PDP_TYPE; + } else if (pdp_type == NON_IP_PDP_TYPE) { + prop = PROPERTY_NON_IP_PDP_TYPE; + } -nsapi_ip_stack_t AT_CellularContext::get_stack_type() -{ - return IPV4V6_STACK; + return prop; } -nsapi_ip_stack_t AT_CellularContext::string_to_stack_type(const char *pdp_type) +pdp_type_t AT_CellularContext::string_to_pdp_type(const char *pdp_type) { - return IPV4V6_STACK; + return IPV4V6_PDP_TYPE; } // PDP Context handling @@ -197,6 +212,12 @@ nsapi_error_t AT_CellularContext::disconnect() return NSAPI_ERROR_OK; } + +nsapi_connection_status_t AT_CellularContext::get_connection_status() const +{ + return NSAPI_STATUS_DISCONNECTED; +} + nsapi_error_t AT_CellularContext::get_apn_backoff_timer(int &backoff_timer) { return NSAPI_ERROR_OK; @@ -222,3 +243,30 @@ void AT_CellularContext::cellular_callback(nsapi_event_t ev, intptr_t ptr) void AT_CellularContext::call_network_cb(nsapi_connection_status_t status) { } + +ControlPlane_netif *AT_CellularContext::get_cp_netif() +{ + return NULL; +} + +nsapi_error_t AT_CellularContext::activate_non_ip_context() +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t AT_CellularContext::setup_control_plane_opt() +{ + return NSAPI_ERROR_OK; +} + +void AT_CellularContext::deactivate_ip_context() +{ +} + +void AT_CellularContext::deactivate_non_ip_context() +{ +} + +void AT_CellularContext::set_disconnect() +{ +} diff --git a/UNITTESTS/stubs/AT_CellularDevice_stub.cpp b/UNITTESTS/stubs/AT_CellularDevice_stub.cpp index 7ef169e736c..69e8df2f98e 100644 --- a/UNITTESTS/stubs/AT_CellularDevice_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularDevice_stub.cpp @@ -15,22 +15,30 @@ * limitations under the License. */ -#include "AT_CellularDevice.h" +#include "AT_CellularDevice_stub.h" #include "AT_CellularNetwork.h" +#include "AT_CellularContext.h" #include "ATHandler.h" const int DEFAULT_AT_TIMEOUT = 1000; using namespace mbed; +int AT_CellularDevice_stub::failure_count = 0; +nsapi_error_t AT_CellularDevice_stub::nsapi_error_value = 0; +int AT_CellularDevice_stub::init_module_failure_count = 0; +int AT_CellularDevice_stub::set_pin_failure_count = 0; +int AT_CellularDevice_stub::get_sim_failure_count = 0; +bool AT_CellularDevice_stub::pin_needed = false; + AT_CellularDevice::AT_CellularDevice(FileHandle *fh) : CellularDevice(fh), _network(0), _sms(0), - _sim(0), _power(0), _information(0), _context_list(0), _default_timeout(DEFAULT_AT_TIMEOUT), - _modem_debug_on(false) + _information(0), _context_list(0), _default_timeout(DEFAULT_AT_TIMEOUT), _modem_debug_on(false) { } AT_CellularDevice::~AT_CellularDevice() { + delete _network; } ATHandler *AT_CellularDevice::get_at_handler(FileHandle *fileHandle) @@ -52,19 +60,28 @@ nsapi_error_t AT_CellularDevice::release_at_handler(ATHandler *at_handler) } } -CellularContext *create_context(FileHandle *fh = NULL, const char *apn = MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN) +CellularContext *AT_CellularDevice::create_context(UARTSerial *serial, const char *const apn, PinName dcd_pin, + bool active_high, bool cp_req, bool nonip_req) { +} +CellularContext *create_context(FileHandle *fh, const char *apn) +{ } void delete_context(CellularContext *context) { - } CellularNetwork *AT_CellularDevice::open_network(FileHandle *fh) { - return new AT_CellularNetwork(*ATHandler::get_instance(fh, _queue, _default_timeout, "\r", get_send_delay(), _modem_debug_on)); + _network = new AT_CellularNetwork(*ATHandler::get_instance(fh, + _queue, + _default_timeout, + "\r", + get_send_delay(), + _modem_debug_on)); + return _network; } CellularSMS *AT_CellularDevice::open_sms(FileHandle *fh) @@ -72,103 +89,156 @@ CellularSMS *AT_CellularDevice::open_sms(FileHandle *fh) return NULL; } -CellularSIM *AT_CellularDevice::open_sim(FileHandle *fh) +CellularInformation *AT_CellularDevice::open_information(FileHandle *fh) { return NULL; } -CellularPower *AT_CellularDevice::open_power(FileHandle *fh) +void AT_CellularDevice::close_network() { - return NULL; + delete _network; + + _network = NULL; } -CellularInformation *AT_CellularDevice::open_information(FileHandle *fh) +void AT_CellularDevice::close_sms() { - return NULL; } -void AT_CellularDevice::close_network() +void AT_CellularDevice::close_information() { } -void AT_CellularDevice::close_sms() +CellularContext *AT_CellularDevice::get_context_list() const { + return NULL; } -void AT_CellularDevice::close_power() +CellularContext *AT_CellularDevice::create_context(FileHandle *fh, const char *apn, bool cp_req, bool nonip_req) { + return NULL; } -void AT_CellularDevice::close_sim() +AT_CellularContext *AT_CellularDevice::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) { + return NULL; } -void AT_CellularDevice::close_information() +void AT_CellularDevice::delete_context(CellularContext *context) { } -CellularContext *AT_CellularDevice::get_context_list() const +AT_CellularNetwork *AT_CellularDevice::open_network_impl(ATHandler &at) { - return NULL; + _network = new AT_CellularNetwork(at); + + return _network; } -CellularContext *AT_CellularDevice::create_context(FileHandle *fh, const char *apn) +AT_CellularSMS *AT_CellularDevice::open_sms_impl(ATHandler &at) { return NULL; } -AT_CellularContext *AT_CellularDevice::create_context_impl(ATHandler &at, const char *apn) +AT_CellularInformation *AT_CellularDevice::open_information_impl(ATHandler &at) { return NULL; } -void AT_CellularDevice::delete_context(CellularContext *context) +void AT_CellularDevice::set_timeout(int timeout) { + _default_timeout = timeout; +} +uint16_t AT_CellularDevice::get_send_delay() const +{ + return 0; } -AT_CellularNetwork *AT_CellularDevice::open_network_impl(ATHandler &at) +void AT_CellularDevice::modem_debug_on(bool on) { - return new AT_CellularNetwork(at); + _modem_debug_on = on; + } -AT_CellularSMS *AT_CellularDevice::open_sms_impl(ATHandler &at) +nsapi_error_t AT_CellularDevice::is_ready() { - return NULL; + if (AT_CellularDevice_stub::init_module_failure_count) { + AT_CellularDevice_stub::init_module_failure_count--; + return NSAPI_ERROR_DEVICE_ERROR; + } + return AT_CellularDevice_stub::nsapi_error_value; } -AT_CellularPower *AT_CellularDevice::open_power_impl(ATHandler &at) +void AT_CellularDevice::set_ready_cb(mbed::Callback callback) { - return NULL; } -AT_CellularSIM *AT_CellularDevice::open_sim_impl(ATHandler &at) +nsapi_error_t AT_CellularDevice::set_power_save_mode(int periodic_time, int active_time) { - return NULL; + return NSAPI_ERROR_UNSUPPORTED; } -AT_CellularInformation *AT_CellularDevice::open_information_impl(ATHandler &at) +nsapi_error_t AT_CellularDevice::init() { - return NULL; + if (AT_CellularDevice_stub::init_module_failure_count) { + AT_CellularDevice_stub::init_module_failure_count--; + return NSAPI_ERROR_DEVICE_ERROR; + } + return AT_CellularDevice_stub::nsapi_error_value; } -void AT_CellularDevice::set_timeout(int timeout) +nsapi_error_t AT_CellularDevice::shutdown() { - _default_timeout = timeout; + if (AT_CellularDevice_stub::init_module_failure_count) { + AT_CellularDevice_stub::init_module_failure_count--; + return NSAPI_ERROR_DEVICE_ERROR; + } + return AT_CellularDevice_stub::nsapi_error_value; } -uint16_t AT_CellularDevice::get_send_delay() const +nsapi_error_t AT_CellularDevice::set_pin(const char *sim_pin) { - return 0; + if (AT_CellularDevice_stub::set_pin_failure_count) { + AT_CellularDevice_stub::set_pin_failure_count--; + return NSAPI_ERROR_DEVICE_ERROR; + } + return AT_CellularDevice_stub::nsapi_error_value; } -void AT_CellularDevice::modem_debug_on(bool on) +nsapi_error_t AT_CellularDevice::get_sim_state(SimState &state) { - _modem_debug_on = on; + if (AT_CellularDevice_stub::get_sim_failure_count) { + AT_CellularDevice_stub::get_sim_failure_count--; + return NSAPI_ERROR_DEVICE_ERROR; + } + + if (AT_CellularDevice_stub::pin_needed) { + AT_CellularDevice_stub::pin_needed = false; + state = SimStatePinNeeded; + } else { + state = SimStateReady; + } + return AT_CellularDevice_stub::nsapi_error_value; +} + +nsapi_error_t AT_CellularDevice::hard_power_on() +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t AT_CellularDevice::hard_power_off() +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t AT_CellularDevice::soft_power_on() +{ + return NSAPI_ERROR_OK; } -nsapi_error_t AT_CellularDevice::init_module() +nsapi_error_t AT_CellularDevice::soft_power_off() { return NSAPI_ERROR_OK; } diff --git a/UNITTESTS/stubs/AT_CellularDevice_stub.h b/UNITTESTS/stubs/AT_CellularDevice_stub.h new file mode 100644 index 00000000000..696475d0df9 --- /dev/null +++ b/UNITTESTS/stubs/AT_CellularDevice_stub.h @@ -0,0 +1,32 @@ +/* + * 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 AT_CELLULARDEVICE_STUB_H_ +#define AT_CELLULARDEVICE_STUB_H_ + +#include "AT_CellularDevice.h" + +namespace AT_CellularDevice_stub { +extern int failure_count; +extern nsapi_error_t nsapi_error_value; +extern int init_module_failure_count; +extern int set_pin_failure_count; +extern int get_sim_failure_count; +extern bool pin_needed; +} + + +#endif /* AT_CELLULARDEVICE_STUB_H_ */ diff --git a/UNITTESTS/stubs/AT_CellularInformation_stub.cpp b/UNITTESTS/stubs/AT_CellularInformation_stub.cpp index ae35f29bde6..832c0384338 100644 --- a/UNITTESTS/stubs/AT_CellularInformation_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularInformation_stub.cpp @@ -47,3 +47,13 @@ nsapi_error_t AT_CellularInformation::get_serial_number(char *buf, size_t buf_si { return NSAPI_ERROR_OK; } + +nsapi_error_t AT_CellularInformation::get_imsi(char *imsi, size_t buf_size) +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t AT_CellularInformation::get_iccid(char *buf, size_t buf_size) +{ + return NSAPI_ERROR_OK; +} diff --git a/UNITTESTS/stubs/AT_CellularNetwork_stub.cpp b/UNITTESTS/stubs/AT_CellularNetwork_stub.cpp index 60d42e8e763..899be2fb4c0 100644 --- a/UNITTESTS/stubs/AT_CellularNetwork_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularNetwork_stub.cpp @@ -15,7 +15,7 @@ * limitations under the License. */ -#include "AT_CellularNetwork.h" +#include "AT_CellularNetwork_stub.h" #include "CellularNetwork.h" #include "CellularUtil.h" #include "CellularLog.h" @@ -25,6 +25,13 @@ using namespace mbed; using namespace mbed_cellular_util; + + +nsapi_error_t AT_CellularNetwork_stub::nsapi_error_value = 0; +int AT_CellularNetwork_stub::fail_counter = 0; +int AT_CellularNetwork_stub::set_registration_urc_fail_counter = 0; +int AT_CellularNetwork_stub::get_registration_params_fail_counter = 0; + AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler) : AT_CellularBase(atHandler) { } @@ -44,6 +51,10 @@ nsapi_connection_status_t AT_CellularNetwork::get_connection_status() const nsapi_error_t AT_CellularNetwork::set_registration_urc(RegistrationType type, bool urc_on) { + if (AT_CellularNetwork_stub::set_registration_urc_fail_counter) { + AT_CellularNetwork_stub::set_registration_urc_fail_counter--; + return NSAPI_ERROR_DEVICE_ERROR; + } return NSAPI_ERROR_OK; } @@ -60,6 +71,12 @@ nsapi_error_t AT_CellularNetwork::set_registration(const char *plmn) nsapi_error_t AT_CellularNetwork::get_registration_params(RegistrationType type, registration_params_t ®_params) { + if (AT_CellularNetwork_stub::get_registration_params_fail_counter) { + AT_CellularNetwork_stub::get_registration_params_fail_counter--; + return NSAPI_ERROR_DEVICE_ERROR; + } + + reg_params._status = CellularNetwork::RegisteredHomeNetwork; return NSAPI_ERROR_OK; } @@ -68,11 +85,6 @@ nsapi_error_t AT_CellularNetwork::get_registration_params(registration_params_t return NSAPI_ERROR_OK; } -AT_CellularNetwork::RegistrationMode AT_CellularNetwork::has_registration(RegistrationType reg_type) -{ - return RegistrationModeDisable; -} - nsapi_error_t AT_CellularNetwork::set_attach() { return NSAPI_ERROR_OK; @@ -108,24 +120,25 @@ nsapi_error_t AT_CellularNetwork::scan_plmn(operList_t &operators, int &opsCount return NSAPI_ERROR_OK; } -nsapi_error_t AT_CellularNetwork::set_ciot_optimization_config(Supported_UE_Opt supported_opt, - Preferred_UE_Opt preferred_opt) +nsapi_error_t AT_CellularNetwork::set_ciot_optimization_config(CIoT_Supported_Opt supported_opt, + CIoT_Preferred_UE_Opt preferred_opt, + Callback network_support_cb) { return NSAPI_ERROR_OK; } -nsapi_error_t AT_CellularNetwork::get_ciot_optimization_config(Supported_UE_Opt &supported_opt, - Preferred_UE_Opt &preferred_opt) +nsapi_error_t AT_CellularNetwork::get_ciot_ue_optimization_config(CIoT_Supported_Opt &supported_opt, + CIoT_Preferred_UE_Opt &preferred_opt) { return NSAPI_ERROR_OK; } -nsapi_error_t AT_CellularNetwork::get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp) +nsapi_error_t AT_CellularNetwork::get_ciot_network_optimization_config(CIoT_Supported_Opt &supported_opt) { return NSAPI_ERROR_OK; } -nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int &ber) +nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int *ber) { return NSAPI_ERROR_OK; } @@ -147,5 +160,10 @@ nsapi_error_t AT_CellularNetwork::get_operator_names(operator_names_list &op_nam bool AT_CellularNetwork::is_active_context() { - return true; + return false; +} + +nsapi_error_t AT_CellularNetwork::set_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value) +{ + return NSAPI_ERROR_OK; } diff --git a/UNITTESTS/stubs/AT_CellularNetwork_stub.h b/UNITTESTS/stubs/AT_CellularNetwork_stub.h new file mode 100644 index 00000000000..7f8197c35af --- /dev/null +++ b/UNITTESTS/stubs/AT_CellularNetwork_stub.h @@ -0,0 +1,30 @@ +/* + * 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 AT_CELLULARNETWORK_STUB_H_ +#define AT_CELLULARNETWORK_STUB_H_ + +#include "AT_CellularNetwork.h" + +namespace AT_CellularNetwork_stub { +extern nsapi_error_t nsapi_error_value; +extern int fail_counter; +extern int set_registration_urc_fail_counter; +extern int get_registration_params_fail_counter; +} + + +#endif /* AT_CELLULARNETWORK_STUB_H_ */ diff --git a/UNITTESTS/stubs/AT_CellularPower_stub.cpp b/UNITTESTS/stubs/AT_CellularPower_stub.cpp deleted file mode 100644 index 56d8a4ca87e..00000000000 --- a/UNITTESTS/stubs/AT_CellularPower_stub.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) , 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 "AT_CellularPower.h" -#include "CellularUtil.h" -#include "CellularLog.h" - -using namespace mbed_cellular_util; -using namespace mbed; - -AT_CellularPower::AT_CellularPower(ATHandler &at) : AT_CellularBase(at) -{ -} - -AT_CellularPower::~AT_CellularPower() -{ -} - -nsapi_error_t AT_CellularPower::on() -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularPower::off() -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularPower::set_at_mode() -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularPower::set_power_level(int func_level, int do_reset) -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularPower::reset() -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularPower::opt_power_save_mode(int periodic_time, int active_time) -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularPower::opt_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value) -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularPower::set_device_ready_urc_cb(mbed::Callback callback) -{ - return NSAPI_ERROR_OK; -} - -void AT_CellularPower::remove_device_ready_urc_cb(mbed::Callback callback) -{ - -} - -nsapi_error_t AT_CellularPower::is_device_ready() -{ - return NSAPI_ERROR_OK; -} diff --git a/UNITTESTS/stubs/AT_CellularSIM_stub.cpp b/UNITTESTS/stubs/AT_CellularSIM_stub.cpp deleted file mode 100644 index afab1012bd8..00000000000 --- a/UNITTESTS/stubs/AT_CellularSIM_stub.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) , 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 "AT_CellularSIM.h" -#include "CellularLog.h" - -using namespace mbed; - -AT_CellularSIM::AT_CellularSIM(ATHandler &at) : AT_CellularBase(at) -{ -} - -AT_CellularSIM::~AT_CellularSIM() -{ -} - -nsapi_error_t AT_CellularSIM::get_sim_state(SimState &state) -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularSIM::set_pin(const char *sim_pin) -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularSIM::change_pin(const char *sim_pin, const char *new_pin) -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularSIM::set_pin_query(const char *sim_pin, bool query_pin) -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularSIM::get_imsi(char *imsi) -{ - return NSAPI_ERROR_OK; -} - -nsapi_error_t AT_CellularSIM::get_iccid(char *buf, size_t buf_size) -{ - return NSAPI_ERROR_OK; -} diff --git a/UNITTESTS/stubs/CellularContext_stub.h b/UNITTESTS/stubs/CellularContext_stub.h new file mode 100644 index 00000000000..e90f4054344 --- /dev/null +++ b/UNITTESTS/stubs/CellularContext_stub.h @@ -0,0 +1,224 @@ +/* + * 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 "cellular/framework/API/CellularContext.h" +#include "ControlPlane_netif_stub.h" + +namespace mbed { + +class CellularContext_stub : public CellularContext { +public: + std::list return_values; + nsapi_error_t return_value; + ControlPlane_netif_stub *my_cp_netif; + + CellularContext_stub() + { + return_value = 0; + my_cp_netif = NULL; + } + ~CellularContext_stub() + { + if (my_cp_netif) { + delete my_cp_netif; + my_cp_netif = NULL; + } + } + + void set_file_handle(UARTSerial *serial, PinName dcd_pin, bool active_high) + { + }; + + void enable_hup(bool enable) + { + }; + + void set_file_handle(FileHandle *fh) + { + }; + + nsapi_error_t connect() + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t set_device_ready() + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t set_sim_ready() + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t register_to_network() + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t attach_to_network() + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t check_operation(nsapi_error_t err, ContextOperation op) + { + return NSAPI_ERROR_OK; + }; + + uint32_t get_timeout_for_operation(ContextOperation op) const + { + uint32_t timeout = 10 * 60 * 1000; // default timeout is 10 minutes as registration and attach may take time + return timeout; + }; + + bool is_connected() + { + return true; + }; + + NetworkStack *get_stack() + { + return NULL; + }; + + const char *get_ip_address() + { + return NULL; + }; + + void attach(Callback status_cb) + { + }; + + nsapi_error_t set_blocking(bool blocking) + { + return NSAPI_ERROR_OK; + }; + + void set_plmn(const char *plmn) + { + }; + + void set_sim_pin(const char *sim_pin) + { + }; + + nsapi_error_t connect(const char *sim_pin, const char *apn, const char *uname, + const char *pwd) + { + return NSAPI_ERROR_OK; + }; + + void set_credentials(const char *apn, const char *uname, const char *pwd) + { + + }; + + const char *get_netmask() + { + return NULL; + }; + + const char *get_gateway() + { + return NULL; + }; + + bool get_context() + { + return true; + }; + + bool set_new_context(int cid) + { + return true; + }; + + nsapi_error_t do_activate_context() + { + return NSAPI_ERROR_OK; + }; + + void do_connect() + { + }; + + nsapi_error_t disconnect() + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t get_apn_backoff_timer(int &backoff_timer) + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t get_rate_control( + CellularContext::RateControlExceptionReports &reports, + CellularContext::RateControlUplinkTimeUnit &timeUnit, int &uplinkRate) + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t get_pdpcontext_params(pdpContextList_t ¶ms_list) + { + return NSAPI_ERROR_OK; + }; + + // Called by CellularDevice for network and cellular device changes + void cellular_callback(nsapi_event_t ev, intptr_t ptr) + { + }; + + void call_network_cb(nsapi_connection_status_t status) + { + }; + + ControlPlane_netif_stub *get_cp_netif() + { + if (!my_cp_netif) { + my_cp_netif = new ControlPlane_netif_stub(); + } + return my_cp_netif; + }; + + nsapi_error_t activate_non_ip_context() + { + return NSAPI_ERROR_OK; + }; + + nsapi_error_t setup_control_plane_opt() + { + return NSAPI_ERROR_OK; + }; + + void deactivate_ip_context() + { + }; + + void deactivate_non_ip_context() + { + }; + + void set_disconnect() + { + }; +}; + +} diff --git a/UNITTESTS/stubs/CellularDevice_stub.cpp b/UNITTESTS/stubs/CellularDevice_stub.cpp index e64118f0f66..7309837f068 100644 --- a/UNITTESTS/stubs/CellularDevice_stub.cpp +++ b/UNITTESTS/stubs/CellularDevice_stub.cpp @@ -30,7 +30,7 @@ MBED_WEAK CellularDevice *CellularDevice::get_default_instance() return NULL; } -CellularDevice::CellularDevice(FileHandle *fh) : _network_ref_count(0), _sms_ref_count(0), _power_ref_count(0), _sim_ref_count(0), +CellularDevice::CellularDevice(FileHandle *fh) : _network_ref_count(0), _sms_ref_count(0), _info_ref_count(0), _fh(fh), _queue(5 * EVENTS_EVENT_SIZE), _state_machine(0), _nw(0) { } @@ -87,3 +87,22 @@ nsapi_error_t CellularDevice::attach_to_network() return NSAPI_ERROR_OK; } + +nsapi_error_t CellularDevice::set_pin(const char *sim_pin) +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t CellularDevice::get_sim_state(SimState &state) +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t CellularDevice::shutdown() +{ + return NSAPI_ERROR_OK; +} + +void CellularDevice::cellular_callback(nsapi_event_t ev, intptr_t ptr) +{ +} diff --git a/UNITTESTS/stubs/ControlPlane_netif_stub.h b/UNITTESTS/stubs/ControlPlane_netif_stub.h new file mode 100644 index 00000000000..52661c52b87 --- /dev/null +++ b/UNITTESTS/stubs/ControlPlane_netif_stub.h @@ -0,0 +1,59 @@ +/* + * 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 "netsocket/cellular/ControlPlane_netif.h" +#include + +namespace mbed { + +class ControlPlane_netif_stub : public ControlPlane_netif { +public: + std::list return_values; + nsapi_error_t return_value; + + ControlPlane_netif_stub() + { + return_value = 0; + } + +protected: + virtual nsapi_error_t send(const void *cpdata, nsapi_size_t cpdata_length) + { + if (!return_values.empty()) { + nsapi_error_t ret = return_values.front(); + return_values.pop_front(); + return ret; + } + return return_value; + }; + + virtual nsapi_error_t recv(void *cpdata, nsapi_size_t cpdata_length) + { + if (!return_values.empty()) { + nsapi_error_t ret = return_values.front(); + return_values.pop_front(); + return ret; + } + return return_value; + }; + + virtual void data_received() {}; + + virtual void attach(void (*callback)(void *), void *data) {}; +}; + +} diff --git a/UNITTESTS/stubs/FileHandle_stub.h b/UNITTESTS/stubs/FileHandle_stub.h index f568d7e3607..af8c6cc2b17 100644 --- a/UNITTESTS/stubs/FileHandle_stub.h +++ b/UNITTESTS/stubs/FileHandle_stub.h @@ -80,7 +80,9 @@ class FileHandle_stub : public FileHandle { virtual void sigio(Callback func) { - func(); + if (func) { + func(); + } } short short_value; diff --git a/UNITTESTS/stubs/LoRaMacCrypto_stub.cpp b/UNITTESTS/stubs/LoRaMacCrypto_stub.cpp index 669e44f64cf..c824a16eb21 100644 --- a/UNITTESTS/stubs/LoRaMacCrypto_stub.cpp +++ b/UNITTESTS/stubs/LoRaMacCrypto_stub.cpp @@ -30,6 +30,10 @@ LoRaMacCrypto::LoRaMacCrypto() { } +LoRaMacCrypto::~LoRaMacCrypto() +{ +} + int LoRaMacCrypto::compute_mic(const uint8_t *, uint16_t, const uint8_t *, uint32_t, uint32_t, uint8_t dir, uint32_t, uint32_t *) { diff --git a/UNITTESTS/stubs/LoRaPHY_stub.cpp b/UNITTESTS/stubs/LoRaPHY_stub.cpp index 01b7312b7c3..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; diff --git a/UNITTESTS/stubs/NetworkInterfaceDefaults_stub.cpp b/UNITTESTS/stubs/NetworkInterfaceDefaults_stub.cpp new file mode 100644 index 00000000000..1275e1169ec --- /dev/null +++ b/UNITTESTS/stubs/NetworkInterfaceDefaults_stub.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2017, 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 "netsocket/NetworkInterface.h" +#include "WiFiInterface.h" +#include "CellularBase.h" +#include "MeshInterface.h" + +MBED_WEAK WiFiInterface *WiFiInterface::get_default_instance() +{ + return NULL; +} + +MBED_WEAK MeshInterface *MeshInterface::get_default_instance() +{ + return NULL; +} + +MBED_WEAK CellularBase *CellularBase::get_default_instance() +{ + return NULL; +} + +MBED_WEAK WiFiInterface *WiFiInterface::get_target_default_instance() +{ + return NULL; +} + +MBED_WEAK NetworkInterface *NetworkInterface::get_default_instance() +{ + return NULL; +} + +void NetworkInterface::set_default_parameters() +{ +} + +void WiFiInterface::set_default_parameters() +{ +} + +void CellularBase::set_default_parameters() +{ +} + +MBED_WEAK NetworkInterface *NetworkInterface::get_target_default_instance() +{ + return NULL; +} diff --git a/UNITTESTS/stubs/NetworkInterface_stub.cpp b/UNITTESTS/stubs/NetworkInterface_stub.cpp index cfe6bdaa79f..50009573bed 100644 --- a/UNITTESTS/stubs/NetworkInterface_stub.cpp +++ b/UNITTESTS/stubs/NetworkInterface_stub.cpp @@ -52,12 +52,12 @@ nsapi_error_t NetworkInterface::set_dhcp(bool dhcp) } // DNS operations go through the underlying stack by default -nsapi_error_t NetworkInterface::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version) +nsapi_error_t NetworkInterface::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version, const char *interface_name) { return NSAPI_ERROR_UNSUPPORTED; } -nsapi_error_t NetworkInterface::add_dns_server(const SocketAddress &address) +nsapi_error_t NetworkInterface::add_dns_server(const SocketAddress &address, const char *interface_name) { return NSAPI_ERROR_UNSUPPORTED; } @@ -77,7 +77,7 @@ nsapi_error_t NetworkInterface::set_blocking(bool blocking) return NSAPI_ERROR_UNSUPPORTED; } -nsapi_value_or_error_t NetworkInterface::gethostbyname_async(char const *, mbed::Callback, nsapi_version) +nsapi_value_or_error_t NetworkInterface::gethostbyname_async(char const *, mbed::Callback, nsapi_version, const char *interface_name) { return NSAPI_ERROR_UNSUPPORTED; } @@ -87,3 +87,15 @@ nsapi_error_t NetworkInterface::gethostbyname_async_cancel(int id) return NSAPI_ERROR_UNSUPPORTED; } +void NetworkInterface::set_as_default() +{ +} + +char *NetworkInterface::get_interface_name(char *interface_name) +{ + return NULL; +} + +NetworkInterface::~NetworkInterface() +{ +} diff --git a/UNITTESTS/stubs/NetworkStack_stub.cpp b/UNITTESTS/stubs/NetworkStack_stub.cpp index 2d3a451a3cb..31f3b91533b 100644 --- a/UNITTESTS/stubs/NetworkStack_stub.cpp +++ b/UNITTESTS/stubs/NetworkStack_stub.cpp @@ -22,17 +22,17 @@ #include // Default NetworkStack operations -nsapi_error_t NetworkStack::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version) +nsapi_error_t NetworkStack::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version, const char *interface_name) { return NSAPI_ERROR_OK; } -nsapi_error_t NetworkStack::add_dns_server(const SocketAddress &address) +nsapi_error_t NetworkStack::add_dns_server(const SocketAddress &address, const char *interface_name) { return NSAPI_ERROR_OK; } -nsapi_error_t NetworkStack::get_dns_server(int index, SocketAddress *address) +nsapi_error_t NetworkStack::get_dns_server(int index, SocketAddress *address, const char *interface_name) { return NSAPI_ERROR_UNSUPPORTED; } @@ -68,8 +68,8 @@ NetworkStack *nsapi_create_stack(NetworkStack *stack) return NULL; } -nsapi_value_or_error_t NetworkStack::gethostbyname_async(const char *host, hostbyname_cb_t callback, - nsapi_version_t version) +nsapi_value_or_error_t NetworkStack::gethostbyname_async(const char *host, hostbyname_cb_t callback, nsapi_version_t version, + const char *interface_name) { return NSAPI_ERROR_UNSUPPORTED; } @@ -93,3 +93,7 @@ const char *NetworkStack::get_ip_address() { return NULL; } +const char *NetworkStack::get_ip_address_if(const char *interface_name) +{ + return NULL; +} diff --git a/UNITTESTS/stubs/NetworkStack_stub.h b/UNITTESTS/stubs/NetworkStack_stub.h index 7612bd5efd5..daeee0f66fe 100644 --- a/UNITTESTS/stubs/NetworkStack_stub.h +++ b/UNITTESTS/stubs/NetworkStack_stub.h @@ -27,9 +27,10 @@ class NetworkStackstub : public NetworkStack { nsapi_error_t return_value; SocketAddress return_socketAddress; - NetworkStackstub() + NetworkStackstub() : + return_value(0), + return_socketAddress() { - return_value = 0; } virtual const char *get_ip_address() @@ -37,12 +38,12 @@ class NetworkStackstub : public NetworkStack { return "127.0.0.1"; } virtual nsapi_error_t gethostbyname(const char *host, - SocketAddress *address, nsapi_version_t version) + SocketAddress *address, nsapi_version_t version, const char *interface_name) { return return_value; } - virtual nsapi_value_or_error_t gethostbyname_async(const char *host, hostbyname_cb_t callback, - nsapi_version_t version) + virtual nsapi_value_or_error_t gethostbyname_async(const char *host, hostbyname_cb_t callback, nsapi_version_t version, + const char *interface_name) { return return_value; } @@ -57,6 +58,8 @@ class NetworkStackstub : public NetworkStack { if (return_value == NSAPI_ERROR_OK && return_values.front() == NSAPI_ERROR_OK) { // Make sure a non-NULL value is returned if error is not expected *handle = reinterpret_cast(1234); + } else { + *handle = NULL; } return return_value; }; @@ -84,6 +87,12 @@ class NetworkStackstub : public NetworkStack { virtual nsapi_error_t socket_accept(nsapi_socket_t server, nsapi_socket_t *handle, SocketAddress *address = 0) { + if (return_value == NSAPI_ERROR_OK && return_values.front() == NSAPI_ERROR_OK) { + // Make sure a non-NULL value is returned if error is not expected + *handle = reinterpret_cast(1234); + } else { + *handle = NULL; + } return return_value; }; virtual nsapi_size_or_error_t socket_send(nsapi_socket_t handle, diff --git a/UNITTESTS/stubs/Thread_stub.cpp b/UNITTESTS/stubs/Thread_stub.cpp index 8eed1e7f2a3..9ab4ebfafd6 100644 --- a/UNITTESTS/stubs/Thread_stub.cpp +++ b/UNITTESTS/stubs/Thread_stub.cpp @@ -15,13 +15,31 @@ * limitations under the License. */ -#include "Thread.h" +#include "Thread_stub.h" -namespace rtos { +using namespace rtos; + +osStatus Thread_stub::osStatus_value = osOK; osStatus Thread::wait_until(uint64_t millisec) { return 0; } +osStatus Thread::terminate() +{ + return 0; +} + +osStatus Thread::start(mbed::Callback task) +{ + return Thread_stub::osStatus_value; +} + +void Thread::constructor(osPriority priority, uint32_t stack_size, unsigned char *stack_mem, const char *name) +{ +} + +Thread::~Thread() +{ } diff --git a/UNITTESTS/stubs/Thread_stub.h b/UNITTESTS/stubs/Thread_stub.h new file mode 100644 index 00000000000..be13fb841e9 --- /dev/null +++ b/UNITTESTS/stubs/Thread_stub.h @@ -0,0 +1,26 @@ +/* + * 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 THREAD_STUB_H_ +#define THREAD_STUB_H_ + +#include "Thread.h" + +namespace Thread_stub { +extern osStatus osStatus_value; +} + +#endif /* THREAD_STUB_H_ */ diff --git a/UNITTESTS/stubs/mbed_critical_stub.c b/UNITTESTS/stubs/mbed_critical_stub.c index 2ccf87bc4a0..b13bf61bff5 100644 --- a/UNITTESTS/stubs/mbed_critical_stub.c +++ b/UNITTESTS/stubs/mbed_critical_stub.c @@ -71,6 +71,22 @@ bool core_util_atomic_cas_u32(volatile uint32_t *ptr, uint32_t *expectedCurrentV } +uint8_t core_util_atomic_exchange_u8(volatile uint8_t *ptr, uint8_t desiredValue) +{ + return 0; +} + +uint16_t core_util_atomic_exchange_u16(volatile uint16_t *ptr, uint16_t desiredValue) +{ + return 0; +} + +uint32_t core_util_atomic_exchange_u32(volatile uint32_t *ptr, uint32_t desiredValue) +{ + return 0; +} + + uint8_t core_util_atomic_incr_u8(volatile uint8_t *valuePtr, uint8_t delta) { return 0; @@ -103,11 +119,46 @@ uint32_t core_util_atomic_decr_u32(volatile uint32_t *valuePtr, uint32_t delta) } +uint64_t core_util_atomic_load_u64(const volatile uint64_t *valuePtr) +{ + return 0; +} + +void core_util_atomic_store_u64(volatile uint64_t *valuePtr, uint64_t desiredValue) +{ +} + +uint64_t core_util_atomic_exchange_u64(volatile uint64_t *valuePtr, uint64_t desiredValue) +{ + return 0; +} + +bool core_util_atomic_cas_u64(volatile uint64_t *ptr, uint64_t *expectedCurrentValue, uint64_t desiredValue) +{ + return false; +} + +uint64_t core_util_atomic_incr_u64(volatile uint64_t *valuePtr, uint64_t delta) +{ + return 0; +} + +uint64_t core_util_atomic_decr_u64(volatile uint64_t *valuePtr, uint64_t delta) +{ + return 0; +} + + bool core_util_atomic_cas_ptr(void *volatile *ptr, void **expectedCurrentValue, void *desiredValue) { return false; } +void *core_util_atomic_exchange_ptr(void *volatile *valuePtr, void *desiredValue) +{ + return NULL; +} + void *core_util_atomic_incr_ptr(void *volatile *valuePtr, ptrdiff_t delta) { return NULL; diff --git a/UNITTESTS/stubs/mbed_error.c b/UNITTESTS/stubs/mbed_error.c new file mode 100644 index 00000000000..eb0f0b68d9e --- /dev/null +++ b/UNITTESTS/stubs/mbed_error.c @@ -0,0 +1,5 @@ + +int mbed_error(int error_status, const char *error_msg, unsigned int error_value, const char *filename, int line_number) +{ + return 0; +} diff --git a/UNITTESTS/stubs/nsapi_dns_stub.cpp b/UNITTESTS/stubs/nsapi_dns_stub.cpp index 6fd0f92de9e..47f6cb9baee 100644 --- a/UNITTESTS/stubs/nsapi_dns_stub.cpp +++ b/UNITTESTS/stubs/nsapi_dns_stub.cpp @@ -23,13 +23,13 @@ NetworkStack::hostbyname_cb_t query_callback; call_in_callback_cb_t callin_callback; nsapi_error_t nsapi_dns_query(NetworkStack *stack, const char *host, - SocketAddress *addr, nsapi_version_t version) + SocketAddress *addr, const char *interface_name, nsapi_version_t version) { return nsapi_stub_return_value; } nsapi_error_t nsapi_dns_query_async(NetworkStack *stack, const char *host, - NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb, + NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb, const char *interface_name, nsapi_version_t version) { query_callback = callback; @@ -42,7 +42,7 @@ nsapi_error_t nsapi_dns_query_async_cancel(nsapi_error_t id) return nsapi_stub_return_value; } -extern "C" nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr) +extern "C" nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr, const char *interface_name) { return NSAPI_ERROR_OK; } diff --git a/UNITTESTS/stubs/watchdog_api_stub.c b/UNITTESTS/stubs/watchdog_api_stub.c new file mode 100644 index 00000000000..b0b5833cb4c --- /dev/null +++ b/UNITTESTS/stubs/watchdog_api_stub.c @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2017 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 "watchdog_api.h" + +#if DEVICE_WATCHDOG + +watchdog_status_t hal_watchdog_init(const watchdog_config_t *config) +{ + return WATCHDOG_STATUS_OK; +} + +void hal_watchdog_kick(void) +{ + +} + +watchdog_status_t hal_watchdog_stop(void) +{ + return WATCHDOG_STATUS_OK; +} + +uint32_t hal_watchdog_get_reload_value(void) +{ + return (500); +} + + +watchdog_features_t hal_watchdog_get_platform_features(void) +{ + watchdog_features_t features; + features.max_timeout = 0xFFFFFFFF; + return features; +} + +#endif // DEVICE_WATCHDOG diff --git a/UNITTESTS/target_h/cmsis_os2.h b/UNITTESTS/target_h/cmsis_os2.h index c45760f27b0..66b1d2f061c 100644 --- a/UNITTESTS/target_h/cmsis_os2.h +++ b/UNITTESTS/target_h/cmsis_os2.h @@ -24,7 +24,7 @@ typedef int32_t osStatus; #define osOK 0 - +#define osErrorNoMemory -5 //These are from cmsis_os2.h diff --git a/UNITTESTS/target_h/drivers/LowPowerTicker.h b/UNITTESTS/target_h/drivers/LowPowerTicker.h new file mode 100644 index 00000000000..87621338926 --- /dev/null +++ b/UNITTESTS/target_h/drivers/LowPowerTicker.h @@ -0,0 +1,54 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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_LOWPOWERTICKER_H +#define MBED_LOWPOWERTICKER_H + +#include "hal/ticker_api.h" +#include "Callback.h" + +namespace mbed { +/** \addtogroup drivers */ + +/** mock Low Power Ticker + * + */ +class LowPowerTicker { + +public: + LowPowerTicker() + { + } + + virtual ~LowPowerTicker() + { + } + + void attach_us(Callback func, us_timestamp_t t) + { + + } + void detach() + { + + } +}; + +} // namespace mbed + +#endif + + diff --git a/UNITTESTS/target_h/myCellularDevice.h b/UNITTESTS/target_h/myCellularDevice.h index 28dfb8a1ac3..71097c4a03b 100644 --- a/UNITTESTS/target_h/myCellularDevice.h +++ b/UNITTESTS/target_h/myCellularDevice.h @@ -27,9 +27,7 @@ using namespace events; namespace mbed { -class CellularPower; class CellularSMS; -class CellularSIM; class CellularInformation; class CellularContext; class FileHandle; @@ -42,7 +40,24 @@ class myCellularDevice : public CellularDevice { delete _context_list; delete _network; } - virtual CellularContext *create_context(FileHandle *fh = NULL, const char *apn = NULL) + + virtual nsapi_error_t set_pin(const char *sim_pin) + { + return NSAPI_ERROR_OK; + } + + virtual nsapi_error_t get_sim_state(SimState &state) + { + return NSAPI_ERROR_OK; + } + + virtual CellularContext *create_context(UARTSerial *serial, const char *const apn, PinName dcd_pin, + bool active_high, bool cp_req = false, bool nonip_req = false) + { + return NULL; + } + + virtual CellularContext *create_context(FileHandle *fh = NULL, const char *apn = NULL, bool cp_req = false, bool nonip_req = false) { EventQueue que; FileHandle_stub fh1; @@ -69,16 +84,6 @@ class myCellularDevice : public CellularDevice { return NULL; } - virtual CellularPower *open_power(FileHandle *fh = NULL) - { - return NULL; - } - - virtual CellularSIM *open_sim(FileHandle *fh = NULL) - { - return NULL; - } - virtual CellularInformation *open_information(FileHandle *fh = NULL) { return NULL; @@ -91,10 +96,6 @@ class myCellularDevice : public CellularDevice { virtual void close_sms() {} - virtual void close_power() {} - - virtual void close_sim() {} - virtual void close_information() {} virtual void set_timeout(int timeout) {} @@ -106,9 +107,48 @@ class myCellularDevice : public CellularDevice { virtual void modem_debug_on(bool on) {} - virtual nsapi_error_t init_module() + virtual nsapi_error_t init() { - return 0; + return NSAPI_ERROR_OK; + } + + virtual nsapi_error_t shutdown() + { + return NSAPI_ERROR_OK; + } + + virtual nsapi_error_t is_ready() + { + return NSAPI_ERROR_OK; + } + + virtual nsapi_error_t hard_power_on() + { + return NSAPI_ERROR_OK; + } + + virtual nsapi_error_t hard_power_off() + { + return NSAPI_ERROR_OK; + } + + virtual nsapi_error_t soft_power_on() + { + return NSAPI_ERROR_OK; + } + + virtual nsapi_error_t soft_power_off() + { + return NSAPI_ERROR_OK; + } + + virtual void set_ready_cb(Callback callback) + { + } + + nsapi_error_t set_power_save_mode(int periodic_time, int active_time) + { + return NSAPI_ERROR_OK; } virtual CellularContext *get_context_list() const diff --git a/UNITTESTS/target_h/platform/mbed_assert.h b/UNITTESTS/target_h/platform/mbed_assert.h new file mode 100644 index 00000000000..1616fb0f855 --- /dev/null +++ b/UNITTESTS/target_h/platform/mbed_assert.h @@ -0,0 +1,135 @@ + +/** \addtogroup platform */ +/** @{*/ +/** + * \defgroup platform_Assert Assert macros + * @{ + */ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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_ASSERT_H +#define MBED_ASSERT_H + +#include "mbed_preprocessor.h" +#include "mbed_toolchain.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Internal mbed assert function which is invoked when MBED_ASSERT macro fails. + * This function is active only if NDEBUG is not defined prior to including this + * assert header file. + * In case of MBED_ASSERT failing condition, error() is called with the assertation message. + * @param expr Expression to be checked. + * @param file File where assertation failed. + * @param line Failing assertation line number. + */ +MBED_NORETURN void mbed_assert_internal(const char *expr, const char *file, int line); + +#ifdef __cplusplus +} +#endif + +/** MBED_ASSERT + * Declare runtime assertions: results in runtime error if condition is false + * + * @note + * Use of MBED_ASSERT is limited to Debug and Develop builds. + * + * @code + * + * int Configure(serial_t *obj) { + * MBED_ASSERT(obj); + * } + * @endcode + */ +#if defined( NDEBUG ) && !defined (MBED_WDOG_ASSERT) +#define MBED_ASSERT(expr) ((void)0) +#else +#define MBED_ASSERT(expr) \ +do { \ + if (!(expr)) { \ + mbed_assert_internal(#expr, __FILE__, __LINE__); \ + } \ +} while (0) +#endif + + + +/** MBED_STATIC_ASSERT + * Declare compile-time assertions, results in compile-time error if condition is false + * + * The assertion acts as a declaration that can be placed at file scope, in a + * code block (except after a label), or as a member of a C++ class/struct/union. + * + * @note + * Use of MBED_STATIC_ASSERT as a member of a struct/union is limited: + * - In C++, MBED_STATIC_ASSERT is valid in class/struct/union scope. + * - In C, MBED_STATIC_ASSERT is not valid in struct/union scope, and + * MBED_STRUCT_STATIC_ASSERT is provided as an alternative that is valid + * in C and C++ class/struct/union scope. + * + * @code + * MBED_STATIC_ASSERT(MBED_LIBRARY_VERSION >= 120, + * "The mbed library must be at least version 120"); + * + * int main() { + * MBED_STATIC_ASSERT(sizeof(int) >= sizeof(char), + * "An int must be larger than a char"); + * } + * @endcode + */ +#if defined(__cplusplus) && (__cplusplus >= 201103L || __cpp_static_assert >= 200410L) +#define MBED_STATIC_ASSERT(expr, msg) static_assert(expr, msg) +#elif !defined(__cplusplus) && __STDC_VERSION__ >= 201112L +#define MBED_STATIC_ASSERT(expr, msg) _Static_assert(expr, msg) +#elif defined(__cplusplus) && defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) \ + && (__GNUC__*100 + __GNUC_MINOR__) > 403L +#define MBED_STATIC_ASSERT(expr, msg) __extension__ static_assert(expr, msg) +#elif !defined(__cplusplus) && defined(__GNUC__) && !defined(__CC_ARM) \ + && (__GNUC__*100 + __GNUC_MINOR__) > 406L +#define MBED_STATIC_ASSERT(expr, msg) __extension__ _Static_assert(expr, msg) +#elif defined(__ICCARM__) +#define MBED_STATIC_ASSERT(expr, msg) static_assert(expr, msg) +#else +#define MBED_STATIC_ASSERT(expr, msg) \ + enum {MBED_CONCAT(MBED_ASSERTION_AT_, __LINE__) = sizeof(char[(expr) ? 1 : -1])} +#endif + +/** MBED_STRUCT_STATIC_ASSERT + * Declare compile-time assertions, results in compile-time error if condition is false + * + * Unlike MBED_STATIC_ASSERT, MBED_STRUCT_STATIC_ASSERT can and must be used + * as a member of a C/C++ class/struct/union. + * + * @code + * struct thing { + * MBED_STATIC_ASSERT(2 + 2 == 4, + * "Hopefully the universe is mathematically consistent"); + * }; + * @endcode + */ +#define MBED_STRUCT_STATIC_ASSERT(expr, msg) int : (expr) ? 0 : -1 + + +#endif + +/**@}*/ + +/**@}*/ + diff --git a/UNITTESTS/target_h/platform/mbed_power_mgmt.h b/UNITTESTS/target_h/platform/mbed_power_mgmt.h index 2810b22daee..c49ef407451 100644 --- a/UNITTESTS/target_h/platform/mbed_power_mgmt.h +++ b/UNITTESTS/target_h/platform/mbed_power_mgmt.h @@ -15,3 +15,12 @@ * limitations under the License. */ +/** Resets the processor and most of the sub-system + * + * @note Does not affect the debug sub-system + */ +extern void mock_system_reset(); +MBED_NORETURN static inline void system_reset(void) +{ + mock_system_reset(); +} 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/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/handles_manager.c similarity index 83% rename from components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/handles_manager.c index 459a3d29bc6..c225c5d4430 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.c +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/handles_manager.c @@ -47,35 +47,30 @@ psa_handle_t psa_hndl_mgr_handle_create(psa_handle_manager_t *handle_mgr, void * // Get active partition id - Needed for requester identification spm_partition_t *curr_part_ptr = get_active_partition(); int32_t current_pid = ((curr_part_ptr != NULL) ? curr_part_ptr->partition_id : PSA_NSPE_IDENTIFIER); - uint32_t expected = UINT16_MAX; - - // Avoid passing UINT16_MAX. Start again from 0 if reached. - // The reason for this is that we use the 16 upper bits to store the handle's index in the handles pool (for performance reasons) - core_util_atomic_cas_u32((uint32_t *)(&(handle_mgr->handle_generator)), - &expected, - PSA_HANDLE_MGR_INVALID_HANDLE - ); // Generate a new handle identifier - uint32_t tmp_handle = core_util_atomic_incr_u32(&(handle_mgr->handle_generator), 1); - uint32_t new_handle = PSA_HANDLE_MGR_INVALID_HANDLE; - uint32_t pool_ix = 0; + uint32_t tmp_handle; + do { + tmp_handle = core_util_atomic_incr_u16(&(handle_mgr->handle_generator), 1); + } while (tmp_handle == PSA_HANDLE_MGR_INVALID_HANDLE); + psa_handle_t new_handle = PSA_NULL_HANDLE; // Look for a vacant space in handles pool for the generated handle - for (pool_ix = 0; pool_ix < handle_mgr->pool_size; pool_ix++) { + for (uint32_t pool_ix = 0; pool_ix < handle_mgr->pool_size; pool_ix++) { - expected = PSA_HANDLE_MGR_INVALID_HANDLE; + psa_handle_t expected = PSA_NULL_HANDLE; // Write the handles pool index in the upper 16 bits of the handle - new_handle = ((pool_ix << PSA_HANDLE_MGR_HANDLE_INDEX_POS) | tmp_handle); + psa_handle_t desired_handle = ((pool_ix << PSA_HANDLE_MGR_HANDLE_INDEX_POS) | tmp_handle); // Store the generated handle in the handles pool - if (core_util_atomic_cas_u32((uint32_t *)(&(handle_mgr->handles_pool[pool_ix].handle)), + if (core_util_atomic_cas_s32(&(handle_mgr->handles_pool[pool_ix].handle), &expected, - new_handle + desired_handle )) { // Handle is successfully stored in handles pool + new_handle = desired_handle; // Store the handle memory in the handles pool, "coupled" with the stored handle handle_mgr->handles_pool[pool_ix].handle_mem = handle_mem; @@ -90,7 +85,7 @@ psa_handle_t psa_hndl_mgr_handle_create(psa_handle_manager_t *handle_mgr, void * // Handle creation should only occur after a successful memory allocation // and is not expected to fail. - SPM_ASSERT(pool_ix != handle_mgr->pool_size); + SPM_ASSERT(new_handle != PSA_NULL_HANDLE); return new_handle; } @@ -123,9 +118,9 @@ void psa_hndl_mgr_handle_destroy(psa_handle_manager_t *handle_mgr, psa_handle_t SPM_PANIC("[ERROR] Request for destroy by non-owner or friend!\n"); } - handle_mgr->handles_pool[pool_ix].handle = PSA_NULL_HANDLE; handle_mgr->handles_pool[pool_ix].handle_owner = PSA_HANDLE_MGR_INVALID_FRIEND_OWNER; handle_mgr->handles_pool[pool_ix].handle_friend = PSA_HANDLE_MGR_INVALID_FRIEND_OWNER; + core_util_atomic_store_s32(&(handle_mgr->handles_pool[pool_ix].handle), PSA_NULL_HANDLE); } diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.h b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/handles_manager.h similarity index 94% rename from components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.h rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/handles_manager.h index 76193715d72..92e911190ab 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/handles_manager.h +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/handles_manager.h @@ -55,7 +55,7 @@ extern "C" { /* ------------------------------------ Definitions ---------------------------------- */ -#define PSA_HANDLE_MGR_INVALID_HANDLE ((uint32_t)PSA_NULL_HANDLE) +#define PSA_HANDLE_MGR_INVALID_HANDLE ((uint16_t)PSA_NULL_HANDLE) #define PSA_HANDLE_MGR_INVALID_FRIEND_OWNER 0 // Denoting invalid friend or invalid owner @@ -80,8 +80,10 @@ typedef struct 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. */ + // Handle generator uses only 16 bits, and wraps. + // The reason for this is that we use the 16 upper bits to store the handle's index in the handles pool (for performance reasons) + uint16_t handle_generator; /* A counter supplying handle numbers. */ + uint16_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; diff --git a/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/psa_setup.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/psa_setup.c new file mode 100644 index 00000000000..b42b30f7c32 --- /dev/null +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/psa_setup.c @@ -0,0 +1,102 @@ +/* Copyright (c) 2017-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. + */ + +/*********************************************************************************************************************** + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * 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" +#include "spm_internal.h" +#include "handles_manager.h" +#include "cmsis.h" +#include "psa_crypto_srv_partition.h" +#include "psa_platform_partition.h" +#include "psa_its_partition.h" + +extern const uint32_t crypto_srv_external_sids[4]; +extern const uint32_t platform_external_sids[1]; + +__attribute__((weak)) +spm_partition_t g_partitions[3] = { + { + .partition_id = CRYPTO_SRV_ID, + .thread_id = 0, + .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, + .flags_interrupts = 0, + .rot_services = NULL, + .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 = PLATFORM_ID, + .thread_id = 0, + .flags_rot_srv = PLATFORM_WAIT_ANY_SID_MSK, + .flags_interrupts = 0, + .rot_services = NULL, + .rot_services_count = PLATFORM_ROT_SRV_COUNT, + .extern_sids = platform_external_sids, + .extern_sids_count = PLATFORM_EXT_ROT_SRV_COUNT, + .irq_mapper = NULL, + }, + { + .partition_id = ITS_ID, + .thread_id = 0, + .flags_rot_srv = ITS_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, + .irq_mapper = NULL, + }, +}; + +/* Check all the defined memory regions for overlapping. */ + +/* A list of all the memory regions. */ +__attribute__((weak)) +const mem_region_t *mem_regions = NULL; + +__attribute__((weak)) +const uint32_t mem_region_count = 0; + +// forward declaration of partition initializers +void crypto_srv_init(spm_partition_t *partition); +void platform_init(spm_partition_t *partition); +void its_init(spm_partition_t *partition); + +__attribute__((weak)) +uint32_t init_partitions(spm_partition_t **partitions) +{ + if (NULL == partitions) { + SPM_PANIC("partitions is NULL!\n"); + } + + crypto_srv_init(&(g_partitions[0])); + platform_init(&(g_partitions[1])); + its_init(&(g_partitions[2])); + + *partitions = g_partitions; + return 3; +} + diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_client.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_client.c similarity index 98% rename from components/TARGET_PSA/spm/COMPONENT_SPE/spm_client.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_client.c index 17f4a497b59..54766b7b9a0 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_client.c +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_client.c @@ -145,7 +145,7 @@ void psa_connect_async(uint32_t sid, spm_pending_connect_msg_t *msg) } // Create the handle in the user message so we could destroy it in case of failure. - msg->rc = (psa_error_t)create_channel_handle(channel, dst_rot_service->partition->partition_id); + msg->rc = (psa_status_t)create_channel_handle(channel, dst_rot_service->partition->partition_id); // NOTE: all struct fields must be initialized as the allocated memory is not zeroed. channel->state = SPM_CHANNEL_STATE_CONNECTING; @@ -230,11 +230,11 @@ void psa_call_async(psa_handle_t handle, spm_pending_call_msg_t *msg) spm_rot_service_queue_enqueue(channel->dst_rot_service, channel); } -psa_error_t psa_call( +psa_status_t psa_call( psa_handle_t handle, - const psa_invec_t *in_vec, + const psa_invec *in_vec, size_t in_len, - const psa_outvec_t *out_vec, + const psa_outvec *out_vec, size_t out_len ) { @@ -272,7 +272,7 @@ psa_error_t psa_call( PSA_UNUSED(os_status); - return (psa_error_t)msg.rc; + return (psa_status_t)msg.rc; } void psa_close_async(psa_handle_t handle, spm_pending_close_msg_t *msg) diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_common.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_common.c similarity index 91% rename from components/TARGET_PSA/spm/COMPONENT_SPE/spm_common.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_common.c index 2e8fa00c9e7..31b97ec6a33 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_common.c +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_common.c @@ -16,12 +16,11 @@ */ #include "cmsis_os2.h" +#include "mbed_critical.h" #include "psa_defs.h" #include "spm_internal.h" #include "spm_panic.h" -bool core_util_atomic_cas_u8(volatile uint8_t *ptr, uint8_t *expectedCurrentValue, uint8_t desiredValue); - inline void validate_iovec( const void *in_vec, const uint32_t in_len, @@ -42,18 +41,19 @@ inline void validate_iovec( inline void channel_state_switch(uint8_t *current_state, uint8_t expected_state, uint8_t new_state) { - uint8_t backup_expected = expected_state; - if (!core_util_atomic_cas_u8(current_state, &expected_state, new_state)) { + uint8_t actual_state = expected_state; + if (!core_util_atomic_cas_u8(current_state, &actual_state, new_state)) { SPM_PANIC("channel in incorrect processing state: %d while %d is expected!\n", - expected_state, backup_expected); + actual_state, expected_state); } } -inline void channel_state_assert(uint8_t *current_state, uint8_t expected_state) +inline void channel_state_assert(const uint8_t *current_state, uint8_t expected_state) { - if (*current_state != expected_state) { + uint8_t actual_state = core_util_atomic_load_u8(current_state); + if (actual_state != expected_state) { SPM_PANIC("channel in incorrect processing state: %d while %d is expected!\n", - *current_state, expected_state); + actual_state, expected_state); } } diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_init.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_init.c similarity index 100% rename from components/TARGET_PSA/spm/COMPONENT_SPE/spm_init.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_init.c diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_internal.h b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_internal.h similarity index 97% rename from components/TARGET_PSA/spm/COMPONENT_SPE/spm_internal.h rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_internal.h index 0b3e1246b8e..6b218a50470 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_internal.h +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_internal.h @@ -72,8 +72,8 @@ typedef struct mem_region { } mem_region_t; typedef union spm_iovec { - psa_invec_t in; - psa_outvec_t out; + psa_invec in; + psa_outvec out; } spm_iovec_t; /* @@ -215,9 +215,9 @@ void psa_close_async(psa_handle_t handle, spm_pending_close_msg_t *msg); /* * Validates IOvecs. * - * @param[in] in_vec - psa_invec_t array + * @param[in] in_vec - psa_invec array * @param[in] in_len - number of elements in in_vec - * @param[in] out_vec - psa_outvec_t array + * @param[in] out_vec - psa_outvec array * @param[in] out_len - number of elements in out_vec */ void validate_iovec( @@ -242,7 +242,7 @@ void channel_state_switch(uint8_t *current_state, uint8_t expected_state, uint8_ * @param[in] current_state - current state * @param[in] expected_state - expected state */ -void channel_state_assert(uint8_t *current_state, uint8_t expected_state); +void channel_state_assert(const uint8_t *current_state, uint8_t expected_state); #ifdef __cplusplus } diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_main.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_main.c similarity index 100% rename from components/TARGET_PSA/spm/COMPONENT_SPE/spm_main.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_main.c diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_panic.h b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_panic.h similarity index 100% rename from components/TARGET_PSA/spm/COMPONENT_SPE/spm_panic.h rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_panic.h diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.c similarity index 98% rename from components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.c index b2183f66fcf..46be590e47e 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.c +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.c @@ -94,9 +94,9 @@ static void copy_message_to_spm(spm_ipc_channel_t *channel, psa_msg_t *user_msg) spm_pending_call_msg_t *call_msg_data = (spm_pending_call_msg_t *)channel->msg_ptr; // Copy pointers and sizes to secure memory to prevent TOCTOU - const psa_invec_t *temp_invec = call_msg_data->in_vec; + const psa_invec *temp_invec = call_msg_data->in_vec; const uint32_t temp_invec_size = call_msg_data->in_vec_size; - const psa_outvec_t *temp_outvec = call_msg_data->out_vec; + const psa_outvec *temp_outvec = call_msg_data->out_vec; const uint32_t temp_outvec_size = call_msg_data->out_vec_size; validate_iovec(temp_invec, temp_invec_size, temp_outvec, temp_outvec_size); @@ -320,7 +320,7 @@ static size_t read_or_skip(psa_handle_t msg_handle, uint32_t invec_idx, void *bu return 0; } - psa_invec_t *active_iovec = &active_msg->iovecs[invec_idx].in; + psa_invec *active_iovec = &active_msg->iovecs[invec_idx].in; if (num_bytes > active_iovec->len) { num_bytes = active_iovec->len; @@ -376,7 +376,7 @@ void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx, const void *buffer, SPM_PANIC("Invalid outvec_idx\n"); } - psa_outvec_t *active_iovec = &active_msg->iovecs[outvec_idx].out; + psa_outvec *active_iovec = &active_msg->iovecs[outvec_idx].out; if (num_bytes > active_iovec->len) { SPM_PANIC("Invalid write operation (Requested %d, Avialable %d)\n", num_bytes, active_iovec->len); } @@ -388,7 +388,7 @@ void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx, const void *buffer, return; } -void psa_reply(psa_handle_t msg_handle, psa_error_t status) +void psa_reply(psa_handle_t msg_handle, psa_status_t status) { spm_active_msg_t *active_msg = get_msg_from_handle(msg_handle); spm_ipc_channel_t *active_channel = active_msg->channel; @@ -411,7 +411,7 @@ void psa_reply(psa_handle_t msg_handle, psa_error_t status) bool nspe_call = (active_channel->src_partition == NULL); switch (active_channel->msg_type) { case PSA_IPC_CONNECT: { - if ((status != PSA_CONNECTION_ACCEPTED) && (status != PSA_CONNECTION_REFUSED)) { + if ((status != PSA_SUCCESS) && (status != PSA_CONNECTION_REFUSED)) { SPM_PANIC("status (0X%08x) is not allowed for PSA_IPC_CONNECT", status); } diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.h b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.h similarity index 98% rename from components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.h rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.h index c99efd7a0fc..abd3990ad20 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/spm_server.h +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.h @@ -140,7 +140,7 @@ void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx, const void *buffer, * @param[in] msg_handle Handle for the client's message. * @param[in] status Message result value to be reported to the client. */ -void psa_reply(psa_handle_t msg_handle, psa_error_t status); +void psa_reply(psa_handle_t msg_handle, psa_status_t status); /** * Send a doorbell signal to a specific partition that is listening for that signal type. diff --git a/components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_client_proxy.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_client_proxy.c similarity index 95% rename from components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_client_proxy.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_client_proxy.c index e5820a02ebd..fcfc1a6474b 100644 --- a/components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_client_proxy.c +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_client_proxy.c @@ -121,12 +121,12 @@ psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version) return (psa_handle_t)(msg.rc); } -psa_error_t psa_call(psa_handle_t handle, - const psa_invec_t *in_vec, - size_t in_len, - const psa_outvec_t *out_vec, - size_t out_len - ) +psa_status_t psa_call(psa_handle_t handle, + const psa_invec *in_vec, + size_t in_len, + const psa_outvec *out_vec, + size_t out_len + ) { // - Immediate errors are checked here. // - Other errors are checked on the SPM core code diff --git a/components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_mailbox_nspe.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_mailbox_nspe.c similarity index 100% rename from components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_mailbox_nspe.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/COMPONENT_NSPE/spm_mailbox_nspe.c diff --git a/components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/COMPONENT_SPE/spm_mailbox_spe.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/COMPONENT_SPE/spm_mailbox_spe.c similarity index 100% rename from components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/COMPONENT_SPE/spm_mailbox_spe.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/COMPONENT_SPE/spm_mailbox_spe.c diff --git a/components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/ipc_defs.h b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/ipc_defs.h similarity index 100% rename from components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/ipc_defs.h rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/ipc_defs.h diff --git a/components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/ipc_queue.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/ipc_queue.c similarity index 100% rename from components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/ipc_queue.c rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/ipc_queue.c diff --git a/components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/ipc_queue.h b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/ipc_queue.h similarity index 100% rename from components/TARGET_PSA/spm/COMPONENT_SPM_MAILBOX/ipc_queue.h rename to components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPM_MAILBOX/ipc_queue.h diff --git a/components/TARGET_PSA/spm/mbed_lib.json b/components/TARGET_PSA/TARGET_MBED_SPM/mbed_lib.json similarity index 100% rename from components/TARGET_PSA/spm/mbed_lib.json rename to components/TARGET_PSA/TARGET_MBED_SPM/mbed_lib.json diff --git a/components/TARGET_PSA/spm/psa_defs.h b/components/TARGET_PSA/TARGET_MBED_SPM/psa_defs.h similarity index 86% rename from components/TARGET_PSA/spm/psa_defs.h rename to components/TARGET_PSA/TARGET_MBED_SPM/psa_defs.h index e282570f718..cfe3da5b400 100644 --- a/components/TARGET_PSA/spm/psa_defs.h +++ b/components/TARGET_PSA/TARGET_MBED_SPM/psa_defs.h @@ -26,6 +26,7 @@ #include #include +#include "psa/error.h" /* --------------------------------- extern "C" wrapper ------------------------------ */ @@ -50,7 +51,7 @@ extern "C" { #define PSA_NULL_HANDLE ((psa_handle_t)0) /**< Denotes an invalid handle.*/ -#define PSA_MAX_IOVEC (4UL) /**< Maximum number of psa_invec_t and psa_outvec_t structures allowed for psa_call().*/ +#define PSA_MAX_IOVEC (4UL) /**< Maximum number of psa_invec and psa_outvec structures allowed for psa_call().*/ #define PSA_POLL (0x00000000UL) /**< Returns immediately even if none of the requested signals is asserted.*/ #define PSA_BLOCK (0x80000000UL) /**< Block the caller until one of the requested signals is asserted.*/ @@ -60,8 +61,6 @@ extern "C" { #define PSA_DOORBELL (0x00000008UL) /**< Mask for PSA_DOORBELL signal.*/ -#define PSA_SUCCESS (0L) /**< A general result code for calls to psa_call() indicating success.*/ -#define PSA_CONNECTION_ACCEPTED (0L) /**< The result code for calls to psa_connect() indicating the acceptance of a new connection request.*/ #define PSA_IPC_CONNECT (1) /**< The IPC message type that indicates a new connection.*/ #define PSA_IPC_CALL (2) /**< The IPC message type that indicates a client request.*/ #define PSA_IPC_DISCONNECT (3) /**< The IPC message type that indicates the end of a connection.*/ @@ -69,16 +68,15 @@ extern "C" { /* Error codes */ #define PSA_DROP_CONNECTION (INT32_MIN) /**< The result code in a call to psa_reply() to indicate a nonrecoverable error in the client.*/ -#define PSA_CONNECTION_REFUSED (INT32_MIN + 1) /**< The return value from psa_connect() if the RoT Service or SPM was unable to establish a connection.*/ - +#define PSA_CONNECTION_REFUSED (INT32_MIN + 1) /**< The return value from psa_connect() if the RoT Service or SPM was unable to establish a connection.*/ +#define PSA_CONNECTION_BUSY (INT32_MIN + 2) /**< The return value from psa_connect() if the RoT Service rejects the connection for a transient reason.*/ #define PSA_UNUSED(var) ((void)(var)) /* -------------------------------------- Typedefs ----------------------------------- */ typedef uint32_t psa_signal_t; -typedef int32_t psa_error_t; typedef int32_t psa_handle_t; -typedef psa_error_t error_t; +typedef psa_status_t error_t; /* -------------------------------------- Structs ------------------------------------ */ @@ -99,7 +97,7 @@ typedef struct psa_msg { typedef struct psa_invec { const void *base; /**< Starting address of the buffer.*/ size_t len; /**< Length in bytes of the buffer.*/ -} psa_invec_t; +} psa_invec; /** * Structure which describes a scatter-gather output buffer. @@ -107,7 +105,7 @@ typedef struct psa_invec { typedef struct psa_outvec { void *base; /**< Starting address of the buffer.*/ size_t len; /**< Length in bytes of the buffer.*/ -} psa_outvec_t; +} psa_outvec; #ifdef __cplusplus } diff --git a/components/TARGET_PSA/spm/spm_client.h b/components/TARGET_PSA/TARGET_MBED_SPM/spm_client.h similarity index 85% rename from components/TARGET_PSA/spm/spm_client.h rename to components/TARGET_PSA/TARGET_MBED_SPM/spm_client.h index 2213a698428..5cb0f3011d7 100644 --- a/components/TARGET_PSA/spm/spm_client.h +++ b/components/TARGET_PSA/TARGET_MBED_SPM/spm_client.h @@ -73,23 +73,23 @@ psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version); /** * Call a connected Root of Trust Service.@n - * The caller must provide an array of ::psa_invec_t structures as the input payload. + * The caller must provide an array of ::psa_invec structures as the input payload. * * @param[in] handle Handle for the connection. - * @param[in] in_vec Array of ::psa_invec_t structures. - * @param[in] in_len Number of ::psa_invec_t structures in in_vec. (At most ::PSA_MAX_IOVEC - out_len) - * @param[out] out_vec Array of ::psa_outvec_t structures for optional Root of Trust Service response. - * @param[in] out_len Number of ::psa_outvec_t structures in out_vec. (At most ::PSA_MAX_IOVEC - in_len) + * @param[in] in_vec Array of ::psa_invec structures. + * @param[in] in_len Number of ::psa_invec structures in in_vec. (At most ::PSA_MAX_IOVEC - out_len) + * @param[out] out_vec Array of ::psa_outvec structures for optional Root of Trust Service response. + * @param[in] out_len Number of ::psa_outvec structures in out_vec. (At most ::PSA_MAX_IOVEC - in_len) * @return 0 for success or@n * @a positive numbers for application-specific return code. * @a negative numbers for application-specific error code. * @a PSA_DROP_CONNECTION if the connection has been dropped by the RoT Service. */ -psa_error_t psa_call( +psa_status_t psa_call( psa_handle_t handle, - const psa_invec_t *in_vec, + const psa_invec *in_vec, size_t in_len, - const psa_outvec_t *out_vec, + const psa_outvec *out_vec, size_t out_len ); diff --git a/components/TARGET_PSA/spm/spm_init.h b/components/TARGET_PSA/TARGET_MBED_SPM/spm_init.h similarity index 100% rename from components/TARGET_PSA/spm/spm_init.h rename to components/TARGET_PSA/TARGET_MBED_SPM/spm_init.h diff --git a/components/TARGET_PSA/spm/spm_messages.h b/components/TARGET_PSA/TARGET_MBED_SPM/spm_messages.h similarity index 89% rename from components/TARGET_PSA/spm/spm_messages.h rename to components/TARGET_PSA/TARGET_MBED_SPM/spm_messages.h index 96b5743032f..66c29a38e64 100644 --- a/components/TARGET_PSA/spm/spm_messages.h +++ b/components/TARGET_PSA/TARGET_MBED_SPM/spm_messages.h @@ -29,11 +29,11 @@ * Structure containing data sent from NSPE for ROT_SRV call. */ typedef __PACKED_STRUCT spm_pending_call_msg { - const psa_invec_t *in_vec; /* Invecs sent.*/ + const psa_invec *in_vec; /* Invecs sent.*/ uint32_t in_vec_size; /* Number of Invecs sent.*/ - const psa_outvec_t *out_vec; /* Outvecs for response.*/ + const psa_outvec *out_vec; /* Outvecs for response.*/ uint32_t out_vec_size; /* Number of Outvecs for response.*/ - psa_error_t rc; /* Return code to be filled by the Root of Trust Service.*/ + psa_status_t rc; /* Return code to be filled by the Root of Trust Service.*/ osSemaphoreId_t completion_sem_id; /* Semaphore to be released at the end of execution */ } __ALIGNED(4) spm_pending_call_msg_t; @@ -42,7 +42,7 @@ typedef __PACKED_STRUCT spm_pending_call_msg { */ typedef __PACKED_STRUCT spm_pending_connect_msg { uint32_t min_version; /* Minor version of the Root of Trust Service interface.*/ - psa_error_t rc; /* Return code to be filled by the Root of Trust Service.*/ + psa_status_t rc; /* Return code to be filled by the Root of Trust Service.*/ osSemaphoreId_t completion_sem_id; /* Semaphore to be released at the end of execution */ } __ALIGNED(4) spm_pending_connect_msg_t; diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_ns_lock_rtx.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_ns_lock_rtx.c new file mode 100644 index 00000000000..76b284effff --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_ns_lock_rtx.c @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include + +#include "cmsis.h" +#include "rtx_os.h" +#include "cmsis_os2.h" + +#include "tfm_api.h" +#include "tfm_ns_lock.h" + +/** + * \brief struct ns_lock_state type + */ +struct ns_lock_state +{ + bool init; + osMutexId_t id; +}; + +/** + * \brief ns_lock status + */ +static struct ns_lock_state ns_lock = {.init=false, .id=NULL}; + +/** + * \brief Mutex properties, NS lock + */ + +static osRtxMutex_t ns_lock_cb = { 0 }; + +static const osMutexAttr_t ns_lock_attrib = { + .name = "ns_lock", + .attr_bits = osMutexPrioInherit, + .cb_mem = &ns_lock_cb, + .cb_size = sizeof(ns_lock_cb) +}; + +/** + * \brief NS world, NS lock based dispatcher + */ +uint32_t tfm_ns_lock_dispatch(veneer_fn fn, + uint32_t arg0, uint32_t arg1, + uint32_t arg2, uint32_t arg3) +{ + uint32_t result; + + /* Check the NS lock has been initialized */ + if (ns_lock.init == false) { + return TFM_ERROR_GENERIC; + } + + /* TFM request protected by NS lock */ + osMutexAcquire(ns_lock.id,osWaitForever); + + result = fn(arg0, arg1, arg2, arg3); + + osMutexRelease(ns_lock.id); + + return result; +} + +/** + * \brief NS world, Init NS lock + */ +uint32_t tfm_ns_lock_init() +{ + if (ns_lock.init == false) { + ns_lock.id = osMutexNew(&ns_lock_attrib); + ns_lock.init = true; + return TFM_SUCCESS; + } + else { + return TFM_ERROR_GENERIC; + } +} + +bool tfm_ns_lock_get_init_state() +{ + return ns_lock.init; +} + diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_psa_ns_api.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_psa_ns_api.c new file mode 100644 index 00000000000..159eef90888 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_psa_ns_api.c @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include "interface/include/psa_client.h" +#include "tfm_ns_lock.h" +#include "tfm_api.h" + +/**** API functions ****/ + +uint32_t psa_framework_version(void) +{ + return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_framework_version_veneer, + 0, + 0, + 0, + 0); +} + +uint32_t psa_version(uint32_t sid) +{ + return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_version_veneer, + sid, + 0, + 0, + 0); +} + +psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version) +{ + return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_connect_veneer, + sid, + minor_version, + 0, + 0); +} + +psa_status_t psa_call(psa_handle_t handle, + const psa_invec *in_vec, + size_t in_len, + psa_outvec *out_vec, + size_t out_len) +{ + /* FixMe: sanity check can be added to offload some NS thread checks from + * TFM secure API + */ + + /* Due to v8M restrictions, TF-M NS API needs to add another layer of + * serialization in order for NS to pass arguments to S + */ + psa_invec in_vecs, out_vecs; + + in_vecs.base = in_vec; + in_vecs.len = in_len; + out_vecs.base = out_vec; + out_vecs.len = out_len; + return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_call_veneer, + (uint32_t)handle, + (uint32_t)&in_vecs, + (uint32_t)&out_vecs, + 0); +} + +void psa_close(psa_handle_t handle) +{ + tfm_ns_lock_dispatch((veneer_fn)tfm_psa_close_veneer, + (uint32_t)handle, + 0, + 0, + 0); +} + diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_partition_defs.inc b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_partition_defs.inc new file mode 100644 index 00000000000..34af1e427d9 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_partition_defs.inc @@ -0,0 +1,37 @@ +/* Copyright (c) 2017-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. + */ + +/*********** WARNING: This is an auto-generated file. Do not edit! ***********/ + +#ifndef __TFM_PARTITION_DEFS_INC__ +#define __TFM_PARTITION_DEFS_INC__ + +#ifdef TFM_PSA_API +#define ITS_ID (TFM_SP_BASE + 0) +#endif + +#ifdef TFM_PSA_API +#define PLATFORM_ID (TFM_SP_BASE + 1) +#endif + +#ifdef TFM_PSA_API +#define CRYPTO_SRV_ID (TFM_SP_BASE + 2) +#endif + +#define TFM_MAX_USER_PARTITIONS (3) + +#endif /* __TFM_PARTITION_DEFS_INC__ */ \ No newline at end of file diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_partition_list.inc b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_partition_list.inc new file mode 100644 index 00000000000..f07bf053f4d --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_partition_list.inc @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/*********** WARNING: This is an auto-generated file. Do not edit! ***********/ + +#ifndef __TFM_PARTITION_LIST_INC__ +#define __TFM_PARTITION_LIST_INC__ + +#ifdef TFM_PSA_API +/******** ITS ********/ +PARTITION_DECLARE(ITS, 0 + | SPM_PART_FLAG_IPC + , "APPLICATION-ROT", 10, NORMAL, 2048); +PARTITION_ADD_INIT_FUNC(ITS, its_entry); +#endif /* TFM_PSA_API */ + +#ifdef TFM_PSA_API +/******** PLATFORM ********/ +PARTITION_DECLARE(PLATFORM, 0 + | SPM_PART_FLAG_IPC + , "APPLICATION-ROT", 8, NORMAL, 1024); +PARTITION_ADD_INIT_FUNC(PLATFORM, platform_partition_entry); +#endif /* TFM_PSA_API */ + +#ifdef TFM_PSA_API +/******** CRYPTO_SRV ********/ +PARTITION_DECLARE(CRYPTO_SRV, 0 + | SPM_PART_FLAG_IPC + , "APPLICATION-ROT", 35, NORMAL, 16384); +PARTITION_ADD_INIT_FUNC(CRYPTO_SRV, crypto_main); +#endif /* TFM_PSA_API */ + +#endif /* __TFM_PARTITION_LIST_INC__ */ \ No newline at end of file diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_service_list.inc b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_service_list.inc new file mode 100644 index 00000000000..75db66b70dc --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_service_list.inc @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/*********** WARNING: This is an auto-generated file. Do not edit! ***********/ + +#ifndef __TFM_SERVICE_LIST_INC__ +#define __TFM_SERVICE_LIST_INC__ + +#ifdef TFM_PSA_API +/******** ITS ********/ +{"PSA_ITS_GET", ITS_ID, PSA_ITS_GET_MSK, 0x00011A00, true, 1, TFM_VERSION_POLICY_RELAXED}, +{"PSA_ITS_SET", ITS_ID, PSA_ITS_SET_MSK, 0x00011A01, true, 1, TFM_VERSION_POLICY_RELAXED}, +{"PSA_ITS_INFO", ITS_ID, PSA_ITS_INFO_MSK, 0x00011A02, true, 1, TFM_VERSION_POLICY_RELAXED}, +{"PSA_ITS_REMOVE", ITS_ID, PSA_ITS_REMOVE_MSK, 0x00011A03, true, 1, TFM_VERSION_POLICY_RELAXED}, +{"PSA_ITS_RESET", ITS_ID, PSA_ITS_RESET_MSK, 0x00011A04, false, 1, TFM_VERSION_POLICY_RELAXED}, +#endif /* TFM_PSA_API */ + +#ifdef TFM_PSA_API +/******** PLATFORM ********/ +{"PSA_PLATFORM_LC_GET", PLATFORM_ID, PSA_PLATFORM_LC_GET_MSK, 0x00011000, true, 1, TFM_VERSION_POLICY_RELAXED}, +{"PSA_PLATFORM_LC_SET", PLATFORM_ID, PSA_PLATFORM_LC_SET_MSK, 0x00011001, true, 1, TFM_VERSION_POLICY_RELAXED}, +{"PSA_PLATFORM_SYSTEM_RESET", PLATFORM_ID, PSA_PLATFORM_SYSTEM_RESET_MSK, 0x00011002, true, 1, TFM_VERSION_POLICY_RELAXED}, +#endif /* TFM_PSA_API */ + +#ifdef TFM_PSA_API +/******** CRYPTO_SRV ********/ +{"PSA_CRYPTO_INIT_ID", CRYPTO_SRV_ID, PSA_CRYPTO_INIT, 0x00000F00, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_MAC_ID", CRYPTO_SRV_ID, PSA_MAC, 0x00000F01, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_HASH_ID", CRYPTO_SRV_ID, PSA_HASH, 0x00000F02, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_ASYMMETRIC_ID", CRYPTO_SRV_ID, PSA_ASYMMETRIC, 0x00000F03, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_SYMMETRIC_ID", CRYPTO_SRV_ID, PSA_SYMMETRIC, 0x00000F04, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_AEAD_ID", CRYPTO_SRV_ID, PSA_AEAD, 0x00000F05, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_KEY_MNG_ID", CRYPTO_SRV_ID, PSA_KEY_MNG, 0x00000F06, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_RNG_ID", CRYPTO_SRV_ID, PSA_RNG, 0x00000F07, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_CRYPTO_FREE_ID", CRYPTO_SRV_ID, PSA_CRYPTO_FREE, 0x00000F08, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_GENERATOR_ID", CRYPTO_SRV_ID, PSA_GENERATOR, 0x00000F09, true, 1, TFM_VERSION_POLICY_STRICT}, +{"PSA_ENTROPY_ID", CRYPTO_SRV_ID, PSA_ENTROPY_INJECT, 0x00000F0A, true, 1, TFM_VERSION_POLICY_STRICT}, +#endif /* TFM_PSA_API */ + +#endif /* __TFM_SERVICE_LIST_INC__ */ \ No newline at end of file diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_spm_signal_defs.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_spm_signal_defs.h new file mode 100644 index 00000000000..837669f4193 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/autogen/tfm_spm_signal_defs.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_SPM_SIGNAL_DEFS_H__ +#define __TFM_SPM_SIGNAL_DEFS_H__ + +#define PSA_ITS_GET_MSK_POS (4UL) +#define PSA_ITS_GET_MSK (1UL << PSA_ITS_GET_MSK_POS) +#define PSA_ITS_SET_MSK_POS (5UL) +#define PSA_ITS_SET_MSK (1UL << PSA_ITS_SET_MSK_POS) +#define PSA_ITS_INFO_MSK_POS (6UL) +#define PSA_ITS_INFO_MSK (1UL << PSA_ITS_INFO_MSK_POS) +#define PSA_ITS_REMOVE_MSK_POS (7UL) +#define PSA_ITS_REMOVE_MSK (1UL << PSA_ITS_REMOVE_MSK_POS) +#define PSA_ITS_RESET_MSK_POS (8UL) +#define PSA_ITS_RESET_MSK (1UL << PSA_ITS_RESET_MSK_POS) + +#define PSA_PLATFORM_LC_GET_MSK_POS (4UL) +#define PSA_PLATFORM_LC_GET_MSK (1UL << PSA_PLATFORM_LC_GET_MSK_POS) +#define PSA_PLATFORM_LC_SET_MSK_POS (5UL) +#define PSA_PLATFORM_LC_SET_MSK (1UL << PSA_PLATFORM_LC_SET_MSK_POS) +#define PSA_PLATFORM_SYSTEM_RESET_MSK_POS (6UL) +#define PSA_PLATFORM_SYSTEM_RESET_MSK (1UL << PSA_PLATFORM_SYSTEM_RESET_MSK_POS) + +#define PSA_CRYPTO_INIT_POS (4UL) +#define PSA_CRYPTO_INIT (1UL << PSA_CRYPTO_INIT_POS) +#define PSA_MAC_POS (5UL) +#define PSA_MAC (1UL << PSA_MAC_POS) +#define PSA_HASH_POS (6UL) +#define PSA_HASH (1UL << PSA_HASH_POS) +#define PSA_ASYMMETRIC_POS (7UL) +#define PSA_ASYMMETRIC (1UL << PSA_ASYMMETRIC_POS) +#define PSA_SYMMETRIC_POS (8UL) +#define PSA_SYMMETRIC (1UL << PSA_SYMMETRIC_POS) +#define PSA_AEAD_POS (9UL) +#define PSA_AEAD (1UL << PSA_AEAD_POS) +#define PSA_KEY_MNG_POS (10UL) +#define PSA_KEY_MNG (1UL << PSA_KEY_MNG_POS) +#define PSA_RNG_POS (11UL) +#define PSA_RNG (1UL << PSA_RNG_POS) +#define PSA_CRYPTO_FREE_POS (12UL) +#define PSA_CRYPTO_FREE (1UL << PSA_CRYPTO_FREE_POS) +#define PSA_GENERATOR_POS (13UL) +#define PSA_GENERATOR (1UL << PSA_GENERATOR_POS) +#define PSA_ENTROPY_INJECT_POS (14UL) +#define PSA_ENTROPY_INJECT (1UL << PSA_ENTROPY_INJECT_POS) + + +#endif \ No newline at end of file diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/bl2/include/boot_record.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/bl2/include/boot_record.h new file mode 100644 index 00000000000..ab71a486290 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/bl2/include/boot_record.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __BOOT_RECORD_H__ +#define __BOOT_RECORD_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * \enum shared_data_err_t + * + * \brief Return values for adding data entry to shared memory area + */ +enum shared_memory_err_t { + SHARED_MEMORY_OK = 0, + SHARED_MEMORY_OVERFLOW = 1, + SHARED_MEMORY_OVERWRITE = 2, + + /* This is used to force the maximum size */ + TLV_TYPE_MAX = INT_MAX +}; + +/*! + * \brief Add a data item to the shared data area between bootloader and + * runtime SW + * + * \param[in] major_type TLV major type, identify consumer + * \param[in] minor_type TLV minor type, identify TLV type + * \param[in] size length of added data + * \param[in] data pointer to data + * + * \return Returns error code as specified in \ref shared_memory_err_t + */ +enum shared_memory_err_t +boot_add_data_to_shared_area(uint8_t major_type, + uint8_t minor_type, + size_t size, + const uint8_t *data); + +#ifdef __cplusplus +} +#endif + +#endif /* __BOOT_RECORD_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/bl2/include/tfm_boot_status.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/bl2/include/tfm_boot_status.h new file mode 100644 index 00000000000..30a7b1c2ccc --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/bl2/include/tfm_boot_status.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_BOOT_STATUS_H__ +#define __TFM_BOOT_STATUS_H__ + +#include +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Major numbers to identify the consumer of shared data in runtime SW */ +#define TLV_MAJOR_CORE 0x0 +#define TLV_MAJOR_IAS 0x1 + +/* PSA Root of Trust */ +#define TLV_MINOR_IAS_PRoT_SHA256 0x00 +#define TLV_MINOR_IAS_PRoT_SW_VERSION 0x01 +#define TLV_MINOR_IAS_PRoT_EPOCH 0x02 + +/* Application Root of Trust */ +#define TLV_MINOR_IAS_ARoT_SHA256 0x03 +#define TLV_MINOR_IAS_ARoT_SW_VERSION 0x04 +#define TLV_MINOR_IAS_ARoT_EPOCH 0x05 + +/* Non-secure processing environment: single non-secure image */ +#define TLV_MINOR_IAS_NSPE_SHA256 0x06 +#define TLV_MINOR_IAS_NSPE_SW_VERSION 0x07 +#define TLV_MINOR_IAS_NSPE_EPOCH 0x08 + +/* ARoT + PRoT: single secure image */ +#define TLV_MINOR_IAS_S_SHA256 0x09 +#define TLV_MINOR_IAS_S_SW_VERSION 0x0a +#define TLV_MINOR_IAS_S_EPOCH 0x0b + +/* S + NS: combined secure and non-secure image */ +#define TLV_MINOR_IAS_S_NS_SHA256 0x0c +#define TLV_MINOR_IAS_S_NS_SW_VERSION 0x0d +#define TLV_MINOR_IAS_S_NS_EPOCH 0x0e + +#define SHARED_DATA_TLV_INFO_MAGIC 0x2016 + +/** + * Shared data TLV header. All fields in little endian. + * + * --------------------------- + * | tlv_magic | tlv_tot_len | + * --------------------------- + */ +struct shared_data_tlv_header { + uint16_t tlv_magic; + uint16_t tlv_tot_len; /* size of whole TLV area (including this header) */ +}; + +#define SHARED_DATA_HEADER_SIZE sizeof(struct shared_data_tlv_header) + +/** + * Shared data TLV entry header format. All fields in little endian. + * + * --------------------------------------------- + * | tlv_major_type | tlv_minor_type | tlv_len | + * --------------------------------------------- + * | Raw data | + * --------------------------------------------- + */ +struct shared_data_tlv_entry { + uint8_t tlv_major_type; + uint8_t tlv_minor_type; + uint16_t tlv_len; /* size of single TLV entry (including this header). */ +}; + +#define SHARED_DATA_ENTRY_HEADER_SIZE sizeof(struct shared_data_tlv_entry) +#define SHARED_DATA_ENTRY_SIZE(size) (size + SHARED_DATA_ENTRY_HEADER_SIZE) + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_BOOT_STATUS_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/mbed_lib.json b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/mbed_lib.json new file mode 100644 index 00000000000..771fb9411a6 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/mbed_lib.json @@ -0,0 +1,4 @@ +{ + "name": "tfm-s", + "macros": ["MBED_FAULT_HANDLER_DISABLED", "BYPASS_NVSTORE_CHECK=1"] +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_Common.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_Common.h new file mode 100644 index 00000000000..cdf44b3325c --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_Common.h @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2013-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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * $Date: 2. Jan 2014 + * $Revision: V2.00 + * + * Project: Common Driver definitions + */ + +/* History: + * Version 2.00 + * Changed prefix ARM_DRV -> ARM_DRIVER + * Added General return codes definitions + * Version 1.10 + * Namespace prefix ARM_ added + * Version 1.00 + * Initial release + */ + +#ifndef __DRIVER_COMMON_H +#define __DRIVER_COMMON_H + +#include +#include +#include + +#define ARM_DRIVER_VERSION_MAJOR_MINOR(major,minor) (((major) << 8) | (minor)) + +/** +\brief Driver Version +*/ +typedef struct _ARM_DRIVER_VERSION { + uint16_t api; ///< API version + uint16_t drv; ///< Driver version +} ARM_DRIVER_VERSION; + +/* General return codes */ +#define ARM_DRIVER_OK 0 ///< Operation succeeded +#define ARM_DRIVER_ERROR -1 ///< Unspecified error +#define ARM_DRIVER_ERROR_BUSY -2 ///< Driver is busy +#define ARM_DRIVER_ERROR_TIMEOUT -3 ///< Timeout occurred +#define ARM_DRIVER_ERROR_UNSUPPORTED -4 ///< Operation not supported +#define ARM_DRIVER_ERROR_PARAMETER -5 ///< Parameter error +#define ARM_DRIVER_ERROR_SPECIFIC -6 ///< Start of driver specific errors + +/** +\brief General power states +*/ +typedef enum _ARM_POWER_STATE { + ARM_POWER_OFF, ///< Power off: no operation possible + ARM_POWER_LOW, ///< Low Power mode: retain state, detect and signal wake-up events + ARM_POWER_FULL ///< Power on: full operation at maximum performance +} ARM_POWER_STATE; + +#endif /* __DRIVER_COMMON_H */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_MPC.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_MPC.h new file mode 100644 index 00000000000..9ed84ba7457 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_MPC.h @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2016-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 __DRIVER_MPC_H +#define __DRIVER_MPC_H + +#include "Driver_Common.h" + +/* API version */ +#define ARM_MPC_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(1,0) + +/* Error code returned by the driver functions */ +#define ARM_MPC_ERR_NOT_INIT (ARM_DRIVER_ERROR_SPECIFIC - 1) ///< MPC not initialized */ +#define ARM_MPC_ERR_NOT_IN_RANGE (ARM_DRIVER_ERROR_SPECIFIC - 2) ///< Address does not belong to a range controlled by the MPC */ +#define ARM_MPC_ERR_NOT_ALIGNED (ARM_DRIVER_ERROR_SPECIFIC - 3) ///< Address is not aligned on the block size of this MPC */ +#define ARM_MPC_ERR_INVALID_RANGE (ARM_DRIVER_ERROR_SPECIFIC - 4) ///< The given address range to configure is invalid +#define ARM_MPC_ERR_RANGE_SEC_ATTR_NON_COMPATIBLE (ARM_DRIVER_ERROR_SPECIFIC - 4) ///< The given range cannot be accessed with the wanted security attributes */ +#define ARM_MPC_ERR_UNSPECIFIED (ARM_DRIVER_ERROR_SPECIFIC - 5) ///< Unspecified error */ + +/* Security attribute used in various place of the API */ +typedef enum _ARM_MPC_SEC_ATTR { + ARM_MPC_ATTR_SECURE, ///< Secure attribute + ARM_MPC_ATTR_NONSECURE, ///< Non-secure attribute + /* Used when getting the configuration of a memory range and some blocks are + * secure whereas some other are non secure */ + ARM_MPC_ATTR_MIXED, ///< Mixed attribute +} ARM_MPC_SEC_ATTR; + +/* Function documentation */ +/** + \fn ARM_DRIVER_VERSION ARM_MPC_GetVersion (void) + \brief Get driver version. + \return \ref ARM_DRIVER_VERSION + + \fn int32_t ARM_MPC_Initialize (void) + \brief Initialize MPC Interface. + \return Returns error code. + + \fn int32_t ARM_MPC_Uninitialize (void) + \brief De-initialize MPC Interface. The controlled memory region + should not be accessed after a call to this function, as + it is allowed to configure everything to be secure (to + prevent information leak for example). + \return Returns error code. + + \fn int32_t ARM_MPC_GetBlockSize (uint32_t* blk_size) + \brief Get the block size of the MPC. All regions must be aligned + on this block size (base address and limit+1 address). + \param[out] blk_size: The block size in bytes. + \return Returns error code. + + \fn int32_t ARM_MPC_GetCtrlConfig (uint32_t* ctrl_val) + \brief Get some information on how the MPC IP is configured. + \param[out] ctrl_val: MPC control configuration + \return Returns error code. + + \fn int32_t ARM_MPC_SetCtrlConfig (uint32_t ctrl) + \brief Set new control configuration for the MPC IP. + \param[in] ctrl: New control configuration. + \return Returns error code. + + \fn int32_t ARM_MPC_ConfigRegion (uintptr_t base, + uintptr_t limit, + ARM_MPC_SEC_ATTR attr) + \brief Configure a memory region (base and limit included). + Both base and limit addresses must belong to the same + memory range, and this range must be managed by this MPC. + Also, some ranges are only allowed to be configured as + secure/non-secure, because of hardware requirements + (security aliases), and only a relevant security attribute + is therefore allowed for such ranges. + \param[in] base: Base address of the region to configure. This + bound is included in the configured region. + This must be aligned on the block size of this MPC. + \param[in] limit: Limit address of the region to configure. This + bound is included in the configured region. + Limit+1 must be aligned on the block size of this MPC. + \param[in] attr: Wanted security attribute of the region. + \return Returns error code. + + \fn int32_t ARM_MPC_GetRegionConfig (uintptr_t base, + uintptr_t limit, + ARM_MPC_SEC_ATTR *attr) + \brief Gets a memory region (base and limit included). + \param[in] base: Base address of the region to poll. This + bound is included. It does not need to be aligned + in any way. + \param[in] limit: Limit address of the region to poll. This + bound is included. (limit+1) does not need to be aligned + in any way. + \param[out] attr: Security attribute of the region. + If the region has mixed secure/non-secure, + a special value is returned (\ref ARM_MPC_SEC_ATTR). + + In case base and limit+1 addresses are not aligned on + the block size, the enclosing region with base and + limit+1 aligned on block size will be queried. + In case of early termination of the function (error), the + security attribute will be set to ARM_MPC_ATTR_MIXED. + \return Returns error code. + + \fn int32_t ARM_MPC_EnableInterrupt (void) + \brief Enable MPC interrupt. + \return Returns error code. + + \fn void ARM_MPC_DisableInterrupt (void) + \brief Disable MPC interrupt. + + \fn void ARM_MPC_ClearInterrupt (void) + \brief Clear MPC interrupt. + + \fn uint32_t ARM_MPC_InterruptState (void) + \brief MPC interrupt state. + \return Returns 1 if the interrupt is active, 0 otherwise. + + \fn int32_t ARM_MPC_LockDown (void) + \brief Lock down the MPC configuration. + \return Returns error code. +*/ + +/** + * \brief Access structure of the MPC Driver. + */ +typedef struct _ARM_DRIVER_MPC { + ARM_DRIVER_VERSION (*GetVersion) (void); ///< Pointer to \ref ARM_MPC_GetVersion : Get driver version. + int32_t (*Initialize) (void); ///< Pointer to \ref ARM_MPC_Initialize : Initialize the MPC Interface. + int32_t (*Uninitialize) (void); ///< Pointer to \ref ARM_MPC_Uninitialize : De-initialize the MPC Interface. + int32_t (*GetBlockSize) (uint32_t* blk_size); ///< Pointer to \ref ARM_MPC_GetBlockSize : Get MPC block size + int32_t (*GetCtrlConfig) (uint32_t* ctrl_val); ///< Pointer to \ref ARM_MPC_GetCtrlConfig : Get the MPC control configuration flags. + int32_t (*SetCtrlConfig) (uint32_t ctrl); ///< Pointer to \ref ARM_MPC_SetCtrlConfig : Set the MPC control configuration flags. + int32_t (*ConfigRegion) (uintptr_t base, uintptr_t limit, ARM_MPC_SEC_ATTR attr); ///< Pointer to \ref ARM_MPC_ConfigRegion : Configure a region using the driver for the specific MPC. + int32_t (*GetRegionConfig) (uintptr_t base, uintptr_t limit, ARM_MPC_SEC_ATTR *attr); ///< Pointer to \ref ARM_MPC_GetRegionConfig : Get the configuration of a specific region on this MPC. + int32_t (*EnableInterrupt) (void); ///< Pointer to \ref ARM_MPC_EnableInterrupt : Enable MPC interrupt. + void (*DisableInterrupt) (void); ///< Pointer to \ref ARM_MPC_DisableInterrupt : Disable MPC interrupt. + void (*ClearInterrupt) (void); ///< Pointer to \ref ARM_MPC_ClearInterrupt : Clear MPC interrupt. + uint32_t (*InterruptState) (void); ///< Pointer to \ref ARM_MPC_InterruptState : MPC interrupt State. + int32_t (*LockDown) (void); ///< Pointer to \ref ARM_MPC_LockDown : Lock down the MPC configuration. +} const ARM_DRIVER_MPC; + +#endif /* __DRIVER_MPC_H */ + diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_PPC.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_PPC.h new file mode 100644 index 00000000000..e689b2ebde7 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/ext/driver/Driver_PPC.h @@ -0,0 +1,116 @@ +/* + * Copyright (c) 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. + */ + +#ifndef __CMSIS_PPC_DRV_H__ +#define __CMSIS_PPC_DRV_H__ + +#include "Driver_Common.h" + +/* API version */ +#define ARM_PPC_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(1,0) + +/* Security attribute used to configure the peripheral */ +typedef enum _ARM_PPC_SecAttr { + ARM_PPC_SECURE_ONLY, ///< Secure access + ARM_PPC_NONSECURE_ONLY, ///< Non-secure access +} ARM_PPC_SecAttr; + +/* Privilege attribute used to configure the peripheral */ +typedef enum _ARM_PPC_PrivAttr { + ARM_PPC_PRIV_AND_NONPRIV, ///< Privilege and non-privilege access + ARM_PPC_PRIV_ONLY, ///< Privilege only access +} ARM_PPC_PrivAttr; + +/* Function documentation */ +/** + \fn ARM_DRIVER_VERSION ARM_PPC_GetVersion (void) + \brief Get driver version. + \return \ref ARM_DRIVER_VERSION + + \fn int32_t ARM_PPC_Initialize (void) + \brief Initialize PPC Interface. + \return Returns ARM error code. + + \fn int32_t ARM_PPC_Uninitialize (void) + \brief De-initialize MPC Interface. + \return Returns ARM error code. + + \fn int32_t ARM_PPC_ConfigPeriph (uint8_t periph, + ARM_PPC_SecAttr sec_attr, + ARM_PPC_PrivAttr priv_attr) + \brief Configures a peripheral controlled by the given PPC. + \param[in] periph: Peripheral position in SPCTRL and NSPCTRL registers. + \param[in] sec_attr: Secure attribute value. + \param[in] priv_attr: Privilege attrivute value. + + Secure Privilege Control Block ( SPCTRL ) + Non-Secure Privilege Control Block ( NSPCTRL ) + + \return Returns ARM error code. + + \fn int32_t ARM_PPC_IsPeriphSecure (uint8_t periph) + \brief Check if the peripheral is configured to be secure. + \param[in] periph: Peripheral position in SPCTRL and NSPCTRL registers. + + Secure Privilege Control Block ( SPCTRL ) + Non-Secure Privilege Control Block ( NSPCTRL ) + + \return Returns 1 if the peripheral is configured as secure, + 0 for non-secure. + + \fn uint32_t ARM_PPC_IsPeriphPrivOnly (uint8_t periph) + \brief Check if the peripheral is configured to be privilege only. + \param[in] periph: Peripheral position in SPCTRL and NSPCTRL registers. + + Secure Privilege Control Block ( SPCTRL ) + Non-Secure Privilege Control Block ( NSPCTRL ) + + \return Returns 1 if the peripheral is configured as privilege access + only, 0 for privilege and unprivilege access mode. + + \fn int32_t ARM_PPC_EnableInterrupt (void) + \brief Enable PPC interrupt. + \return Returns ARM error code. + + \fn void ARM_PPC_DisableInterrupt (void) + \brief Disable PPC interrupt. + + \fn void ARM_PPC_ClearInterrupt (void) + \brief Clear PPC interrupt. + + \fn int32_t ARM_PPC_InterruptState (void) + \brief PPC interrupt state. + \return Returns 1 if the interrupt is active, 0 otherwise. +*/ + +/** + * \brief Access structure of the MPC Driver. + */ +typedef struct _ARM_DRIVER_PPC { + ARM_DRIVER_VERSION (*GetVersion) (void); ///< Pointer to \ref ARM_PPC_GetVersion : Get driver version. + int32_t (*Initialize) (void); ///< Pointer to \ref ARM_PPC_Initialize : Initialize the PPC Interface. + int32_t (*Uninitialize) (void); ///< Pointer to \ref ARM_PPC_Uninitialize : De-initialize the PPC Interface. + int32_t (*ConfigPeriph) (uint8_t periph, ARM_PPC_SecAttr sec_attr, ARM_PPC_PrivAttr priv_attr); ///< Pointer to \ref ARM_PPC_ConfigPeriph : Configure a peripheral controlled by the PPC. + uint32_t (*IsPeriphSecure) (uint8_t periph); ///< Pointer to \ref IsPeriphSecure : Check if the peripheral is configured to be secure. + uint32_t (*IsPeriphPrivOnly) (uint8_t periph); ///< Pointer to \ref IsPeriphPrivOnly : Check if the peripheral is configured to be privilege only. + int32_t (*EnableInterrupt) (void); ///< Pointer to \ref ARM_PPC_EnableInterrupt : Enable PPC interrupt. + void (*DisableInterrupt) (void); ///< Pointer to \ref ARM_PPC_DisableInterrupt : Disable PPC interrupt. + void (*ClearInterrupt) (void); ///< Pointer to \ref ARM_PPC_ClearInterrupt : Clear PPC interrupt. + uint32_t (*InterruptState) (void); ///< Pointer to \ref ARM_PPC_InterruptState : PPC interrupt State. +} const ARM_DRIVER_PPC; + +#endif /* __CMSIS_PPC_DRV_H__ */ + diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_boot_seed.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_boot_seed.h new file mode 100644 index 00000000000..11b79f0ebb1 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_boot_seed.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_PLAT_BOOT_SEED_H__ +#define __TFM_PLAT_BOOT_SEED_H__ +/** + * \file tfm_plat_boot_seed.h + * + * Boot seed is used by a validating entity to ensure multiple reports were + * generated in the same boot session. Boot seed is a random number, generated + * only once during a boot cycle and its value is constant in the same cycle. + * Size recommendation is 256-bit to meet the statistically improbable property. + * Boot seed can be generated by secure boot loader an included to the measured + * boot state or can be generated by PRoT SW. + */ + +/** + * \note The interfaces defined in this file must be implemented for each + * SoC. + */ + +#include +#include "tfm_plat_defs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * \def BOOT_SEED_SIZE + * + * \brief Size of boot seed in bytes. + */ +#define BOOT_SEED_SIZE (32u) + +/** + * \brief Gets the boot seed, which is a constant random number during a boot + * cycle. + * + * \param[in] size The required size of boot seed in bytes + * \param[out] buf Pointer to the buffer to store boot seed + * + * \return TFM_PLAT_ERR_SUCCESS if the value is generated correctly. Otherwise, + * it returns TFM_PLAT_ERR_SYSTEM_ERR. + */ +enum tfm_plat_err_t tfm_plat_get_boot_seed(uint32_t size, uint8_t *buf); + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_PLAT_BOOT_SEED_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_defs.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_defs.h new file mode 100644 index 00000000000..f0b4297a247 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_defs.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_PLAT_DEFS_H__ +#define __TFM_PLAT_DEFS_H__ +/** + * \note The interfaces defined in this file must be implemented for each + * target. + */ + +#include +#include + +enum tfm_plat_err_t { + TFM_PLAT_ERR_SUCCESS = 0, + TFM_PLAT_ERR_SYSTEM_ERR, + TFM_PLAT_ERR_MAX_VALUE, + /* Following entry is only to ensure the error code of int size */ + TFM_PLAT_ERR_FORCE_INT_SIZE = INT_MAX +}; + +/*! + * \def TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION(TFM_PARTITION_NAME) + * + * \brief This macro provides a mechanism to place a function code in a specific + * secure partition at linker time in TF-M Level 3. + * + * \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest + * file "name" field. + */ +#define TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \ + __attribute__((section(TFM_PARTITION_NAME"_ATTR_FN"))) + +#endif /* __TFM_PLAT_DEFS_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_device_id.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_device_id.h new file mode 100644 index 00000000000..eb7d1baa503 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_plat_device_id.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_PLAT_DEVICE_ID_H__ +#define __TFM_PLAT_DEVICE_ID_H__ +/** + * \file tfm_plat_device_id.h + * Provide the Universal Entity ID (UEID) of the device. + * It identifies the entire device or a submodule or subsystem. Must be + * universally and globally unique and immutable. Variable length with a + * maximum size of 33 bytes: 1 type byte and 256 bits. + */ + +/** + * \note The interfaces defined in this file must be implemented for each + * SoC. + */ + +#include +#include "tfm_plat_defs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \def DEVICE_ID_MAX_SIZE + * + * \brief Maximum size of device ID in bytes + */ +#define DEVICE_ID_MAX_SIZE (33u) + +/** + * \brief Get the UEID of the device. + * + * \param[in] size The size of the buffer in bytes to store the UEID + * \param[out] buf Pointer to the buffer to store the UEID + * + * \return The size of device ID in bytes, if buffer big enough to store the + * ID, otherwise -1. + */ +int32_t tfm_plat_get_device_id(uint32_t size, uint8_t *buf); + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_PLAT_DEVICE_ID_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_spm_hal.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_spm_hal.h new file mode 100644 index 00000000000..509f153d650 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_spm_hal.h @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_SPM_HAL_H__ +#define __TFM_SPM_HAL_H__ + +#include +#include "tfm_secure_api.h" +#include "spm_api.h" + +/** + * \brief Holds peripheral specific data fields required to manage the + * peripherals isolation + * + * This structure has to be defined in the platform directory, and may have + * different definition for each platform. The structure should contain fields + * that describe the peripheral for the functions that are prototyped in this + * file and are responsible for configuring the isolation of the peripherals. + * + * Pointers to structures of this type are managed by the SPM, and passed to the + * necessary function on isolation request. The pointers are also defined by the + * platform in the header file tfm_peripherals_def.h. For details on this, see + * the documentation of that file. + */ +struct tfm_spm_partition_platform_data_t; + +#if TFM_LVL != 1 +/** + * \brief Holds SPM db fields that define the memory regions used by a + * partition. + */ +struct tfm_spm_partition_memory_data_t +{ + uint32_t code_start; /*!< Start of the code memory of this partition. */ + uint32_t code_limit; /*!< Address of the byte beyond the end of the code + * memory of this partition. + */ + uint32_t ro_start; /*!< Start of the read only memory of this + * partition. + */ + uint32_t ro_limit; /*!< Address of the byte beyond the end of the read + * only memory of this partition. + */ + uint32_t rw_start; /*!< Start of the data region of this partition. */ + uint32_t rw_limit; /*!< Address of the byte beyond the end of the data + * region of this partition. + */ + uint32_t zi_start; /*!< Start of the zero initialised data region of + * this partition. + */ + uint32_t zi_limit; /*!< Address of the byte beyond the end of the zero + * initialised region of this partition. + */ + uint32_t stack_bottom; /*!< The bottom of the stack for the partition. */ + uint32_t stack_top; /*!< The top of the stack for the partition. */ +}; +#endif + +/** + * \brief This function initialises the HW used for isolation, and sets the + * default configuration for them. + * + * This function is called during TF-M core early startup, before DB init + */ +void tfm_spm_hal_init_isolation_hw(void); + +/** + * \brief This function initialises the HW used for isolation, and sets the + * default configuration for them. + * This function is called during TF-M core early startup, after DB init + */ +void tfm_spm_hal_setup_isolation_hw(void); + +/** + * \brief Configure peripherals for a partition based on the platfotm data from + * the DB + * + * This function is called during partition initialisation (before calling the + * init function for the partition) + * + * \param[in] platform_data The platform fields of the partition DB record to + * be used for configuration. Can be NULL. + */ +void tfm_spm_hal_configure_default_isolation( + const struct tfm_spm_partition_platform_data_t *platform_data); +/** + * \brief Configures the system debug properties. + * The default configuration of this function should disable secure debug + * when either DAUTH_NONE or DAUTH_NS_ONLY define is set. It is up to the + * platform owner to decide if secure debug can be turned on in their + * system, if DAUTH_FULL define is present. + * The DAUTH_CHIP_DEFAULT define should not be considered a safe default + * option unless explicitly noted by the chip vendor. + * The implementation has to expect that one of those defines is going to + * be set. Otherwise, a compile error needs to be triggered. + */ +void tfm_spm_hal_init_debug(void); + +/** + * \brief Enables the fault handlers + */ +void enable_fault_handlers(void); + +/** + * \brief Configures the system reset request properties + */ +void system_reset_cfg(void); + +/** + * \brief Configures all external interrupts to target the + * NS state, apart for the ones associated to secure + * peripherals (plus MPC and PPC) + */ +void nvic_interrupt_target_state_cfg(void); + +/** + * \brief This function enable the interrupts associated + * to the secure peripherals (plus the isolation boundary violation + * interrupts) + */ +void nvic_interrupt_enable(void); + +/** + * \brief Get the VTOR value of non-secure image + * + * \return Returns the address where the vector table of the non-secure image + * is located + */ +uint32_t tfm_spm_hal_get_ns_VTOR(void); + +/** + * \brief Get the initial address of non-secure image main stack + * + * \return Returns the initial non-secure MSP + */ +uint32_t tfm_spm_hal_get_ns_MSP(void); + +/** + * \brief Get the entry point of the non-secure image + * + * \return Returns the address of the non-secure image entry point + */ +uint32_t tfm_spm_hal_get_ns_entry_point(void); + + +#if TFM_LVL != 1 +/** + * \brief Configure the sandbox for a partition. + * + * \param[in] memory_data The memory ranges from the partition DB for this + * partition + * \param[in] platform_data The platform fields of the partition DB record + * for this partition. Can be NULL. + * + * \return Returns the result operation as per \ref spm_err_t + */ +enum spm_err_t tfm_spm_hal_partition_sandbox_config( + const struct tfm_spm_partition_memory_data_t *memory_data, + const struct tfm_spm_partition_platform_data_t *platform_data); + +/** + * \brief Deconfigure the sandbox for a partition. + * + * \param[in] memory_data The memory ranges from the partition DB for this + * partition + * \param[in] platform_data The platform fields of the partition DB record + * for this partition. Can be NULL. + * + * \return Returns the result operation as per \ref spm_err_t + */ +enum spm_err_t tfm_spm_hal_partition_sandbox_deconfig( + const struct tfm_spm_partition_memory_data_t *memory_data, + const struct tfm_spm_partition_platform_data_t *platform_data); + +/** + * \brief Set the share region mode + * + * \param[in] share The mode to set + * + * \return Returns the result operation as per \ref spm_err_t + */ +enum spm_err_t tfm_spm_hal_set_share_region( + enum tfm_buffer_share_region_e share); +#endif + +#endif /* __TFM_SPM_HAL_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_arch_v8m.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_arch_v8m.h new file mode 100644 index 00000000000..96914c07469 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_arch_v8m.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_ARCH_V8M_H__ +#define __TFM_ARCH_V8M_H__ + +#include "cmsis.h" + +#define XPSR_T32 0x01000000 +#define LR_UNPRIVILEGED 0xfffffffd + +/* This header file collects the ARCH related operations. */ +struct tfm_state_context_base { + uint32_t r0; + uint32_t r1; + uint32_t r2; + uint32_t r3; + uint32_t r12; + uint32_t ra_lr; + uint32_t ra; + uint32_t xpsr; +}; + +struct tfm_state_context_ext { + uint32_t r4; + uint32_t r5; + uint32_t r6; + uint32_t r7; + uint32_t r8; + uint32_t r9; + uint32_t r10; + uint32_t r11; + uint32_t sp; + uint32_t sp_limit; + uint32_t dummy; + uint32_t lr; +}; + +struct tfm_state_context { + struct tfm_state_context_ext ctxb; +}; + +#define TFM_STATE_1ST_ARG(ctx) \ + (((struct tfm_state_context_base *)(ctx)->ctxb.sp)->r0) +#define TFM_STATE_2ND_ARG(ctx) \ + (((struct tfm_state_context_base *)(ctx)->ctxb.sp)->r1) +#define TFM_STATE_3RD_ARG(ctx) \ + (((struct tfm_state_context_base *)(ctx)->ctxb.sp)->r2) +#define TFM_STATE_4TH_ARG(ctx) \ + (((struct tfm_state_context_base *)(ctx)->ctxb.sp)->r3) +#define TFM_STATE_RET_VAL(ctx) \ + (((struct tfm_state_context_base *)(ctx)->ctxb.sp)->r0) + +__STATIC_INLINE void tfm_trigger_pendsv(void) +{ + SCB->ICSR = SCB_ICSR_PENDSVSET_Msk; +} + +void tfm_initialize_context(struct tfm_state_context *ctx, + uint32_t r0, uint32_t ra, + uint32_t sp, uint32_t sp_limit); + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_internal_defines.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_internal_defines.h new file mode 100644 index 00000000000..a5382c57805 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_internal_defines.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_INTERNAL_DEFINES_H__ +#define __TFM_INTERNAL_DEFINES_H__ + +/* IPC internal return status */ +#define IPC_SUCCESS 0 +#define IPC_ERROR_BAD_PARAMETERS (INT32_MIN) +#define IPC_ERROR_SHORT_BUFFER (INT32_MIN + 1) +#define IPC_ERROR_VERSION (INT32_MIN + 2) +#define IPC_ERROR_MEMORY_CHECK (INT32_MIN + 3) +#define IPC_ERROR_GENERIC (INT32_MIN + 0x1F) + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_list.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_list.h new file mode 100644 index 00000000000..976450362e7 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_list.h @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_LIST_H__ +#define __TFM_LIST_H__ + +/* List structure */ +struct tfm_list_node_t { + struct tfm_list_node_t *prev; + struct tfm_list_node_t *next; +}; + +/** + * \brief Initialize list head. + * + * \param[in] head List head need to be initialized. + */ +__STATIC_INLINE void tfm_list_init(struct tfm_list_node_t *head) +{ + head->next = head; + head->prev = head; +} + +/** + * \brief Add one node to list tail. + * + * \param[in] head List head initialized by \ref tfm_list_init. + * \param[in] node List node want to be added. + */ +__STATIC_INLINE void +tfm_list_add_tail(struct tfm_list_node_t *head, struct tfm_list_node_t *node) +{ + head->prev->next = node; + node->prev = head->prev; + head->prev = node; + node->next = head; +} + +/** + * \brief Check if a list is empty. + * + * \param[in] head List head initialized by \ref tfm_list_init. + * + * \returns returns 1 for empty, or 0 for not. + */ +__STATIC_INLINE int32_t tfm_list_is_empty(struct tfm_list_node_t *head) +{ + return (head->next == head); +} + +/** + * \brief Insert one node to list head. + * + * \param[in] head List head initialized by \ref tfm_list_init. + * \param[in] node List node want to be inserted. + */ +__STATIC_INLINE void +tfm_list_insert_first(struct tfm_list_node_t *head, + struct tfm_list_node_t *node) +{ + node->next = head->next; + node->prev = head; + head->next->prev = node; + head->next = node; +} + +/** + * \brief Retrieve the fist node from list. + * + * \param[in] head List head initialized by \ref tfm_list_init. + * + * \returns Returns the pointer to first list node. + */ +__STATIC_INLINE +struct tfm_list_node_t *tfm_list_first_node(struct tfm_list_node_t *head) +{ + return head->next; +} + +/** + * \brief Delete one node from list. + * + * \param[in] node List node want to be deleted. + */ +__STATIC_INLINE void tfm_list_del_node(struct tfm_list_node_t *node) +{ + node->prev->next = node->next; + node->next->prev = node->prev; +} + +/* Go through each node of a list */ +#define TFM_LIST_FOR_EACH(node, head) \ + for (node = (head)->next; node != head; node = node->next) + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_message_queue.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_message_queue.h new file mode 100644 index 00000000000..31bcda94823 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_message_queue.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_MESSAGE_QUEUE_H__ +#define __TFM_MESSAGE_QUEUE_H__ + +#ifndef TFM_MSG_QUEUE_MAX_MSG_NUM +#define TFM_MSG_QUEUE_MAX_MSG_NUM 128 +#endif +#define TFM_MSG_MAGIC 0x15154343 +/* Message struct to collect parameter from client */ +struct tfm_msg_body_t { + int32_t magic; + struct tfm_spm_service_t *service; /* RoT service pointer */ + psa_handle_t handle; /* Connected Service handle */ + struct tfm_event_ctx ack_mtx; /* Event for ack reponse */ + psa_msg_t msg; /* PSA message body */ + psa_invec invec[PSA_MAX_IOVEC]; /* Put in/out vectors in msg body */ + psa_outvec outvec[PSA_MAX_IOVEC]; + psa_outvec *caller_outvec; /* + * Save caller outvec pointer for + * write length update + */ + struct tfm_msg_body_t *next; /* List operators */ +}; + +struct tfm_msg_queue_t { + struct tfm_msg_body_t *head; /* Queue head */ + struct tfm_msg_body_t *tail; /* Queue tail */ + uint32_t size; /* Number of the queue member */ +}; + +/** + * \brief Enqueue a message into message queue. + * + * \param[in] queue Message queue, it will be initialized + * if has not been initialized. + * \param[in] node Message queue node want to be enqueue. + * + * \retval IPC_SUCCESS Success. + * \retval IPC_ERROR_BAD_PARAMETERS Parameters error. + */ +int32_t tfm_msg_enqueue(struct tfm_msg_queue_t *queue, + struct tfm_msg_body_t *node); + +/** + * \brief Dequeue a message from message queue. + * + * \param[in] queue Message queue. + * + * \retval node pointer Success. + * \retval NULL Queue is NULL or size is zero. + */ +struct tfm_msg_body_t *tfm_msg_dequeue(struct tfm_msg_queue_t *queue); + +/** + * \brief Check if a message queue is empty. + * + * \param[in] queue Message queue. + * + * \returns Returns 1 for empty, or 0 for not. + */ +int32_t tfm_msg_queue_is_empty(struct tfm_msg_queue_t *queue); + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_pools.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_pools.h new file mode 100644 index 00000000000..1072f78f0f5 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_pools.h @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_POOLS_H__ +#define __TFM_POOLS_H__ + +/* + * Resource pool - few known size resources allocation/free is required, + * so pool is more applicable than heap. + */ + +/* + * Pool Instance: + * [ Pool Instance ] + N * [ Pool Chunks ] + */ +struct tfm_pool_chunk_t { + struct tfm_list_node_t list; /* Chunk list */ + void *pool; /* Point to the parent pool */ + uint8_t data[0]; /* Data indicator */ +}; + +struct tfm_pool_instance_t { + size_t chunksz; /* Chunks size of pool member */ + struct tfm_list_node_t chunks_list; /* Chunk list head in pool */ + struct tfm_pool_chunk_t chunks[0]; /* Data indicator */ +}; + +/* + * This will declares a static memory pool variable with chunk memory. + * Parameters: + * name - Variable name, will be used when register + * chunksz - chunk size in bytes + * num - Number of chunks + */ +#define TFM_POOL_DECLARE(name, chunksz, num) \ + static uint8_t name##_pool_buf[((chunksz) + \ + sizeof(struct tfm_pool_chunk_t)) * (num) \ + + sizeof(struct tfm_pool_instance_t)] \ + __attribute__((aligned(4))); \ + static struct tfm_pool_instance_t *name = \ + (struct tfm_pool_instance_t *)name##_pool_buf + +/* Get the head size of memory pool */ +#define POOL_HEAD_SIZE (sizeof(struct tfm_pool_instance_t) + \ + sizeof(struct tfm_pool_chunk_t)) + +/* Get the whole size of memory pool */ +#define POOL_BUFFER_SIZE(name) sizeof(name##_pool_buf) + +/** + * \brief Register a memory pool. + * + * \param[in] pool Pointer to memory pool declared by + * \ref TFM_POOL_DECLARE + * \param[in] poolsz Size of the pool buffer. + * \param[in] chunksz Size of chunks. + * \param[in] num Number of chunks. + * + * \retval IPC_SUCCESS Success. + * \retval IPC_ERROR_BAD_PARAMETERS Parameters error. + */ +int32_t tfm_pool_init(struct tfm_pool_instance_t *pool, size_t poolsz, + size_t chunksz, size_t num); + +/** + * \brief Allocate a memory from pool. + * + * \param[in] pool pool pointer decleared by \ref TFM_POOL_DECLARE + * + * \retval buffer pointer Success. + * \retval NULL Failed. + */ +void *tfm_pool_alloc(struct tfm_pool_instance_t *pool); + +/** + * \brief Free the allocated memory. + * + * \param[in] ptr Buffer pointer want to free. + */ +void tfm_pool_free(void *ptr); + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_spm.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_spm.h new file mode 100644 index 00000000000..0fd3a8f8004 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_spm.h @@ -0,0 +1,296 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_SPM_H__ +#define __TFM_SPM_H__ + +#include +#include "tfm_list.h" + +#ifndef TFM_SPM_MAX_ROT_SERV_NUM +#define TFM_SPM_MAX_ROT_SERV_NUM 28 +#endif +#define TFM_VERSION_POLICY_RELAXED 0 +#define TFM_VERSION_POLICY_STRICT 1 + +#ifndef TFM_CONN_HANDLE_MAX_NUM +#define TFM_CONN_HANDLE_MAX_NUM 32 +#endif + +/* RoT connection handle list */ +struct tfm_conn_handle_t { + psa_handle_t handle; /* Handle value */ + void *rhandle; /* Reverse handle value */ + struct tfm_list_node_t list; /* list node */ +}; + +/* Service database defined by manifest */ +struct tfm_spm_service_db_t { + char *name; /* Service name */ + uint32_t partition_id; /* Partition ID which service belong to */ + psa_signal_t signal; /* Service signal */ + uint32_t sid; /* Service identifier */ + bool non_secure_client; /* If can be called by non secure client */ + uint32_t minor_version; /* Minor version */ + uint32_t minor_policy; /* Minor version policy */ +}; + +/* RoT Service data */ +struct tfm_spm_service_t { + struct tfm_spm_service_db_t *service_db; /* Service database pointer */ + struct tfm_spm_ipc_partition_t *partition; /* + * Point to secure partition + * data + */ + struct tfm_list_node_t handle_list; /* Service handle list */ + struct tfm_msg_queue_t msg_queue; /* Message queue */ + struct tfm_list_node_t list; /* For list operation */ +}; + +/* + * FixMe: This structure is for IPC partition which is different with library + * mode partition. There needs to be an alignment for IPC partition database + * and library mode database. + */ +/* Secure Partition data */ +struct tfm_spm_ipc_partition_t { + int32_t index; /* Partition index */ + int32_t id; /* Secure partition ID */ + struct tfm_event_ctx signal_event; /* Event signal */ + uint32_t signals; /* Service signals had been triggered*/ + uint32_t signal_mask; /* Service signal mask passed by psa_wait() */ + struct tfm_list_node_t service_list;/* Service list */ +}; + +/*************************** Extended SPM functions **************************/ + +/** + * \brief Get the running partition ID. + * + * \return Returns the partition ID + */ +uint32_t tfm_spm_partition_get_running_partition_id_ext(void); + +/******************** Service handle management functions ********************/ + +/** + * \brief Create connection handle for client connect + * + * \param[in] service Target service context pointer + * + * \retval PSA_NULL_HANDLE Create failed \ref PSA_NULL_HANDLE + * \retval >0 Service handle created, \ref psa_handle_t + */ +psa_handle_t tfm_spm_create_conn_handle(struct tfm_spm_service_t *service); + +/** + * \brief Free connection handle which not used anymore. + * + * \param[in] service Target service context pointer + * \param[in] conn_handle Connection handle created by + * tfm_spm_create_conn_handle(), \ref psa_handle_t + * + * \retval IPC_SUCCESS Success + * \retval IPC_ERROR_BAD_PARAMETERS Bad parameters input + * \retval "Does not return" Panic for not find service by handle + */ +int32_t tfm_spm_free_conn_handle(struct tfm_spm_service_t *service, + psa_handle_t conn_handle); + +/** + * \brief Set reverse handle value for connection. + * + * \param[in] service Target service context pointer + * \param[in] conn_handle Connection handle created by + * tfm_spm_create_conn_handle(), \ref psa_handle_t + * \param[in] rhandle rhandle need to save + * + * \retval IPC_SUCCESS Success + * \retval IPC_ERROR_BAD_PARAMETERS Bad parameters input + * \retval "Does not return" Panic for not find handle node + */ +int32_t tfm_spm_set_rhandle(struct tfm_spm_service_t *service, + psa_handle_t conn_handle, + void *rhandle); + +/** + * \brief Get reverse handle value from connection hanlde. + * + * \param[in] service Target service context pointer + * \param[in] conn_handle Connection handle created by + * tfm_spm_create_conn_handle(), \ref psa_handle_t + * + * \retval void * Success + * \retval "Does not return" Panic for those: + * service pointer are NULL + * hanlde is \ref PSA_NULL_HANDLE + * handle node does not be found + */ +void *tfm_spm_get_rhandle(struct tfm_spm_service_t *service, + psa_handle_t conn_handle); + +/******************** Partition management functions *************************/ + +/** + * \brief Get current running partition context. + * + * \retval NULL Failed + * \retval "Not NULL" Return the parttion context pointer + * \ref spm_partition_t structures + */ +struct tfm_spm_ipc_partition_t *tfm_spm_get_running_partition(void); + +/** + * \brief Get the service context by signal. + * + * \param[in] partition Partition context pointer + * \ref spm_partition_t structures + * \param[in] signal Signal associated with inputs to the Secure + * Partition, \ref psa_signal_t + * + * \retval NULL Failed + * \retval "Not NULL" Target service context pointer, + * \ref spm_service_t structures + */ +struct tfm_spm_service_t * +tfm_spm_get_service_by_signal(struct tfm_spm_ipc_partition_t *partition, + psa_signal_t signal); + +/** + * \brief Get the service context by service ID. + * + * \param[in] sid RoT Service identity + * + * \retval NULL Failed + * \retval "Not NULL" Target service context pointer, + * \ref spm_service_t structures + */ +struct tfm_spm_service_t *tfm_spm_get_service_by_sid(uint32_t sid); + +/** + * \brief Get the service context by connection handle. + * + * \param[in] conn_handle Connection handle created by + * tfm_spm_create_conn_handle() + * + * \retval NULL Failed + * \retval "Not NULL" Target service context pointer, + * \ref spm_service_t structures + */ +struct tfm_spm_service_t * + tfm_spm_get_service_by_handle(psa_handle_t conn_handle); + +/** + * \brief Get the partition context by partition ID. + * + * \param[in] partition_id Partition identity + * + * \retval NULL Failed + * \retval "Not NULL" Target partition context pointer, + * \ref spm_partition_t structures + */ +struct tfm_spm_ipc_partition_t * + tfm_spm_get_partition_by_id(int32_t partition_id); + +/************************ Message functions **********************************/ + +/** + * \brief Get message context by message handle. + * + * \param[in] msg_handle Message handle which is a reference generated + * by the SPM to a specific message. + * + * \return The message body context pointer + * \ref msg_body_t structures + */ +struct tfm_msg_body_t *tfm_spm_get_msg_from_handle(psa_handle_t msg_handle); + +/** + * \brief Create a message for PSA client call. + * + * \param[in] service Target service context pointer, which can be + * obtained by partition management functions + * \prarm[in] handle Connect handle return by psa_connect(). Should + * be \ref PSA_NULL_HANDLE in psa_connect(). + * \param[in] type Message type, PSA_IPC_CONNECT, PSA_IPC_CALL or + * PSA_IPC_DISCONNECT + * \param[in] ns_caller Whether from NS caller + * \param[in] invec Array of input \ref psa_invec structures + * \param[in] in_len Number of input \ref psa_invec structures + * \param[in] outvec Array of output \ref psa_outvec structures + * \param[in] out_len Number of output \ref psa_outvec structures + * \param[in] caller_outvec Array of caller output \ref psa_outvec structures + * + * \retval NULL Failed + * \retval "Not NULL" New message body pointer \ref msg_body_t structures + */ +struct tfm_msg_body_t *tfm_spm_create_msg(struct tfm_spm_service_t *service, + psa_handle_t handle, + uint32_t type, int32_t ns_caller, + psa_invec *invec, size_t in_len, + psa_outvec *outvec, size_t out_len, + psa_outvec *caller_outvec); + +/** + * \brief Free message which unused anymore + * + * \param[in] msg Message pointer which want to free + * \ref msg_body_t structures + * + * \retval void Success + * \retval "Does not return" Failed + */ +void tfm_spm_free_msg(struct tfm_msg_body_t *msg); + +/** + * \brief Send message and wake up the SP who is waiting on + * message queue, block the current thread and + * scheduler triggered + * + * \param[in] service Target service context pointer, which can be + * obtained by partition management functions + * \param[in] msg message created by spm_create_msg() + * \ref msg_body_t structures + * + * \retval IPC_SUCCESS Success + * \retval IPC_ERROR_BAD_PARAMETERS Bad parameters input + * \retval IPC_ERROR_GENERIC Failed to enqueue message to service message queue + */ +int32_t tfm_spm_send_event(struct tfm_spm_service_t *service, + struct tfm_msg_body_t *msg); + +/** + * \brief Check the client minor version according to + * version policy + * + * \param[in] service Target service context pointer, which can be get + * by partition management functions + * \param[in] minor_version Client support minor version + * + * \retval IPC_SUCCESS Success + * \retval IPC_ERROR_BAD_PARAMETERS Bad parameters input + * \retval IPC_ERROR_VERSION Check failed + */ +int32_t tfm_spm_check_client_version(struct tfm_spm_service_t *service, + uint32_t minor_version); + +/** + * \brief Check the memory reference is valid. + * + * \param[in] buffer Pointer of memory reference + * \param[in] len Length of memory reference in bytes + * \param[in] ns_caller From non-secure caller + * + * \retval IPC_SUCCESS Success + * \retval IPC_ERROR_BAD_PARAMETERS Bad parameters input + * \retval IPC_ERROR_MEMORY_CHECK Check failed + */ +int32_t tfm_memory_check(void *buffer, size_t len, int32_t ns_caller); + +/* This function should be called before schedule function */ +void tfm_spm_init(void); + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_svcalls.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_svcalls.h new file mode 100644 index 00000000000..c64ce74889b --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_svcalls.h @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_SVCALLS_H__ +#define __TFM_SVCALLS_H__ + +/* Svcall for PSA Client APIs */ + +/** + * \brief SVC handler for \ref psa_framework_version. + * + * \return version The version of the PSA Framework implementation + * that is providing the runtime services to the + * caller. + */ +uint32_t tfm_svcall_psa_framework_version(void); + +/** + * \brief SVC handler for \ref psa_version. + * + * \param[in] args Include all input arguments: sid. + * \param[in] ns_caller If 'non-zero', call from non-secure client. + * Or from secure client. + * + * \retval PSA_VERSION_NONE The RoT Service is not implemented, or the + * caller is not permitted to access the service. + * \retval > 0 The minor version of the implemented RoT + * Service. + */ +uint32_t tfm_svcall_psa_version(uint32_t *args, int32_t ns_caller); + +/** + * \brief SVC handler for \ref psa_connect. + * + * \param[in] args Include all input arguments: + * sid, minor_version. + * \param[in] ns_caller If 'non-zero', call from non-secure client. + * Or from secure client. + * + * \retval > 0 A handle for the connection. + * \retval PSA_CONNECTION_REFUSED The SPM or RoT Service has refused the + * connection. + * \retval PSA_CONNECTION_BUSY The SPM or RoT Service cannot make the + * connection at the moment. + * \retval "Does not return" The RoT Service ID and version are not + * supported, or the caller is not permitted to + * access the service. + */ +psa_handle_t tfm_svcall_psa_connect(uint32_t *args, int32_t ns_caller); + +/** + * \brief SVC handler for \ref psa_call. + * + * \param[in] args Include all input arguments: + * handle, in_vec, in_len, out_vec, out_len. + * \param[in] ns_caller If 'non-zero', call from non-secure client. + * Or from secure client. + * + * \retval >=0 RoT Service-specific status value. + * \retval <0 RoT Service-specific error code. + * \retval PSA_DROP_CONNECTION The connection has been dropped by the RoT + * Service. This indicates that either this or + * a previous message was invalid. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg An invalid handle was passed. + * \arg The connection is already handling a request. + * \arg An invalid memory reference was provided. + * \arg in_len + out_len > PSA_MAX_IOVEC. + * \arg The message is unrecognized by the RoT + * Service or incorrectly formatted. + */ +psa_status_t tfm_svcall_psa_call(uint32_t *args, int32_t ns_caller); + +/** + * \brief SVC handler for \ref psa_close. + * + * \param[in] args Include all input arguments: handle. + * \param[in] ns_caller If 'non-zero', call from non-secure client. + * Or from secure client. + * + * \retval void Success. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg An invalid handle was provided that is not + * the null handle. + * \arg The connection is handling a request. + */ +void tfm_svcall_psa_close(uint32_t *args, int32_t ns_caller); + +/** + * \brief SVC handler for IPC functions + * + * \param[in] svc_num SVC number + * \param[in] ctx Argument context + * + * \returns Return values from those who has, + * or PSA_SUCCESS. + */ +int32_t SVC_Handler_IPC(tfm_svc_number_t svc_num, uint32_t *ctx); + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_thread.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_thread.h new file mode 100644 index 00000000000..8a6d86364d5 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_thread.h @@ -0,0 +1,223 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_THREAD_H__ +#define __TFM_THREAD_H__ + +#include "tfm_arch_v8m.h" +#include "cmsis_compiler.h" + +/* Status code */ +#define THRD_STAT_CREATING 0 +#define THRD_STAT_RUNNING 1 +#define THRD_STAT_BLOCK 2 +#define THRD_STAT_DETACH 3 +#define THRD_STAT_INVALID 4 + +/* Security attribute - default as security */ +#define THRD_ATTR_SECURE_OFFSET 16 +#define THRD_ATTR_SECURE (0) +#define THRD_ATTR_NON_SECURE (1 << THRD_ATTR_SECURE_OFFSET) + +/* Lower value has higher priority */ +#define THRD_PRIOR_MASK 0xFF +#define THRD_PRIOR_HIGHEST 0x0 +#define THRD_PRIOR_MEDIUM 0x7F +#define THRD_PRIOR_LOWEST 0xFF + +/* Error code */ +#define THRD_SUCCESS 0 +#define THRD_ERR_INVALID_PARAM 1 + +/* Thread entry function type */ +typedef void *(*tfm_thrd_func_t)(void *); + +/* Thread context */ +struct tfm_thrd_ctx { + tfm_thrd_func_t pfn; /* entry function */ + void *param; /* entry parameter */ + uint8_t *sp_base; /* stack bottom */ + uint8_t *sp_top; /* stack top */ + uint32_t prior; /* priority */ + uint32_t status; /* status */ + + struct tfm_state_context state_ctx; /* State context */ + struct tfm_thrd_ctx *next; /* next thread in list */ +}; + +/* + * Initialize a thread context with the necessary info. + * + * Parameters : + * pth - pointer of caller provided thread context + * pfn - thread entry function + * param - thread entry function parameter + * sp_base - stack pointer base (higher address) + * sp_top - stack pointer top (lower address) + * + * Notes : + * Thread contex rely on caller allocated memory; initialize members in + * context. This function does not insert thread into schedulable list. + */ +void tfm_thrd_init(struct tfm_thrd_ctx *pth, + tfm_thrd_func_t pfn, void *param, + uint8_t *sp_base, uint8_t *sp_top); + +/* Set thread priority. + * + * Parameters : + * pth - pointer of thread context + * prior - priority value (0~255) + * + * Notes : + * Set thread priority. Priority is set to THRD_PRIOR_MEDIUM in + * tfm_thrd_init(). + */ +void __STATIC_INLINE tfm_thrd_priority(struct tfm_thrd_ctx *pth, + uint32_t prior) +{ + pth->prior &= ~THRD_PRIOR_MASK; + pth->prior |= prior & THRD_PRIOR_MASK; +} + +/* + * Set thread security attribute. + * + * Parameters : + * pth - pointer of thread context + * attr_secure - THRD_ATTR_SECURE or THRD_ATTR_NON_SECURE + * + * Notes + * Reuse prior of thread context to shift down non-secure thread priority. + */ +void __STATIC_INLINE tfm_thrd_secure(struct tfm_thrd_ctx *pth, + uint32_t attr_secure) +{ + pth->prior &= ~THRD_ATTR_NON_SECURE; + pth->prior |= attr_secure; +} + +/* + * Set thread status. + * + * Parameters : + * pth - pointer of thread context + * new_status - new status of thread + * + * Return : + * None + * + * Notes : + * Thread status is not changed if invalid status value inputed. + */ +void tfm_thrd_set_status(struct tfm_thrd_ctx *pth, uint32_t new_status); + +/* + * Get thread status. + * + * Parameters : + * pth - pointer of thread context + * + * Return : + * Status of thread + */ +uint32_t __STATIC_INLINE tfm_thrd_get_status(struct tfm_thrd_ctx *pth) +{ + return pth->status; +} + +/* + * Set thread state return value. + * + * Parameters : + * pth - pointer of thread context + * retval - return value to be set for thread state + * + * Notes : + * This API is useful for blocked syscall blocking thread. Syscall + * could set its return value to the caller before caller goes. + */ +void __STATIC_INLINE tfm_thrd_set_retval(struct tfm_thrd_ctx *pth, + uint32_t retval) +{ + TFM_STATE_RET_VAL(&pth->state_ctx) = retval; +} + +/* + * Validate thread context and insert it into schedulable list. + * + * Parameters : + * pth - pointer of thread context + * + * Return : + * THRD_SUCCESS for success. Or an error is returned. + * + * Notes : + * This function validates thread info. It returns error if thread info + * is not correct. Thread is avaliable after successful tfm_thrd_start(). + */ +uint32_t tfm_thrd_start(struct tfm_thrd_ctx *pth); + +/* + * Get current running thread. + * + * Return : + * Current running thread context pointer. + */ +struct tfm_thrd_ctx *tfm_thrd_curr_thread(void); + +/* + * Get next running thread in list. + * + * Return : + * Pointer of next thread to be run. + */ +struct tfm_thrd_ctx *tfm_thrd_next_thread(void); + +/* + * Activate a scheduling action after exception. + * + * Notes : + * This function could be called multiple times before scheduling. + */ +void tfm_thrd_activate_schedule(void); + +/* + * Save current context into 'prev' thread and switch to 'next'. + * + * Parameters : + * ctxb - latest caller context + * prev - previous thread to be switched out + * next - thread to be run + * + * Notes : + * This function could be called multiple times before scheduling. + */ +void tfm_thrd_context_switch(struct tfm_state_context_ext *ctxb, + struct tfm_thrd_ctx *prev, + struct tfm_thrd_ctx *next); + +/* + * Exit current running thread. + * + * Notes : + * Remove current thread out of schedulable list. + */ +void tfm_thrd_do_exit(void); + +/* + * PendSV specified function. + * + * Parameters : + * ctxb - State context storage pointer + * + * Notes: + * This is a staging API. Scheduler should be called in SPM finally and + * this function will be obsoleted later. + */ +void tfm_pendsv_do_schedule(struct tfm_state_context_ext *ctxb); + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_utils.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_utils.h new file mode 100644 index 00000000000..17f94c065bc --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_utils.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_UTILS_H__ +#define __TFM_UTILS_H__ + +/* CPU spin here */ +void tfm_panic(void); + +/* Assert and spin */ +#define TFM_ASSERT(cond) \ + do { \ + if (!(cond)) { \ + printf("Assert:%s:%d", __FUNCTION__, __LINE__); \ + while (1) \ + ; \ + } \ + } while (0) + +/* Get container structure start address from member */ +#define TFM_GET_CONTAINER_PTR(ptr, type, member) \ + (type *)((unsigned long)(ptr) - offsetof(type, member)) + +int32_t tfm_bitcount(uint32_t n); + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_wait.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_wait.h new file mode 100644 index 00000000000..2bed0aec3d2 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/include/tfm_wait.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_WAIT_H__ +#define __TFM_WAIT_H__ + +#include "cmsis_compiler.h" + +#define EVENT_MAGIC 0x65766e74 +#define EVENT_STAT_WAITED 0x0 +#define EVENT_STAT_SIGNALED 0x1 + +struct tfm_event_ctx { + uint32_t magic; /* 'evnt' */ + struct tfm_thrd_ctx *owner; /* waiting thread */ + uint32_t status; /* status */ + uint32_t retval; /* return value */ +}; + +/* + * Initialize an event context. + * + * Parameters : + * pevt - pointer of event context caller provided + * stat - initial status (EVENT_STAT_WAITED or EVENT_STAT_SIGNALED) + */ +void __STATIC_INLINE tfm_event_init(struct tfm_event_ctx *pevt, uint32_t stat) +{ + pevt->magic = EVENT_MAGIC; + pevt->status = stat; + pevt->owner = NULL; + pevt->retval = 0; +} + +/* + * Wait on an event. + * + * Parameters : + * pevt - pointer of event context + * + * Notes : + * Thread is blocked if event is not signaled. + */ +void tfm_event_wait(struct tfm_event_ctx *pevt); + +/* + * Signal an event. + * + * Parameters : + * pevt - pointer of event context + * + * Notes : + * Waiting thread on this event will be running. + */ +void tfm_event_signal(struct tfm_event_ctx *pevt); + +/* + * Peek an event status. + * + * Parameters : + * pevt - pointer of event context + * + * Return : + * Status of event. + * + * Notes : + * This function is used for getting event status without blocking thread. + */ +uint32_t tfm_event_peek(struct tfm_event_ctx *pevt); + +/* + * Set event owner return value. + * + * Parameters : + * pevt - pointer of event context + * retval - return value of blocked owner thread + * + * Notes : + * Thread return value is set while thread is to be running. + */ +void tfm_event_owner_retval(struct tfm_event_ctx *pevt, uint32_t retval); + +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/psa_client.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/psa_client.c new file mode 100644 index 00000000000..f8fe605f02b --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/psa_client.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include +#include "tfm_svc.h" +#include "psa_client.h" + +__attribute__((naked)) +uint32_t psa_framework_version(void) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_FRAMEWORK_VERSION)); +} + +__attribute__((naked)) +uint32_t psa_version(uint32_t sid) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_VERSION)); +} + +__attribute__((naked)) +psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_CONNECT)); +} + +__attribute__((naked)) +psa_status_t psa_call(psa_handle_t handle, + const psa_invec *in_vec, + size_t in_len, + psa_outvec *out_vec, + size_t out_len) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_CALL)); +} + +__attribute__((naked)) +void psa_close(psa_handle_t handle) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_CLOSE)); +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/psa_service.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/psa_service.c new file mode 100644 index 00000000000..487197168ed --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/psa_service.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include +#include "tfm_svc.h" +#include "psa_client.h" +#include "psa_service.h" + +__attribute__((naked)) +psa_signal_t psa_wait(psa_signal_t signal_mask, uint32_t timeout) + +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_WAIT)); +} + +__attribute__((naked)) +psa_status_t psa_get(psa_signal_t signal, psa_msg_t *msg) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_GET)); +} + +__attribute__((naked)) +void psa_set_rhandle(psa_handle_t msg_handle, void *rhandle) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_SET_RHANDLE)); +} + +__attribute__((naked)) +size_t psa_read(psa_handle_t msg_handle, uint32_t invec_idx, + void *buffer, size_t num_bytes) + +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_READ)); +} + +__attribute__((naked)) +size_t psa_skip(psa_handle_t msg_handle, uint32_t invec_idx, size_t num_bytes) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_SKIP)); +} + +__attribute__((naked)) +void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx, + const void *buffer, size_t num_bytes) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_WRITE)); +} + +__attribute__((naked)) +void psa_reply(psa_handle_t msg_handle, psa_status_t retval) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_REPLY)); +} + +__attribute__((naked)) +void psa_notify(int32_t partition_id) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_NOTIFY)); +} + +__attribute__((naked)) +void psa_clear(void) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_CLEAR)); +} + +__attribute__((naked)) +void psa_eoi(psa_signal_t irq_signal) +{ + __ASM("SVC %0 \n" + "BX LR \n" + : : "I" (TFM_SVC_PSA_EOI)); +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_arch_v8m.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_arch_v8m.c new file mode 100644 index 00000000000..5c50636896e --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_arch_v8m.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include + +#include "tfm_arch_v8m.h" +#include "cmsis.h" +#include "psa_client.h" +#include "psa_service.h" +#include "secure_utilities.h" +#include "tfm_utils.h" +#include "tfm_thread.h" + +/* This file contains the ARCH code for ARM V8M */ + +/* + * Thread exit zone. + * This function is set as the return address of thread entry and only + * privileged thread could return here. Un-privileged thread triggers + * fault if it tries to jump here and it gets exit by fault handler. + * + * The reason of putting this function here is for fault handler checking. + * Function address could be checked in fault handler to know it is a REAL + * thread exit or just an exception. + */ +static void exit_zone(void) +{ + tfm_thrd_do_exit(); +} + +void tfm_initialize_context(struct tfm_state_context *ctx, + uint32_t r0, uint32_t ra, + uint32_t sp, uint32_t sp_limit) +{ + /* + * For security consideration, set unused registers into ZERO; + * and only necessary registers are set here. + */ + struct tfm_state_context_base *p_ctxa = + (struct tfm_state_context_base *)sp; + + /* + * Shift back SP to leave space for holding base context + * since thread is kicked off through exception return. + */ + p_ctxa--; + + /* Basic context is considerate at thread start.*/ + tfm_memset(p_ctxa, 0, sizeof(*p_ctxa)); + p_ctxa->r0 = r0; + p_ctxa->ra = ra; + p_ctxa->ra_lr = (uint32_t)exit_zone; + p_ctxa->xpsr = XPSR_T32; + + tfm_memset(ctx, 0, sizeof(*ctx)); + ctx->ctxb.sp = (uint32_t)p_ctxa; + ctx->ctxb.sp_limit = sp_limit; + ctx->ctxb.lr = LR_UNPRIVILEGED; +} + +/* + * Stack status at PendSV entry: + * + * [ R0 - R3 ]<- PSP + * [ R12 ] + * [ LR_of_RA ] + * MSP->[ ........ ] [ RA ] + * [ ........ ] [ XPSR ] + * [ ........ ] + * [ ........ ] + * + * Stack status before calling pendsv_do_schedule(): + * + * MSP->[ R4 - R11 ] + * [ PSP ]--->[ R0 - R3 ] + * [ PSP Limit] [ R12 ] + * [ R2(dummy)] [ LR_of_RA ] + * [ LR ] [ RA ] + * [ ........ ] [ XPSR ] + * [ ........ ] [ ........ ] + * [ ........ ] + * + * pendsv_do_schedule() updates stacked context into current thread and + * replace stacked context with context of next thread. + * + * Scheduler does not support handler mode thread so take PSP/PSP_LIMIT as + * thread SP/SP_LIMIT. R2 holds dummy data due to stack operation is 8 bytes + * aligned. + */ +__attribute__((naked)) void PendSV_Handler(void) +{ + __ASM( + "mrs r0, psp \n" + "mrs r1, psplim \n" + "push {r0, r1, r2, lr} \n" + "push {r4-r11} \n" + "mov r0, sp \n" + "bl tfm_pendsv_do_schedule \n" + "pop {r4-r11} \n" + "pop {r0, r1, r2, lr} \n" + "msr psp, r0 \n" + "msr psplim, r1 \n" + "bx lr \n" + ); +} + +/* Reserved for future usage */ +__attribute__((naked)) void MemManage_Handler(void) +{ + __ASM("b ."); +} + +__attribute__((naked)) void BusFault_Handler(void) +{ + __ASM("b ."); +} +__attribute__((naked)) void UsageFault_Handler(void) +{ + __ASM("b ."); +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_message_queue.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_message_queue.c new file mode 100644 index 00000000000..83ebf50edb8 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_message_queue.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include +#include "tfm_thread.h" +#include "tfm_wait.h" +#include "psa_client.h" +#include "psa_service.h" +#include "tfm_internal_defines.h" +#include "tfm_message_queue.h" + +/* Message queue process */ +int32_t tfm_msg_enqueue(struct tfm_msg_queue_t *queue, + struct tfm_msg_body_t *node) +{ + if (!queue || !node) { + return IPC_ERROR_BAD_PARAMETERS; + } + + if (queue->size == 0) { + queue->head = node; + queue->tail = node; + } else { + queue->tail->next = node; + queue->tail = node; + } + queue->size++; + return IPC_SUCCESS; +} + +struct tfm_msg_body_t *tfm_msg_dequeue(struct tfm_msg_queue_t *queue) +{ + struct tfm_msg_body_t *pop_node; + + if (!queue) { + return NULL; + } + + if (queue->size == 0) { + return NULL; + } + + pop_node = queue->head; + queue->head = queue->head->next; + queue->size--; + return pop_node; +} + +int32_t tfm_msg_queue_is_empty(struct tfm_msg_queue_t *queue) +{ + return queue->size == 0 ? 1 : 0; +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_pools.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_pools.c new file mode 100644 index 00000000000..a5e7b2a65be --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_pools.c @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include +#include +#include +#include "tfm_thread.h" +#include "tfm_wait.h" +#include "psa_client.h" +#include "psa_service.h" +#include "tfm_internal_defines.h" +#include "cmsis_compiler.h" +#include "tfm_utils.h" +#include "tfm_list.h" +#include "tfm_pools.h" +#include "secure_utilities.h" + +int32_t tfm_pool_init(struct tfm_pool_instance_t *pool, size_t poolsz, + size_t chunksz, size_t num) +{ + struct tfm_pool_chunk_t *pchunk; + size_t i; + + if (!pool || num == 0) { + return IPC_ERROR_BAD_PARAMETERS; + } + + /* Ensure buffer is large enough */ + if (poolsz != ((chunksz + sizeof(struct tfm_pool_chunk_t)) * num + + sizeof(struct tfm_pool_instance_t))) { + return IPC_ERROR_BAD_PARAMETERS; + } + + /* Buffer should be BSS cleared but clear it again */ + tfm_memset(pool, 0, poolsz); + + /* Chain pool chunks */ + tfm_list_init(&pool->chunks_list); + + pchunk = (struct tfm_pool_chunk_t *)pool->chunks; + for (i = 0; i < num; i++) { + pchunk->pool = pool; + tfm_list_add_tail(&pool->chunks_list, &pchunk->list); + pchunk = (struct tfm_pool_chunk_t *)&pchunk->data[chunksz]; + } + + /* Prepare instance and insert to pool list */ + pool->chunksz = chunksz; + + return IPC_SUCCESS; +} + +void *tfm_pool_alloc(struct tfm_pool_instance_t *pool) +{ + struct tfm_list_node_t *node; + struct tfm_pool_chunk_t *pchunk; + + if (!pool) { + return NULL; + } + + if (tfm_list_is_empty(&pool->chunks_list)) { + return NULL; + } + + node = tfm_list_first_node(&pool->chunks_list); + pchunk = TFM_GET_CONTAINER_PTR(node, struct tfm_pool_chunk_t, list); + + /* Remove node from list node, it will be added when pool free */ + tfm_list_del_node(node); + + return &pchunk->data; +} + +void tfm_pool_free(void *ptr) +{ + struct tfm_pool_chunk_t *pchunk; + struct tfm_pool_instance_t *pool; + + pchunk = TFM_GET_CONTAINER_PTR(ptr, struct tfm_pool_chunk_t, data); + pool = (struct tfm_pool_instance_t *)pchunk->pool; + tfm_list_add_tail(&pool->chunks_list, &pchunk->list); +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_spm.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_spm.c new file mode 100644 index 00000000000..b69a0ce5baa --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_spm.c @@ -0,0 +1,642 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include +#include +#include +#include +#include "psa_client.h" +#include "psa_service.h" +#include "tfm_utils.h" +#include "spm_api.h" +#include "spm_db.h" +#include "spm_db_setup.h" +#include "tfm_internal_defines.h" +#include "tfm_wait.h" +#include "tfm_message_queue.h" +#include "tfm_list.h" +#include "tfm_pools.h" +#include "tfm_spm.h" +#include "tfm_spm_signal_defs.h" +#include "tfm_thread.h" +#include "region_defs.h" +#include "tfm_nspm.h" + +/* + * IPC partitions. + * FixMe: Need to get align with spm_partition_db_t. + */ +static struct tfm_spm_ipc_partition_t + g_spm_ipc_partition[SPM_MAX_PARTITIONS] = {}; + +/* Extern SPM variable */ +extern struct spm_partition_db_t g_spm_partition_db; + +/* Pools */ +TFM_POOL_DECLARE(conn_handle_pool, sizeof(struct tfm_conn_handle_t), + TFM_CONN_HANDLE_MAX_NUM); +TFM_POOL_DECLARE(spm_service_pool, sizeof(struct tfm_spm_service_t), + TFM_SPM_MAX_ROT_SERV_NUM); +TFM_POOL_DECLARE(msg_db_pool, sizeof(struct tfm_msg_body_t), + TFM_MSG_QUEUE_MAX_MSG_NUM); + +static struct tfm_spm_service_db_t g_spm_service_db[] = { + #include "tfm_service_list.inc" +}; + +/********************** SPM functions for handler mode ***********************/ + +/* Service handle management functions */ +psa_handle_t tfm_spm_create_conn_handle(struct tfm_spm_service_t *service) +{ + struct tfm_conn_handle_t *node; + + TFM_ASSERT(service); + + /* Get buffer for handle list structure from handle pool */ + node = (struct tfm_conn_handle_t *)tfm_pool_alloc(conn_handle_pool); + if (!node) { + return PSA_NULL_HANDLE; + } + + /* Global unique handle, use handle buffer address directly */ + node->handle = (psa_handle_t)node; + + /* Add handle node to list for next psa functions */ + tfm_list_add_tail(&service->handle_list, &node->list); + + return node->handle; +} + +static struct tfm_conn_handle_t * +tfm_spm_find_conn_handle_node(struct tfm_spm_service_t *service, + psa_handle_t conn_handle) +{ + struct tfm_conn_handle_t *handle_node; + struct tfm_list_node_t *node, *head; + + TFM_ASSERT(service); + + head = &service->handle_list; + TFM_LIST_FOR_EACH(node, head) { + handle_node = TFM_GET_CONTAINER_PTR(node, struct tfm_conn_handle_t, + list); + if (handle_node->handle == conn_handle) { + return handle_node; + } + } + return NULL; +} + +int32_t tfm_spm_free_conn_handle(struct tfm_spm_service_t *service, + psa_handle_t conn_handle) +{ + struct tfm_conn_handle_t *node; + + TFM_ASSERT(service); + + /* There are many handles for each RoT Service */ + node = tfm_spm_find_conn_handle_node(service, conn_handle); + if (!node) { + tfm_panic(); + } + + /* Remove node from handle list */ + tfm_list_del_node(&node->list); + + node->rhandle = NULL; + + /* Back handle buffer to pool */ + tfm_pool_free(node); + return IPC_SUCCESS; +} + +int32_t tfm_spm_set_rhandle(struct tfm_spm_service_t *service, + psa_handle_t conn_handle, + void *rhandle) +{ + struct tfm_conn_handle_t *node; + + TFM_ASSERT(service); + /* Set reverse handle value only be allowed for a connected handle */ + TFM_ASSERT(conn_handle != PSA_NULL_HANDLE); + + /* There are many handles for each RoT Service */ + node = tfm_spm_find_conn_handle_node(service, conn_handle); + if (!node) { + tfm_panic(); + } + + node->rhandle = rhandle; + return IPC_SUCCESS; +} + +void *tfm_spm_get_rhandle(struct tfm_spm_service_t *service, + psa_handle_t conn_handle) +{ + struct tfm_conn_handle_t *node; + + TFM_ASSERT(service); + /* Get reverse handle value only be allowed for a connected handle */ + TFM_ASSERT(conn_handle != PSA_NULL_HANDLE); + + /* There are many handles for each RoT Service */ + node = tfm_spm_find_conn_handle_node(service, conn_handle); + if (!node) { + tfm_panic(); + } + + return node->rhandle; +} + +/* Partition management functions */ +struct tfm_spm_service_t * +tfm_spm_get_service_by_signal(struct tfm_spm_ipc_partition_t *partition, + psa_signal_t signal) +{ + struct tfm_list_node_t *node, *head; + struct tfm_spm_service_t *service; + + TFM_ASSERT(partition); + + if (tfm_list_is_empty(&partition->service_list)) { + tfm_panic(); + } + + head = &partition->service_list; + TFM_LIST_FOR_EACH(node, head) { + service = TFM_GET_CONTAINER_PTR(node, struct tfm_spm_service_t, list); + if (service->service_db->signal == signal) { + return service; + } + } + return NULL; +} + +struct tfm_spm_service_t *tfm_spm_get_service_by_sid(uint32_t sid) +{ + uint32_t i; + struct tfm_list_node_t *node, *head; + struct tfm_spm_service_t *service; + + for (i = 0; i < SPM_MAX_PARTITIONS; i++) { + /* Skip partition without IPC flag */ + if ((tfm_spm_partition_get_flags(g_spm_ipc_partition[i].index) & + SPM_PART_FLAG_IPC) == 0) { + continue; + } + + if (tfm_list_is_empty(&g_spm_ipc_partition[i].service_list)) { + continue; + } + + head = &g_spm_ipc_partition[i].service_list; + TFM_LIST_FOR_EACH(node, head) { + service = TFM_GET_CONTAINER_PTR(node, struct tfm_spm_service_t, + list); + if (service->service_db->sid == sid) { + return service; + } + } + } + return NULL; +} + +struct tfm_spm_service_t * + tfm_spm_get_service_by_handle(psa_handle_t conn_handle) +{ + uint32_t i; + struct tfm_conn_handle_t *handle; + struct tfm_list_node_t *service_node, *service_head; + struct tfm_list_node_t *handle_node, *handle_head; + struct tfm_spm_service_t *service; + + for (i = 0; i < SPM_MAX_PARTITIONS; i++) { + /* Skip partition without IPC flag */ + if ((tfm_spm_partition_get_flags(g_spm_ipc_partition[i].index) & + SPM_PART_FLAG_IPC) == 0) { + continue; + } + + if (tfm_list_is_empty(&g_spm_ipc_partition[i].service_list)) { + continue; + } + + service_head = &g_spm_ipc_partition[i].service_list; + TFM_LIST_FOR_EACH(service_node, service_head) { + service = TFM_GET_CONTAINER_PTR(service_node, + struct tfm_spm_service_t, list); + handle_head = &service->handle_list; + TFM_LIST_FOR_EACH(handle_node, handle_head) { + handle = TFM_GET_CONTAINER_PTR(handle_node, + struct tfm_conn_handle_t, list); + if (handle->handle == conn_handle) { + return service; + } + } + } + } + return NULL; +} + +struct tfm_spm_ipc_partition_t * + tfm_spm_get_partition_by_id(int32_t partition_id) +{ + uint32_t i; + + for (i = 0; i < SPM_MAX_PARTITIONS; i++) { + if (g_spm_ipc_partition[i].id == partition_id) { + return &g_spm_ipc_partition[i]; + } + } + return NULL; +} + +struct tfm_spm_ipc_partition_t *tfm_spm_get_running_partition(void) +{ + uint32_t spid; + + spid = tfm_spm_partition_get_running_partition_id_ext(); + + return tfm_spm_get_partition_by_id(spid); +} + +int32_t tfm_spm_check_client_version(struct tfm_spm_service_t *service, + uint32_t minor_version) +{ + TFM_ASSERT(service); + + switch (service->service_db->minor_policy) { + case TFM_VERSION_POLICY_RELAXED: + if (minor_version > service->service_db->minor_version) { + return IPC_ERROR_VERSION; + } + break; + case TFM_VERSION_POLICY_STRICT: + if (minor_version != service->service_db->minor_version) { + return IPC_ERROR_VERSION; + } + break; + default: + return IPC_ERROR_VERSION; + } + return IPC_SUCCESS; +} + +/* Message functions */ +struct tfm_msg_body_t *tfm_spm_get_msg_from_handle(psa_handle_t msg_handle) +{ + /* + * There may be one error handle passed by the caller in two conditions: + * 1. Not a valid message handle. + * 2. Handle between different Partitions. Partition A passes one handle + * belong to other Partitions and tries to access other's data. + * So, need do necessary checking to prevent those conditions. + */ + struct tfm_msg_body_t *msg; + uint32_t partition_id; + + msg = (struct tfm_msg_body_t *)msg_handle; + if (!msg) { + return NULL; + } + + /* + * FixMe: For condition 1: using a magic number to define it's a message. + * It needs to be an enhancement to check the handle belong to service. + */ + if (msg->magic != TFM_MSG_MAGIC) { + return NULL; + } + + /* For condition 2: check if the partition ID is same */ + partition_id = tfm_spm_partition_get_running_partition_id_ext(); + if (partition_id != msg->service->partition->id) { + return NULL; + } + + return msg; +} + +struct tfm_msg_body_t *tfm_spm_create_msg(struct tfm_spm_service_t *service, + psa_handle_t handle, + uint32_t type, int32_t ns_caller, + psa_invec *invec, size_t in_len, + psa_outvec *outvec, size_t out_len, + psa_outvec *caller_outvec) +{ + struct tfm_msg_body_t *msg = NULL; + uint32_t i; + + TFM_ASSERT(service); + TFM_ASSERT(!(invec == NULL && in_len != 0)); + TFM_ASSERT(!(outvec == NULL && out_len != 0)); + TFM_ASSERT(in_len <= PSA_MAX_IOVEC); + TFM_ASSERT(out_len <= PSA_MAX_IOVEC); + TFM_ASSERT(in_len + out_len <= PSA_MAX_IOVEC); + + /* Get message buffer from message pool */ + msg = (struct tfm_msg_body_t *)tfm_pool_alloc(msg_db_pool); + if (!msg) { + return NULL; + } + + /* Clear message buffer before using it */ + tfm_memset(msg, 0, sizeof(struct tfm_msg_body_t)); + + tfm_event_init(&msg->ack_mtx, EVENT_STAT_WAITED); + msg->magic = TFM_MSG_MAGIC; + msg->service = service; + msg->handle = handle; + msg->caller_outvec = caller_outvec; + /* Get current partition id */ + if (ns_caller) { + msg->msg.client_id = tfm_nspm_get_current_client_id(); + } else { + msg->msg.client_id = tfm_spm_partition_get_running_partition_id_ext(); + } + + /* Copy contents */ + msg->msg.type = type; + + for (i = 0; i < in_len; i++) { + msg->msg.in_size[i] = invec[i].len; + msg->invec[i].base = invec[i].base; + } + + for (i = 0; i < out_len; i++) { + msg->msg.out_size[i] = outvec[i].len; + msg->outvec[i].base = outvec[i].base; + /* Out len is used to record the writed number, set 0 here again */ + msg->outvec[i].len = 0; + } + + /* Use message address as handle */ + msg->msg.handle = (psa_handle_t)msg; + + /* For connected handle, set rhandle to every message */ + if (handle != PSA_NULL_HANDLE) { + msg->msg.rhandle = tfm_spm_get_rhandle(service, handle); + } + + return msg; +} + +void tfm_spm_free_msg(struct tfm_msg_body_t *msg) +{ + tfm_pool_free(msg); +} + +int32_t tfm_spm_send_event(struct tfm_spm_service_t *service, + struct tfm_msg_body_t *msg) +{ + TFM_ASSERT(service); + TFM_ASSERT(msg); + + /* Enqueue message to service message queue */ + if (tfm_msg_enqueue(&service->msg_queue, msg) != IPC_SUCCESS) { + return IPC_ERROR_GENERIC; + } + + /* Messages put. Update signals */ + service->partition->signals |= service->service_db->signal; + + /* Save return value for blocked threads */ + tfm_event_owner_retval(&service->partition->signal_event, + service->partition->signals & + service->partition->signal_mask); + + /* Wake waiting thread up */ + tfm_event_signal(&service->partition->signal_event); + + tfm_event_wait(&msg->ack_mtx); + + return IPC_SUCCESS; +} + +/* SPM extend functions */ +uint32_t tfm_spm_partition_get_running_partition_id_ext(void) +{ + struct tfm_thrd_ctx *pth = tfm_thrd_curr_thread(); + struct spm_partition_desc_t *partition; + + partition = TFM_GET_CONTAINER_PTR(pth, struct spm_partition_desc_t, + sp_thrd); + return partition->static_data.partition_id; +} + +static struct tfm_thrd_ctx * +tfm_spm_partition_get_thread_info_ext(uint32_t partition_idx) +{ + return &g_spm_partition_db.partitions[partition_idx].sp_thrd; +} + +static uint32_t tfm_spm_partition_get_stack_size_ext(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx].stack_size; +} + +static uint32_t tfm_spm_partition_get_stack_limit_ext(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx].stack_limit; +} + +static uint32_t tfm_spm_partition_get_stack_base_ext(uint32_t partition_idx) +{ + return tfm_spm_partition_get_stack_limit_ext(partition_idx) + tfm_spm_partition_get_stack_size_ext(partition_idx); +} + +static tfm_thrd_func_t + tfm_spm_partition_get_init_func_ext(uint32_t partition_idx) +{ + return (tfm_thrd_func_t)(g_spm_partition_db.partitions[partition_idx]. + static_data.partition_init); +} + +static uint32_t tfm_spm_partition_get_priority_ext(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx].static_data. + partition_priority; +} + +/* Macros to pick linker symbols and allow references to sections in all level*/ +#define REGION_DECLARE_EXT(a, b, c) extern uint32_t REGION_NAME(a, b, c) + +REGION_DECLARE_EXT(Image$$, ARM_LIB_HEAP, $$ZI$$Base); +REGION_DECLARE_EXT(Image$$, ARM_LIB_HEAP, $$ZI$$Limit); +REGION_DECLARE_EXT(Image$$, ER_TFM_DATA, $$Base); +REGION_DECLARE_EXT(Image$$, ER_TFM_DATA, $$Limit); +REGION_DECLARE_EXT(Image$$, ER_TFM_DATA, $$ZI$$Base); +REGION_DECLARE_EXT(Image$$, ER_TFM_DATA, $$ZI$$Limit); +REGION_DECLARE_EXT(Image$$, TFM_SECURE_STACK, $$ZI$$Base); +REGION_DECLARE_EXT(Image$$, TFM_SECURE_STACK, $$ZI$$Limit); +REGION_DECLARE_EXT(Image$$, TFM_UNPRIV_SCRATCH, $$ZI$$Base); +REGION_DECLARE_EXT(Image$$, TFM_UNPRIV_SCRATCH, $$ZI$$Limit); + +/* + * \brief Check the memory whether in the given range. + * + * \param[in] buffer Pointer of memory reference + * \param[in] len Length of memory reference in bytes + * \param[in] base The base address + * \param[in] limit The limit address, the first byte of next + * area memory + * + * \retval IPC_SUCCESS Success + * \retval IPC_ERROR_MEMORY_CHECK Check failed + */ +static int32_t memory_check_range(const void *buffer, size_t len, + uintptr_t base, uintptr_t limit) +{ + if (((uintptr_t)buffer >= base) && + ((uintptr_t)((uint8_t *)buffer + len - 1) < limit)) { + return IPC_SUCCESS; + } + return IPC_ERROR_MEMORY_CHECK; +} + +/* FixMe: This is only valid for TFM LVL 1 now */ +int32_t tfm_memory_check(void *buffer, size_t len, int32_t ns_caller) +{ + uintptr_t base, limit; + + /* If len is zero, this indicates an empty buffer and base is ignored */ + if (len == 0) { + return IPC_SUCCESS; + } + + if (!buffer) { + return IPC_ERROR_BAD_PARAMETERS; + } + + if ((uintptr_t)buffer > (UINTPTR_MAX - len)) { + return IPC_ERROR_MEMORY_CHECK; + } + + if (ns_caller) { + base = (uintptr_t)NS_DATA_START; + limit = (uintptr_t)(NS_DATA_START + NS_DATA_SIZE); + if (memory_check_range(buffer, len, base, limit) == IPC_SUCCESS) { + return IPC_SUCCESS; + } + + base = (uintptr_t)NS_CODE_START; + limit = (uintptr_t)(NS_CODE_START + NS_CODE_SIZE); + if (memory_check_range(buffer, len, base, limit) == IPC_SUCCESS) { + return IPC_SUCCESS; + } + } else { + base = (uintptr_t)®ION_NAME(Image$$, ARM_LIB_HEAP, $$ZI$$Base); + limit = (uintptr_t)®ION_NAME(Image$$, ARM_LIB_HEAP, $$ZI$$Limit); + if (memory_check_range(buffer, len, base, limit) == IPC_SUCCESS) { + return IPC_SUCCESS; + } + + base = (uintptr_t)®ION_NAME(Image$$, ER_TFM_DATA, $$ZI$$Base); + limit = (uintptr_t)®ION_NAME(Image$$, ER_TFM_DATA, $$ZI$$Limit); + if (memory_check_range(buffer, len, base, limit) == IPC_SUCCESS) { + return IPC_SUCCESS; + } + + base = (uintptr_t)®ION_NAME(Image$$, ER_TFM_DATA, $$Base); + limit = (uintptr_t)®ION_NAME(Image$$, ER_TFM_DATA, $$Limit); + if (memory_check_range(buffer, len, base, limit) == IPC_SUCCESS) { + return IPC_SUCCESS; + } + + base = (uintptr_t)®ION_NAME(Image$$, TFM_SECURE_STACK, $$ZI$$Base); + limit = (uintptr_t)®ION_NAME(Image$$, TFM_SECURE_STACK, $$ZI$$Limit); + if (memory_check_range(buffer, len, base, limit) == IPC_SUCCESS) { + return IPC_SUCCESS; + } + + base = (uintptr_t)®ION_NAME(Image$$, TFM_UNPRIV_SCRATCH, $$ZI$$Base); + limit = (uintptr_t)®ION_NAME(Image$$, TFM_UNPRIV_SCRATCH, + $$ZI$$Limit); + if (memory_check_range(buffer, len, base, limit) == IPC_SUCCESS) { + return IPC_SUCCESS; + } + + base = (uintptr_t)S_CODE_START; + limit = (uintptr_t)(S_CODE_START + S_CODE_SIZE); + if (memory_check_range(buffer, len, base, limit) == IPC_SUCCESS) { + return IPC_SUCCESS; + } + } + + return IPC_ERROR_MEMORY_CHECK; +} + +/********************** SPM functions for thread mode ************************/ + +void tfm_spm_init(void) +{ + uint32_t i, num; + struct tfm_spm_ipc_partition_t *partition; + struct tfm_spm_service_t *service; + struct tfm_thrd_ctx *pth; + + tfm_pool_init(conn_handle_pool, + POOL_BUFFER_SIZE(conn_handle_pool), + sizeof(struct tfm_conn_handle_t), + TFM_CONN_HANDLE_MAX_NUM); + tfm_pool_init(spm_service_pool, POOL_BUFFER_SIZE(spm_service_pool), + sizeof(struct tfm_spm_service_t), + TFM_SPM_MAX_ROT_SERV_NUM); + tfm_pool_init(msg_db_pool, POOL_BUFFER_SIZE(msg_db_pool), + sizeof(struct tfm_msg_body_t), + TFM_MSG_QUEUE_MAX_MSG_NUM); + + /* Init partition first for it will be used when init service */ + for (i = 0; i < SPM_MAX_PARTITIONS; i++) { + if ((tfm_spm_partition_get_flags(i) & SPM_PART_FLAG_IPC) == 0) { + continue; + } + g_spm_ipc_partition[i].index = i; + g_spm_ipc_partition[i].id = tfm_spm_partition_get_partition_id(i); + tfm_event_init(&g_spm_ipc_partition[i].signal_event, EVENT_STAT_WAITED); + tfm_list_init(&g_spm_ipc_partition[i].service_list); + + pth = tfm_spm_partition_get_thread_info_ext(i); + if (!pth) { + tfm_panic(); + } + + tfm_thrd_init(pth, + tfm_spm_partition_get_init_func_ext(i), + NULL, + (uint8_t *)tfm_spm_partition_get_stack_base_ext(i), + (uint8_t *)tfm_spm_partition_get_stack_limit_ext(i)); + pth->prior = tfm_spm_partition_get_priority_ext(i); + + /* Kick off */ + if (tfm_thrd_start(pth) != THRD_SUCCESS) { + tfm_panic(); + } + } + + /* Init Service */ + num = sizeof(g_spm_service_db) / sizeof(struct tfm_spm_service_db_t); + for (i = 0; i < num; i++) { + partition = + tfm_spm_get_partition_by_id(g_spm_service_db[i].partition_id); + if (!partition) { + tfm_panic(); + } + service = (struct tfm_spm_service_t *)tfm_pool_alloc(spm_service_pool); + if (!service) { + tfm_panic(); + } + service->service_db = &g_spm_service_db[i]; + service->partition = partition; + tfm_list_init(&service->handle_list); + tfm_list_add_tail(&partition->service_list, &service->list); + } + + /* All thread inited.... trigger scheduler */ + tfm_thrd_activate_schedule(); +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_svcalls.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_svcalls.c new file mode 100644 index 00000000000..68d244af5b8 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_svcalls.c @@ -0,0 +1,976 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include +#include +#include +#include "psa_client.h" +#include "psa_service.h" +#include "tfm_svc.h" +#include "tfm_svcalls.h" +#include "tfm_thread.h" +#include "tfm_wait.h" +#include "tfm_utils.h" +#include "tfm_internal_defines.h" +#include "tfm_message_queue.h" +#include "tfm_spm.h" +#include "secure_utilities.h" +#include "tfm_api.h" +#include "tfm_secure_api.h" + +#define PSA_TIMEOUT_MASK PSA_BLOCK + +/************************* SVC handler for PSA Client APIs *******************/ + +uint32_t tfm_svcall_psa_framework_version(void) +{ + return PSA_FRAMEWORK_VERSION; +} + +uint32_t tfm_svcall_psa_version(uint32_t *args, int32_t ns_caller) +{ + uint32_t sid; + struct tfm_spm_service_t *service; + + TFM_ASSERT(args != NULL); + sid = (uint32_t)args[0]; + /* + * It should return PSA_VERSION_NONE if the RoT Service is not + * implemented. + */ + service = tfm_spm_get_service_by_sid(sid); + if (!service) { + return PSA_VERSION_NONE; + } + + /* + * It should return PSA_VERSION_NONE if the caller is not authorized + * to access the RoT Service. + */ + if (ns_caller && !service->service_db->non_secure_client) { + return PSA_VERSION_NONE; + } + + return service->service_db->minor_version; +} + +psa_handle_t tfm_svcall_psa_connect(uint32_t *args, int32_t ns_caller) +{ + uint32_t sid; + uint32_t minor_version; + struct tfm_spm_service_t *service; + struct tfm_msg_body_t *msg; + + TFM_ASSERT(args != NULL); + sid = (uint32_t)args[0]; + minor_version = (uint32_t)args[1]; + + /* It is a fatal error if the RoT Service does not exist on the platform */ + service = tfm_spm_get_service_by_sid(sid); + if (!service) { + tfm_panic(); + } + + /* + * It is a fatal error if the caller is not authorized to access the RoT + * Service. + */ + if (ns_caller && !service->service_db->non_secure_client) { + tfm_panic(); + } + + /* + * It is a fatal error if the version of the RoT Service requested is not + * supported on the platform. + */ + if (tfm_spm_check_client_version(service, minor_version) != IPC_SUCCESS) { + tfm_panic(); + } + + /* No input or output needed for connect message */ + msg = tfm_spm_create_msg(service, PSA_NULL_HANDLE, PSA_IPC_CONNECT, + ns_caller, NULL, 0, NULL, 0, NULL); + if (!msg) { + return PSA_NULL_HANDLE; + } + + /* + * Send message and wake up the SP who is waiting on message queue, + * and scheduler triggered + */ + tfm_spm_send_event(service, msg); + + return PSA_NULL_HANDLE; +} + +psa_status_t tfm_svcall_psa_call(uint32_t *args, int32_t ns_caller) +{ + psa_handle_t handle; + psa_invec *inptr, invecs[PSA_MAX_IOVEC]; + psa_outvec *outptr, outvecs[PSA_MAX_IOVEC]; + size_t in_num, out_num; + struct tfm_spm_service_t *service; + struct tfm_msg_body_t *msg; + int i; + + TFM_ASSERT(args != NULL); + handle = (psa_handle_t)args[0]; + if (!ns_caller) { + inptr = (psa_invec *)args[1]; + in_num = (size_t)args[2]; + outptr = (psa_outvec *)args[3]; + /* + * FixMe: 5th parameter is pushed at stack top before SVC; plus + * exception stacked contents, 5th parameter is now at 8th position + * in SVC handler. However, if thread mode applies FloatPoint, then + * FloatPoint context is pushed into stack and then 5th parameter + * will not be args[8]. + * Will refine it later. + */ + out_num = (size_t)args[8]; + } else { + /* + * FixMe: From non-secure caller, vec and len are composed into a new + * struct parameter. Need to extract them. + */ + if (tfm_memory_check((void *)args[1], sizeof(uint32_t), + ns_caller) != IPC_SUCCESS) { + tfm_panic(); + } + if (tfm_memory_check((void *)args[2], sizeof(uint32_t), + ns_caller) != IPC_SUCCESS) { + tfm_panic(); + } + + inptr = (psa_invec *)((psa_invec *)args[1])->base; + in_num = ((psa_invec *)args[1])->len; + outptr = (psa_outvec *)((psa_invec *)args[2])->base; + out_num = ((psa_invec *)args[2])->len; + } + + /* It is a fatal error if in_len + out_len > PSA_MAX_IOVEC. */ + if (in_num + out_num > PSA_MAX_IOVEC) { + tfm_panic(); + } + + /* It is a fatal error if an invalid handle was passed. */ + service = tfm_spm_get_service_by_handle(handle); + if (!service) { + /* FixMe: Need to implement one mechanism to resolve this failure. */ + tfm_panic(); + } + + /* It is a fatal error if an invalid memory reference was provide. */ + if (tfm_memory_check((void *)inptr, in_num * sizeof(psa_invec), + ns_caller) != IPC_SUCCESS) { + tfm_panic(); + } + if (tfm_memory_check((void *)outptr, out_num * sizeof(psa_outvec), + ns_caller) != IPC_SUCCESS) { + tfm_panic(); + } + + tfm_memset(invecs, 0, sizeof(invecs)); + tfm_memset(outvecs, 0, sizeof(outvecs)); + + /* Copy the address out to avoid TOCTOU attacks. */ + tfm_memcpy(invecs, inptr, in_num * sizeof(psa_invec)); + tfm_memcpy(outvecs, outptr, out_num * sizeof(psa_outvec)); + + /* + * It is a fatal error if an invalid payload memory reference + * was provided. + */ + for (i = 0; i < in_num; i++) { + if (tfm_memory_check((void *)invecs[i].base, invecs[i].len, + ns_caller) != IPC_SUCCESS) { + tfm_panic(); + } + } + for (i = 0; i < out_num; i++) { + if (tfm_memory_check(outvecs[i].base, outvecs[i].len, + ns_caller) != IPC_SUCCESS) { + tfm_panic(); + } + } + + /* + * FixMe: Need to check if the message is unrecognized by the RoT + * Service or incorrectly formatted. + */ + msg = tfm_spm_create_msg(service, handle, PSA_IPC_CALL, ns_caller, invecs, + in_num, outvecs, out_num, outptr); + if (!msg) { + /* FixMe: Need to implement one mechanism to resolve this failure. */ + tfm_panic(); + } + + /* + * Send message and wake up the SP who is waiting on message queue, + * and scheduler triggered + */ + if (tfm_spm_send_event(service, msg) != IPC_SUCCESS) { + /* FixMe: Need to refine failure process here. */ + tfm_panic(); + } + return PSA_SUCCESS; +} + +void tfm_svcall_psa_close(uint32_t *args, int32_t ns_caller) +{ + psa_handle_t handle; + struct tfm_spm_service_t *service; + struct tfm_msg_body_t *msg; + + TFM_ASSERT(args != NULL); + handle = args[0]; + /* It will have no effect if called with the NULL handle */ + if (handle == PSA_NULL_HANDLE) { + return; + } + + /* + * It is a fatal error if an invalid handle was provided that is not the + * null handle.. + */ + service = tfm_spm_get_service_by_handle(handle); + if (!service) { + /* FixMe: Need to implement one mechanism to resolve this failure. */ + tfm_panic(); + } + + /* No input or output needed for close message */ + msg = tfm_spm_create_msg(service, handle, PSA_IPC_DISCONNECT, ns_caller, + NULL, 0, NULL, 0, NULL); + if (!msg) { + /* FixMe: Need to implement one mechanism to resolve this failure. */ + return; + } + + /* + * Send message and wake up the SP who is waiting on message queue, + * and scheduler triggered + */ + tfm_spm_send_event(service, msg); +} + +/*********************** SVC handler for PSA Service APIs ********************/ + +/** + * \brief SVC handler for \ref psa_wait. + * + * \param[in] args Include all input arguments: + * signal_mask, timeout. + * + * \retval >0 At least one signal is asserted. + * \retval 0 No signals are asserted. This is only seen when + * a polling timeout is used. + */ +static psa_signal_t tfm_svcall_psa_wait(uint32_t *args) +{ + psa_signal_t signal_mask; + uint32_t timeout; + struct tfm_spm_ipc_partition_t *partition = NULL; + + TFM_ASSERT(args != NULL); + signal_mask = (psa_signal_t)args[0]; + timeout = args[1]; + + /* + * Timeout[30:0] are reserved for future use. + * SPM must ignore the value of RES. + */ + timeout &= PSA_TIMEOUT_MASK; + + partition = tfm_spm_get_running_partition(); + if (!partition) { + tfm_panic(); + } + + /* + * Expected signals are included in signal wait mask, ignored signals + * should not be set and affect caller thread status. Save this mask for + * further checking while signals are ready to be set. + */ + partition->signal_mask = signal_mask; + + /* + * tfm_event_wait() blocks the caller thread if no signals are available. + * In this case, the return value of this function is temporary set into + * runtime context. After new signal(s) are available, the return value + * is updated with the available signal(s) and blocked thread gets to run. + */ + if ((timeout == PSA_BLOCK) && ((partition->signals & signal_mask) == 0)) { + tfm_event_wait(&partition->signal_event); + } + + return partition->signals & signal_mask; +} + +/** + * \brief SVC handler for \ref psa_get. + * + * \param[in] args Include all input arguments: signal, msg. + * + * \retval PSA_SUCCESS Success, *msg will contain the delivered + * message. + * \retval PSA_ERR_NOMSG Message could not be delivered. + * \retval "Does not return" The call is invalid because one or more of the + * following are true: + * \arg signal has more than a single bit set. + * \arg signal does not correspond to a RoT Service. + * \arg The RoT Service signal is not currently + * asserted. + * \arg The msg pointer provided is not a valid memory + * reference. + */ +static psa_status_t tfm_svcall_psa_get(uint32_t *args) +{ + psa_signal_t signal; + psa_msg_t *msg = NULL; + struct tfm_spm_service_t *service = NULL; + struct tfm_msg_body_t *tmp_msg = NULL; + struct tfm_spm_ipc_partition_t *partition = NULL; + + TFM_ASSERT(args != NULL); + signal = (psa_signal_t)args[0]; + msg = (psa_msg_t *)args[1]; + + /* + * Only one message could be retrieved every time for psa_get(). It is a + * fatal error if the input signal has more than a signal bit set. + */ + if (tfm_bitcount(signal) != 1) { + tfm_panic(); + } + + /* + * It is a fatal error if the input msg pointer is not a valid memory + * reference. + */ + if (tfm_memory_check((void *)msg, sizeof(psa_msg_t), + false) != IPC_SUCCESS) { + tfm_panic(); + } + + partition = tfm_spm_get_running_partition(); + if (!partition) { + tfm_panic(); + } + + /* + * It is a fatal error if the caller call psa_get() when no message has + * been set. The caller must call this function after a RoT Service signal + * is returned by psa_wait(). + */ + if (partition->signals == 0) { + tfm_panic(); + } + + /* + * It is a fatal error if the RoT Service signal is not currently asserted. + */ + if ((partition->signals & signal) == 0) { + tfm_panic(); + } + + /* + * Get Rot service by signal from partition. It is a fatal error if geting + * failed which mean the input signal is not correspond to a RoT service. + */ + service = tfm_spm_get_service_by_signal(partition, signal); + if (!service) { + tfm_panic(); + } + + tmp_msg = tfm_msg_dequeue(&service->msg_queue); + if (!tmp_msg) { + return PSA_ERR_NOMSG; + } + + tfm_memcpy(msg, &tmp_msg->msg, sizeof(psa_msg_t)); + + /* + * There may be mutiple messages for this RoT Service signal, do not clear + * its mask until no remaining message. + */ + if (tfm_msg_queue_is_empty(&service->msg_queue)) { + partition->signals &= ~signal; + } + + return PSA_SUCCESS; +} + +/** + * \brief SVC handler for \ref psa_set_rhandle. + * + * \param[in] args Include all input arguments: + * msg_handle, rhandle. + * + * \retval void Success, rhandle will be provided with all + * subsequent messages delivered on this + * connection. + * \retval "Does not return" msg_handle is invalid. + */ +static void tfm_svcall_psa_set_rhandle(uint32_t *args) +{ + psa_handle_t msg_handle; + void *rhandle = NULL; + struct tfm_msg_body_t *msg = NULL; + + TFM_ASSERT(args != NULL); + msg_handle = (psa_handle_t)args[0]; + rhandle = (void *)args[1]; + + /* It is a fatal error if message handle is invalid */ + msg = tfm_spm_get_msg_from_handle(msg_handle); + if (!msg) { + tfm_panic(); + } + + /* + * Connection handle is not created while SP is processing PSA_IPC_CONNECT + * message. Store reverse handle temporarily and re-set it after the + * connection created. + */ + if (msg->handle != PSA_NULL_HANDLE) { + tfm_spm_set_rhandle(msg->service, msg->handle, rhandle); + } else { + msg->msg.rhandle = rhandle; + } +} + +/** + * \brief SVC handler for \ref psa_read. + * + * \param[in] args Include all input arguments: + * msg_handle, invec_idx, buffer, num_bytes. + * + * \retval >0 Number of bytes copied. + * \retval 0 There was no remaining data in this input + * vector. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg msg_handle is invalid. + * \arg msg_handle does not refer to a + * \ref PSA_IPC_CALL message. + * \arg invec_idx is equal to or greater than + * \ref PSA_MAX_IOVEC. + * \arg the memory reference for buffer is invalid or + * not writable. + */ +static size_t tfm_svcall_psa_read(uint32_t *args) +{ + psa_handle_t msg_handle; + uint32_t invec_idx; + void *buffer = NULL; + size_t num_bytes; + size_t bytes; + struct tfm_msg_body_t *msg = NULL; + + TFM_ASSERT(args != NULL); + msg_handle = (psa_handle_t)args[0]; + invec_idx = args[1]; + buffer = (void *)args[2]; + num_bytes = (size_t)args[3]; + + /* It is a fatal error if message handle is invalid */ + msg = tfm_spm_get_msg_from_handle(msg_handle); + if (!msg) { + tfm_panic(); + } + + /* + * It is a fatal error if message handle does not refer to a PSA_IPC_CALL + * message + */ + if (msg->msg.type != PSA_IPC_CALL) { + tfm_panic(); + } + + /* + * It is a fatal error if invec_idx is equal to or greater than + * PSA_MAX_IOVEC + */ + if (invec_idx >= PSA_MAX_IOVEC) { + tfm_panic(); + } + + /* There was no remaining data in this input vector */ + if (msg->msg.in_size[invec_idx] == 0) { + return 0; + } + + /* + * It is a fatal error if the memory reference for buffer is invalid or + * not writable + */ + /* FixMe: write permission check to be added */ + if (tfm_memory_check(buffer, num_bytes, false) != IPC_SUCCESS) { + tfm_panic(); + } + + bytes = num_bytes > msg->msg.in_size[invec_idx] ? + msg->msg.in_size[invec_idx] : num_bytes; + + tfm_memcpy(buffer, msg->invec[invec_idx].base, bytes); + + /* There maybe some remaining data */ + msg->invec[invec_idx].base += bytes; + msg->msg.in_size[invec_idx] -= bytes; + + return bytes; +} + +/** + * \brief SVC handler for \ref psa_skip. + * + * \param[in] args Include all input arguments: + * msg_handle, invec_idx, num_bytes. + * + * \retval >0 Number of bytes skipped. + * \retval 0 There was no remaining data in this input + * vector. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg msg_handle is invalid. + * \arg msg_handle does not refer to a + * \ref PSA_IPC_CALL message. + * \arg invec_idx is equal to or greater than + * \ref PSA_MAX_IOVEC. + */ +static size_t tfm_svcall_psa_skip(uint32_t *args) +{ + psa_handle_t msg_handle; + uint32_t invec_idx; + size_t num_bytes; + struct tfm_msg_body_t *msg = NULL; + + TFM_ASSERT(args != NULL); + msg_handle = (psa_handle_t)args[0]; + invec_idx = args[1]; + num_bytes = (size_t)args[2]; + + /* It is a fatal error if message handle is invalid */ + msg = tfm_spm_get_msg_from_handle(msg_handle); + if (!msg) { + tfm_panic(); + } + + /* + * It is a fatal error if message handle does not refer to a PSA_IPC_CALL + * message + */ + if (msg->msg.type != PSA_IPC_CALL) { + tfm_panic(); + } + + /* + * It is a fatal error if invec_idx is equal to or greater than + * PSA_MAX_IOVEC + */ + if (invec_idx >= PSA_MAX_IOVEC) { + tfm_panic(); + } + + /* There was no remaining data in this input vector */ + if (msg->msg.in_size[invec_idx] == 0) { + return 0; + } + + /* + * If num_bytes is greater than the remaining size of the input vector then + * the remaining size of the input vector is used. + */ + if (num_bytes > msg->msg.in_size[invec_idx]) { + num_bytes = msg->msg.in_size[invec_idx]; + } + + /* There maybe some remaining data */ + msg->invec[invec_idx].base += num_bytes; + msg->msg.in_size[invec_idx] -= num_bytes; + + return num_bytes; +} + +/** + * \brief SVC handler for \ref psa_write. + * + * \param[in] args Include all input arguments: + * msg_handle, outvec_idx, buffer, num_bytes. + * + * \retval void Success + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg msg_handle is invalid. + * \arg msg_handle does not refer to a + * \ref PSA_IPC_CALL message. + * \arg outvec_idx is equal to or greater than + * \ref PSA_MAX_IOVEC. + * \arg The memory reference for buffer is invalid. + * \arg The call attempts to write data past the end + * of the client output vector. + */ +static void tfm_svcall_psa_write(uint32_t *args) +{ + psa_handle_t msg_handle; + uint32_t outvec_idx; + void *buffer = NULL; + size_t num_bytes; + struct tfm_msg_body_t *msg = NULL; + + TFM_ASSERT(args != NULL); + msg_handle = (psa_handle_t)args[0]; + outvec_idx = args[1]; + buffer = (void *)args[2]; + num_bytes = (size_t)args[3]; + + /* It is a fatal error if message handle is invalid */ + msg = tfm_spm_get_msg_from_handle(msg_handle); + if (!msg) { + tfm_panic(); + } + + /* + * It is a fatal error if message handle does not refer to a PSA_IPC_CALL + * message + */ + if (msg->msg.type != PSA_IPC_CALL) { + tfm_panic(); + } + + /* + * It is a fatal error if outvec_idx is equal to or greater than + * PSA_MAX_IOVEC + */ + if (outvec_idx >= PSA_MAX_IOVEC) { + tfm_panic(); + } + + /* + * It is a fatal error if the call attempts to write data past the end of + * the client output vector + */ + if (num_bytes > msg->msg.out_size[outvec_idx] - + msg->outvec[outvec_idx].len) { + tfm_panic(); + } + + /* It is a fatal error if the memory reference for buffer is valid */ + if (tfm_memory_check(buffer, num_bytes, false) != IPC_SUCCESS) { + tfm_panic(); + } + + tfm_memcpy(msg->outvec[outvec_idx].base + msg->outvec[outvec_idx].len, + buffer, num_bytes); + + /* Update the write number */ + msg->outvec[outvec_idx].len += num_bytes; +} + +static void update_caller_outvec_len(struct tfm_msg_body_t *msg) +{ + int32_t i = 0; + + /* + * FixeMe: abstract these part into dedicated functions to avoid + * accessing thread context in psa layer + */ + TFM_ASSERT(msg->ack_mtx.owner->status == THRD_STAT_BLOCK); + + while (msg->msg.out_size[i] != 0) { + TFM_ASSERT(msg->caller_outvec[i].base == msg->outvec[i].base); + msg->caller_outvec[i].len = msg->outvec[i].len; + i++; + } +} +/** + * \brief SVC handler for \ref psa_reply. + * + * \param[in] args Include all input arguments: + * msg_handle, status. + * + * \retval void Success. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg msg_handle is invalid. + * \arg An invalid status code is specified for the + * type of message. + */ +static void tfm_svcall_psa_reply(uint32_t *args) +{ + psa_handle_t msg_handle; + psa_status_t status; + struct tfm_spm_service_t *service = NULL; + struct tfm_msg_body_t *msg = NULL; + psa_handle_t connect_handle; + int32_t ret = PSA_SUCCESS; + + TFM_ASSERT(args != NULL); + msg_handle = (psa_handle_t)args[0]; + status = (psa_status_t)args[1]; + + /* It is a fatal error if message handle is invalid */ + msg = tfm_spm_get_msg_from_handle(msg_handle); + if (!msg) { + tfm_panic(); + } + + /* + * RoT Service information is needed in this function, stored it in message + * body structure. Only two parameters are passed in this function: handle + * and status, so it is useful and simply to do like this. + */ + service = msg->service; + if (!service) { + tfm_panic(); + } + + /* + * Three type of message are passed in this function: CONNECT, CALL, + * DISCONNECT. It needs to process differently for each type. + */ + switch (msg->msg.type) { + case PSA_IPC_CONNECT: + /* + * Reply to PSA_IPC_CONNECT message. Connect handle is created if the + * input status is PSA_SUCCESS. Others return values are based on the + * input status. + */ + if (status == PSA_SUCCESS) { + connect_handle = tfm_spm_create_conn_handle(service); + if (connect_handle == PSA_NULL_HANDLE) { + tfm_panic(); + } + ret = connect_handle; + + /* Set reverse handle after connection created if needed. */ + if (msg->msg.rhandle) { + tfm_spm_set_rhandle(service, connect_handle, msg->msg.rhandle); + } + } else if (status == PSA_CONNECTION_REFUSED) { + ret = PSA_CONNECTION_REFUSED; + } else if (status == PSA_CONNECTION_BUSY) { + ret = PSA_CONNECTION_BUSY; + } else { + tfm_panic(); + } + break; + case PSA_IPC_CALL: + /* Reply to PSA_IPC_CALL message. Return values are based on status */ + if (status == PSA_SUCCESS) { + ret = PSA_SUCCESS; + } else if (status == PSA_DROP_CONNECTION) { + ret = PSA_DROP_CONNECTION; + } else if ((status >= (INT32_MIN + 1)) && + (status <= (INT32_MIN + 127))) { + tfm_panic(); + } else if ((status >= (INT32_MIN + 128)) && (status <= -1)) { + ret = status; + } else if ((status >= 1) && (status <= INT32_MAX)) { + ret = status; + } else { + tfm_panic(); + } + + /* + * The total number of bytes written to a single parameter must be + * reported to the client by updating the len member of the psa_outvec + * structure for the parameter before returning from psa_call(). + */ + update_caller_outvec_len(msg); + break; + case PSA_IPC_DISCONNECT: + /* Service handle is not used anymore */ + tfm_spm_free_conn_handle(service, msg->handle); + + /* + * If the message type is PSA_IPC_DISCONNECT, then the status code is + * ignored + */ + break; + default: + tfm_panic(); + } + + /* Save return value for blocked threads */ + tfm_event_owner_retval(&msg->ack_mtx, ret); + + /* Wake waiting thread up */ + tfm_event_signal(&msg->ack_mtx); + + /* Message should not be unsed anymore */ + tfm_spm_free_msg(msg); +} + +/** + * \brief SVC handler for \ref psa_notify. + * + * \param[in] args Include all input arguments: partition_id. + * + * \retval void Success. + * \retval "Does not return" partition_id does not correspond to a Secure + * Partition. + */ +static void tfm_svcall_psa_notify(uint32_t *args) +{ + int32_t partition_id; + struct tfm_spm_ipc_partition_t *partition = NULL; + + TFM_ASSERT(args != NULL); + partition_id = (int32_t)args[0]; + + /* + * The value of partition_id must be greater than zero as the target of + * notification must be a Secure Partition, providing a Non-secure + * Partition ID is a fatal error. + */ + if (!TFM_CLIENT_ID_IS_S(partition_id)) { + tfm_panic(); + } + + /* + * It is a fatal error if partition_id does not correspond to a Secure + * Partition. + */ + partition = tfm_spm_get_partition_by_id(partition_id); + if (!partition) { + tfm_panic(); + } + + partition->signals |= PSA_DOORBELL; + + /* + * The target partition may be blocked with waiting for signals after + * called psa_wait(). Set the return value with the available signals + * before wake it up with tfm_event_signal(). + */ + tfm_event_owner_retval(&partition->signal_event, + partition->signals & partition->signal_mask); + + /* Wake waiting thread up */ + tfm_event_signal(&partition->signal_event); +} + +/** + * \brief SVC handler for \ref psa_clear. + * + * \retval void Success. + * \retval "Does not return" The Secure Partition's doorbell signal is not + * currently asserted. + */ +static void tfm_svcall_psa_clear(uint32_t *args) +{ + struct tfm_spm_ipc_partition_t *partition = NULL; + + partition = tfm_spm_get_running_partition(); + if (!partition) { + tfm_panic(); + } + + /* + * It is a fatal error if the Secure Partition's doorbell signal is not + * currently asserted. + */ + if ((partition->signals & PSA_DOORBELL) == 0) { + tfm_panic(); + } + partition->signals &= ~PSA_DOORBELL; +} + +/** + * \brief SVC handler for \ref psa_eoi. + * + * \param[in] args Include all input arguments: irq_signal. + * + * \retval void Success. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg irq_signal is not an interrupt signal. + * \arg irq_signal indicates more than one signal. + * \arg irq_signal is not currently asserted. + */ +static void tfm_svcall_psa_eoi(uint32_t *args) +{ + psa_signal_t irq_signal; + struct tfm_spm_ipc_partition_t *partition = NULL; + + TFM_ASSERT(args != NULL); + irq_signal = (psa_signal_t)args[0]; + + partition = tfm_spm_get_running_partition(); + if (!partition) { + tfm_panic(); + } + + /* + * FixMe: It is a fatal error if passed signal is not an interrupt signal. + */ + + /* It is a fatal error if passed signal indicates more than one signals. */ + if (tfm_bitcount(partition->signals) != 1) { + tfm_panic(); + } + + /* It is a fatal error if passed signal is not currently asserted */ + if ((partition->signals & irq_signal) == 0) { + tfm_panic(); + } + + partition->signals &= ~irq_signal; + + /* FixMe: re-enable interrupt */ +} + +int32_t SVC_Handler_IPC(tfm_svc_number_t svc_num, uint32_t *ctx) +{ + switch (svc_num) { + case TFM_SVC_SCHEDULE: + tfm_thrd_activate_schedule(); + break; + case TFM_SVC_PSA_FRAMEWORK_VERSION: + return tfm_svcall_psa_framework_version(); + case TFM_SVC_PSA_VERSION: + return tfm_svcall_psa_version(ctx, 0); + case TFM_SVC_PSA_CONNECT: + return tfm_svcall_psa_connect(ctx, 0); + case TFM_SVC_PSA_CALL: + return tfm_svcall_psa_call(ctx, 0); + case TFM_SVC_PSA_CLOSE: + tfm_svcall_psa_close(ctx, 0); + break; + case TFM_SVC_PSA_WAIT: + return tfm_svcall_psa_wait(ctx); + case TFM_SVC_PSA_GET: + return tfm_svcall_psa_get(ctx); + case TFM_SVC_PSA_SET_RHANDLE: + tfm_svcall_psa_set_rhandle(ctx); + break; + case TFM_SVC_PSA_READ: + return tfm_svcall_psa_read(ctx); + case TFM_SVC_PSA_SKIP: + return tfm_svcall_psa_skip(ctx); + case TFM_SVC_PSA_WRITE: + tfm_svcall_psa_write(ctx); + break; + case TFM_SVC_PSA_REPLY: + tfm_svcall_psa_reply(ctx); + break; + case TFM_SVC_PSA_NOTIFY: + tfm_svcall_psa_notify(ctx); + break; + case TFM_SVC_PSA_CLEAR: + tfm_svcall_psa_clear(ctx); + break; + case TFM_SVC_PSA_EOI: + tfm_svcall_psa_eoi(ctx); + break; + default: + break; + } + return PSA_SUCCESS; +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_thread.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_thread.c new file mode 100644 index 00000000000..39f42ee2347 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_thread.c @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include +#include "tfm_arch_v8m.h" +#include "tfm_thread.h" +#include "tfm_utils.h" +#include "secure_utilities.h" + +/* Force ZERO in case ZI(bss) clear is missing */ +static struct tfm_thrd_ctx *p_thrd_head = NULL; +static struct tfm_thrd_ctx *p_runn_head = NULL; +static struct tfm_thrd_ctx *p_curr_thrd = NULL; + +/* Define Macro to fetch global to support future expansion (PERCPU e.g.) */ +#define LIST_HEAD p_thrd_head +#define RUNN_HEAD p_runn_head +#define CURR_THRD p_curr_thrd + +/* To get next running thread for scheduler */ +struct tfm_thrd_ctx *tfm_thrd_next_thread(void) +{ + struct tfm_thrd_ctx *pth = RUNN_HEAD; + + /* + * First RUNNING thread has highest priority since threads are sorted with + * priority. + */ + while (pth && pth->status != THRD_STAT_RUNNING) { + pth = pth->next; + } + + return pth; +} + +/* To get current thread for caller */ +struct tfm_thrd_ctx *tfm_thrd_curr_thread() +{ + return CURR_THRD; +} + +/* Insert a new thread into list by descending priority (Highest at head) */ +static void insert_by_prior(struct tfm_thrd_ctx **head, + struct tfm_thrd_ctx *node) +{ + if (*head == NULL || (node->prior <= (*head)->prior)) { + node->next = *head; + *head = node; + } else { + struct tfm_thrd_ctx *iter = *head; + + while (iter->next && (node->prior > iter->next->prior)) { + iter = iter->next; + } + node->next = iter->next; + iter->next = node; + } +} + +/* + * Set first running thread as head to reduce enumerate + * depth while searching for a first running thread. + */ +static void update_running_head(struct tfm_thrd_ctx **runn, + struct tfm_thrd_ctx *node) +{ + if ((node->status == THRD_STAT_RUNNING) && + (*runn == NULL || (node->prior <= (*runn)->prior))) { + *runn = node; + } else { + *runn = tfm_thrd_next_thread(); + } +} + +/* Set context members only. No validation here */ +void tfm_thrd_init(struct tfm_thrd_ctx *pth, + tfm_thrd_func_t pfn, void *param, + uint8_t *sp_base, uint8_t *sp_top) +{ + pth->prior = THRD_PRIOR_MEDIUM; + pth->status = THRD_STAT_CREATING; + pth->pfn = pfn; + pth->param = param; + pth->sp_base = sp_base; + pth->sp_top = sp_top; +} + +uint32_t tfm_thrd_start(struct tfm_thrd_ctx *pth) +{ + /* Validate parameters before really start */ + if ((pth->status != THRD_STAT_CREATING) || + (pth->pfn == NULL) || + (pth->sp_base == NULL) || + (pth->sp_top == NULL)) { + return THRD_ERR_INVALID_PARAM; + } + + /* Thread management runs in handler mode; set context for thread mode. */ + tfm_initialize_context(&pth->state_ctx, + (uint32_t)pth->param, (uint32_t)pth->pfn, + (uint32_t)pth->sp_base, (uint32_t)pth->sp_top); + + /* Insert a new thread with priority */ + insert_by_prior(&LIST_HEAD, pth); + + /* Mark it as RUNNING after insertion */ + tfm_thrd_set_status(pth, THRD_STAT_RUNNING); + + return THRD_SUCCESS; +} + +void tfm_thrd_set_status(struct tfm_thrd_ctx *pth, uint32_t new_status) +{ + TFM_ASSERT(pth != NULL && new_status < THRD_STAT_INVALID); + + pth->status = new_status; + update_running_head(&RUNN_HEAD, pth); +} + +/* + * TEMP WORKAROUND: The caller function who called thread module init needs to + * be returned. The caller is not a thread. Create a dummy IDLE thread to + * collect caller context; and schedule back to the caller with this context + * after all other real threads blocked. + * + * This WORKAROUND needs to be removed after IPC NSPM takes place. + */ +#define DUMMY_IDLE_TAG 0xDEEDDEED +static uint8_t idle_stack[32] __attribute__((aligned(8))); +static struct tfm_thrd_ctx idle_thread; +static struct tfm_thrd_ctx *init_idle_thread(struct tfm_thrd_ctx *pth) +{ + /* + * IDLE thread is a thread with the lowest priority. + * It gets scheduled after all other higher priority threads get blocked. + * The entry of IDLE thread is a dummy and has no mean. + */ + tfm_thrd_init(pth, (tfm_thrd_func_t)DUMMY_IDLE_TAG, NULL, + (uint8_t *)&idle_stack[32], (uint8_t *)idle_stack); + tfm_thrd_priority(pth, THRD_PRIOR_LOWEST); + tfm_thrd_start(pth); + return pth; +} + +/* Scheduling won't happen immediately but after the exception returns */ +void tfm_thrd_activate_schedule(void) +{ + /* + * The current thread can be NULL only when initializing. Create the IDLE + * thread and set it as the current thread to collect caller context. + */ + if (CURR_THRD == NULL) { + CURR_THRD = init_idle_thread(&idle_thread); + } + + tfm_trigger_pendsv(); +} + +/* Remove current thread out of the schedulable list */ +void tfm_thrd_do_exit(void) +{ + CURR_THRD->status = THRD_STAT_DETACH; + tfm_trigger_pendsv(); +} + +void tfm_thrd_context_switch(struct tfm_state_context_ext *ctxb, + struct tfm_thrd_ctx *prev, + struct tfm_thrd_ctx *next) +{ + /* Update latest context into the current thread context */ + tfm_memcpy(&prev->state_ctx.ctxb, ctxb, sizeof(*ctxb)); + /* Update background context with next thread's context */ + tfm_memcpy(ctxb, &next->state_ctx.ctxb, sizeof(next->state_ctx.ctxb)); + /* Set current thread indicator with next thread */ + CURR_THRD = next; +} + +/* + * This function is a reference implementation for PendSV handler in + * isolation level 1. More jobs (sandboxing e.g.) need to be done while + * scheduling in other isolation levels. + */ +void tfm_pendsv_do_schedule(struct tfm_state_context_ext *ctxb) +{ + struct tfm_thrd_ctx *pth = tfm_thrd_next_thread(); + + /* Swith context if another thread ready to run */ + if (pth && pth != CURR_THRD) { + tfm_thrd_context_switch(ctxb, CURR_THRD, pth); + } +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_utils.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_utils.c new file mode 100644 index 00000000000..1586633a742 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_utils.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include +#include "tfm_utils.h" + +void tfm_panic(void) +{ + while (1) + ; +} + +int32_t tfm_bitcount(uint32_t n) +{ + int32_t count = 0; + uint8_t tmp; + + while (n) { + tmp = n & 0xFF; + while (tmp) { + count += tmp & 0x1; + tmp >>= 1; + } + n >>= 8; + } + + return count; +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_wait.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_wait.c new file mode 100644 index 00000000000..814ec89469c --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/ipc/tfm_wait.c @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include +#include "tfm_arch_v8m.h" +#include "tfm_thread.h" +#include "tfm_utils.h" +#include "tfm_wait.h" + +void tfm_event_wait(struct tfm_event_ctx *pevt) +{ + struct tfm_thrd_ctx *curr_thrd = tfm_thrd_curr_thread(); + + TFM_ASSERT(pevt && pevt->magic == EVENT_MAGIC); + + if (pevt->status == EVENT_STAT_WAITED) { + pevt->owner = curr_thrd; + pevt->retval = TFM_STATE_1ST_ARG(&pevt->owner->state_ctx); + tfm_thrd_set_status(pevt->owner, THRD_STAT_BLOCK); + tfm_thrd_activate_schedule(); + } + + pevt->status = EVENT_STAT_WAITED; +} + +/* Peek the status to see if caller would block. */ +uint32_t tfm_event_peek(struct tfm_event_ctx *pevt) +{ + TFM_ASSERT(pevt && pevt->magic == EVENT_MAGIC); + + return pevt->status; +} + +void tfm_event_signal(struct tfm_event_ctx *pevt) +{ + TFM_ASSERT(pevt && pevt->magic == EVENT_MAGIC); + + pevt->status = EVENT_STAT_SIGNALED; + + /* + * Wake the blocked owner up and keep the status as EVENT_STAT_WAITED + * if there is an owner. Or the second event wait caller will return + * without block since status is EVENT_STAT_SIGNALED. + */ + if (pevt->owner && pevt->owner->status == THRD_STAT_BLOCK) { + tfm_thrd_set_status(pevt->owner, THRD_STAT_RUNNING); + tfm_thrd_set_retval(pevt->owner, pevt->retval); + pevt->status = EVENT_STAT_WAITED; + tfm_thrd_activate_schedule(); + } +} + +void tfm_event_owner_retval(struct tfm_event_ctx *pmtx, uint32_t retval) +{ + TFM_ASSERT(pmtx && pmtx->magic == EVENT_MAGIC); + + pmtx->retval = retval; +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/secure_utilities.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/secure_utilities.h new file mode 100644 index 00000000000..d35cdc7de27 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/secure_utilities.h @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __SECURE_UTILITIES_H__ +#define __SECURE_UTILITIES_H__ + +#include "cmsis_compiler.h" +#include "tfm_svc.h" +#include "string.h" + +#define EXC_RETURN_INDICATOR (0xF << 28) +#define EXC_RETURN_SECURITY_STACK_STATUS_MASK (0x3 << 5) +#define EXC_RETURN_SECURE_STACK (1 << 6) +#define EXC_RETURN_FPU_FRAME_BASIC (1 << 4) +#define EXC_RETURN_MODE_THREAD (1 << 3) +#define EXC_RETURN_STACK_PROCESS (1 << 2) +#define EXC_RETURN_EXC_SECURE (1) + +#define EXC_NUM_THREAD_MODE (0) +#define EXC_NUM_SVCALL (11) +#define EXC_NUM_PENDSV (14) +#define EXC_NUM_SYSTICK (15) + +#define printf(...) + +/* Disable NS exceptions by setting NS PRIMASK to 1 */ +#define TFM_NS_EXC_DISABLE() __TZ_set_PRIMASK_NS(1) +/* Enable NS exceptions by setting NS PRIMASK to 0 */ +#define TFM_NS_EXC_ENABLE() __TZ_set_PRIMASK_NS(0) + +struct tfm_exc_stack_t { + uint32_t R0; + uint32_t R1; + uint32_t R2; + uint32_t R3; + uint32_t R12; + uint32_t LR; + uint32_t RetAddr; + uint32_t XPSR; +}; + +#ifdef TFM_CORE_DEBUG +#define LOG_MSG_HDLR(MSG) printf("[Sec Handler] %s\r\n", MSG) +#else +/* FixMe: redirect to secure log area */ +#define LOG_MSG_HDLR(MSG) printf("[Sec Handler] %s\r\n", MSG) +#endif + +#define LOG_MSG_THR(MSG) \ + __ASM("MOV r0, %0\n" \ + "SVC %1\n" \ + : : "r" (MSG), "I" (TFM_SVC_PRINT)) + +#define LOG_MSG(MSG) \ + do { \ + if (__get_active_exc_num()) { \ + LOG_MSG_HDLR(MSG); \ + } else { \ + LOG_MSG_THR(MSG); \ + } \ + } while (0) + +#ifdef TFM_CORE_DEBUG +#define ERROR_MSG(MSG) printf("[Sec Error] %s\r\n", MSG) +#else +/* FixMe: redirect to secure log area */ +#define ERROR_MSG(MSG) printf("[Sec Error] %s\r\n", MSG) +#endif + +/** + * \brief Get Link Register + * \details Returns the value of the Link Register (LR) + * \return LR value + */ + +__attribute__ ((always_inline)) __STATIC_INLINE uint32_t __get_LR(void) +{ + register uint32_t result; + + __ASM volatile ("MOV %0, LR\n" : "=r" (result)); + return result; +} + +__attribute__ ((always_inline)) +__STATIC_INLINE uint32_t __get_active_exc_num(void) +{ + IPSR_Type IPSR; + + /* if non-zero, exception is active. NOT banked S/NS */ + IPSR.w = __get_IPSR(); + return IPSR.b.ISR; +} + +__attribute__ ((always_inline)) +__STATIC_INLINE void __set_CONTROL_SPSEL(int32_t SPSEL) +{ + CONTROL_Type ctrl; + + ctrl.w = __get_CONTROL(); + ctrl.b.SPSEL = SPSEL; + __set_CONTROL(ctrl.w); + __asm("ISB"); +} + +/* FIXME: The following functions are wrappers around standard C library + * functions: memcpy, memcmp, memset + * In long term standard C library might be removed from TF-M project or + * replaced with a secure implementation due to security concerns. + */ +__attribute__ ((always_inline)) __STATIC_INLINE +void tfm_memcpy(void *dest, const void *src, uint32_t size) +{ + memcpy(dest, src, size); +} + +__attribute__ ((always_inline)) __STATIC_INLINE +int32_t tfm_memcmp(const void * ptr1, const void * ptr2, size_t num) +{ + return (memcmp(ptr1, ptr2, num)); +} + +__attribute__ ((always_inline)) __STATIC_INLINE +void * tfm_memset(void * ptr, int value, size_t num) +{ + return (memset(ptr, value, num)); +} + +#endif /* __SECURE_UTILITIES_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_boot_data.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_boot_data.c new file mode 100644 index 00000000000..cad2b70b898 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_boot_data.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include "bl2/include/tfm_boot_status.h" +#include "secure_utilities.h" +#include "tfm_internal.h" +#include "tfm_api.h" +#include "flash_layout.h" +#include "secure_fw/spm/spm_api.h" + +/*! + * \def BOOT_DATA_VALID + * + * \brief Indicates that shared data between bootloader and runtime firmware was + * passed the sanity check with success. + */ +#define BOOT_DATA_VALID (1u) + +/*! + * \def BOOT_DATA_INVALID + * + * \brief Indicates that shared data between bootloader and runtime firmware was + * failed on sanity check. + */ +#define BOOT_DATA_INVALID (0u) + +/*! + * \var is_boot_data_valid + * + * \brief Indicates the status of shared data between bootloader and runtime + * firmware + */ +static uint32_t is_boot_data_valid = BOOT_DATA_INVALID; + +void tfm_core_validate_boot_data(void) +{ + struct shared_data_tlv_header *tlv_header; + + tlv_header = (struct shared_data_tlv_header *)BOOT_TFM_SHARED_DATA_BASE; + + /* FixMe: Enhance sanity check of shared memory area, it might be invalid: + * - temporal exposure of RAM to non-secure actors + * - mismatched addresses + * - version mismatch between bootloader and runtime binary + * - etc. + */ + if (tlv_header->tlv_magic == SHARED_DATA_TLV_INFO_MAGIC) { + is_boot_data_valid = BOOT_DATA_VALID; + } +} + +void tfm_core_get_boot_data_handler(uint32_t args[]) +{ + uint8_t tlv_major = (uint8_t)args[0]; + uint8_t *ptr = (uint8_t *)args[1]; + uint16_t buf_size = (uint16_t)args[2]; + uint8_t *buf_start = ptr; + uint32_t running_partition_idx = + tfm_spm_partition_get_running_partition_idx(); + struct shared_data_tlv_header *tlv_header; + struct shared_data_tlv_entry *tlv_entry; + uintptr_t tlv_end, offset; + uint32_t res; + + /* Make sure that the output pointer points to a memory area that is owned + * by the partition + */ + res = tfm_core_check_buffer_access(running_partition_idx, + (void*)buf_start, + buf_size, + 2); + if (!res) { + /* Not in accessible range, return error */ + args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + + /* FixMe: Check whether caller has access right to given tlv_major_type */ + + if (is_boot_data_valid != BOOT_DATA_VALID) { + args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + + /* Get the boundaries of TLV section */ + tlv_header = (struct shared_data_tlv_header *)BOOT_TFM_SHARED_DATA_BASE; + tlv_end = BOOT_TFM_SHARED_DATA_BASE + tlv_header->tlv_tot_len; + offset = BOOT_TFM_SHARED_DATA_BASE + SHARED_DATA_HEADER_SIZE; + + /* Add header to output buffer as well */ + if (buf_size < SHARED_DATA_HEADER_SIZE) { + args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } else { + tfm_memcpy(ptr, tlv_header, SHARED_DATA_HEADER_SIZE); + ptr += SHARED_DATA_HEADER_SIZE; + } + + /* Iterates over the TLV section and copy TLVs with requested major + * type to the provided buffer. + */ + for(; offset < tlv_end; offset += tlv_entry->tlv_len) { + tlv_entry = (struct shared_data_tlv_entry *)offset; + if (tlv_entry->tlv_major_type == tlv_major) { + /* Check buffer overflow */ + if ((ptr - buf_start + tlv_entry->tlv_len) > buf_size) { + args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + + tfm_memcpy(ptr, (const void *)tlv_entry, tlv_entry->tlv_len); + + ptr += tlv_entry->tlv_len; + tlv_header->tlv_tot_len += tlv_entry->tlv_len; + } + } + args[0] = TFM_SUCCESS; + return; +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_core.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_core.c new file mode 100644 index 00000000000..db5921061e6 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_core.c @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include "region_defs.h" +#include "tfm_core.h" +#include "tfm_internal.h" +#include "tfm_api.h" +#include "platform/include/tfm_spm_hal.h" +#include "secure_utilities.h" +#include "secure_fw/spm/spm_api.h" +#include "secure_fw/include/tfm_spm_services_api.h" +#ifdef TFM_PSA_API +#include "psa_client.h" +#include "psa_service.h" +#include "tfm_thread.h" +#include "tfm_wait.h" +#include "tfm_message_queue.h" +#include "tfm_spm.h" +#endif + +/* + * Avoids the semihosting issue + * FixMe: describe 'semihosting issue' + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +__asm(" .global __ARM_use_no_argv\n"); +#endif + +#if defined ( __GNUC__ ) +/* The macro cmse_nsfptr_create defined in the gcc library uses the non-standard + * gcc C lanuage extension 'typeof'. TF-M is built with '-std=c99' so typeof + * cannot be used in the code. As a workaround cmse_nsfptr_create is redefined + * here to use only standard language elements. */ +#undef cmse_nsfptr_create +#define cmse_nsfptr_create(p) ((intptr_t) (p) & ~1) +#endif + +#ifndef TFM_LVL +#error TFM_LVL is not defined! +#endif +#if (TFM_LVL != 1) && (TFM_LVL != 3) +#error Only TFM_LVL 1 and 3 are supported! +#endif + +/* Macros to pick linker symbols and allow to form the partition data base */ +#define REGION(a, b, c) a##b##c +#define REGION_NAME(a, b, c) REGION(a, b, c) +#define REGION_DECLARE(a, b, c) extern uint32_t REGION_NAME(a, b, c) + +REGION_DECLARE(Image$$, TFM_UNPRIV_SCRATCH, $$ZI$$Base); +REGION_DECLARE(Image$$, TFM_UNPRIV_SCRATCH, $$ZI$$Limit); + +void configure_ns_code(void) +{ + /* SCB_NS.VTOR points to the Non-secure vector table base address */ + SCB_NS->VTOR = tfm_spm_hal_get_ns_VTOR(); + + /* Setups Main stack pointer of the non-secure code */ + uint32_t ns_msp = tfm_spm_hal_get_ns_MSP(); + + __TZ_set_MSP_NS(ns_msp); + + /* Get the address of non-secure code entry point to jump there */ + uint32_t entry_ptr = tfm_spm_hal_get_ns_entry_point(); + + /* Clears LSB of the function address to indicate the function-call + * will perform the switch from secure to non-secure + */ + ns_entry = (nsfptr_t) cmse_nsfptr_create(entry_ptr); +} + +int32_t tfm_core_init(void) +{ + /* Enables fault handlers */ + enable_fault_handlers(); + + /* Configures the system reset request properties */ + system_reset_cfg(); + + /* Configures debug authentication */ + tfm_spm_hal_init_debug(); + + __enable_irq(); + + LOG_MSG("Secure image initializing!"); + +#ifdef TFM_CORE_DEBUG + printf("TFM level is: %d\r\n", TFM_LVL); +#endif + + tfm_core_validate_boot_data(); + + tfm_spm_hal_init_isolation_hw(); + + configure_ns_code(); + + /* Configures all interrupts to retarget NS state, except for + * secure peripherals + */ + nvic_interrupt_target_state_cfg(); + /* Enable secure peripherals interrupts */ + nvic_interrupt_enable(); + + tfm_scratch_area = + (uint8_t *)®ION_NAME(Image$$, TFM_UNPRIV_SCRATCH, $$ZI$$Base); + tfm_scratch_area_size = + (uint32_t)®ION_NAME(Image$$, TFM_UNPRIV_SCRATCH, $$ZI$$Limit) - + (uint32_t)®ION_NAME(Image$$, TFM_UNPRIV_SCRATCH, $$ZI$$Base); + return 0; +} + +static int32_t tfm_core_set_secure_exception_priorities(void) +{ + uint32_t VECTKEY; + SCB_Type *scb = SCB; + uint32_t AIRCR; + + /* Set PRIS flag is AIRCR */ + AIRCR = scb->AIRCR; + VECTKEY = (~AIRCR & SCB_AIRCR_VECTKEYSTAT_Msk); + scb->AIRCR = SCB_AIRCR_PRIS_Msk | + VECTKEY | + (AIRCR & ~SCB_AIRCR_VECTKEY_Msk); + + /* FixMe: Explicitly set secure fault and Secure SVC priority to highest */ + + return TFM_SUCCESS; +} + +void tfm_core_spm_request_handler(const struct tfm_exc_stack_t *svc_ctx) +{ + uint32_t *res_ptr = (uint32_t *)&svc_ctx->R0; + + /* FixMe: check if caller partition is permitted to make an SPM request */ + + switch (svc_ctx->R0) { + case TFM_SPM_REQUEST_RESET_VOTE: + /* FixMe: this is a placeholder for checks to be performed before + * allowing execution of reset + */ + *res_ptr = TFM_SUCCESS; + break; + default: + *res_ptr = TFM_ERROR_INVALID_PARAMETER; + } +} + +int main(void) +{ + tfm_core_init(); + + tfm_spm_db_init(); + + tfm_spm_hal_setup_isolation_hw(); + + tfm_spm_partition_set_state(TFM_SP_CORE_ID, SPM_PARTITION_STATE_RUNNING); + + extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Base[]; + uint32_t psp_stack_bottom = (uint32_t)Image$$ARM_LIB_STACK$$ZI$$Base; + + __set_PSPLIM(psp_stack_bottom); + + if (tfm_spm_partition_init() != SPM_ERR_OK) { + /* Certain systems might refuse to boot altogether if partitions fail + * to initialize. This is a placeholder for such an error handler + */ + } + +#ifdef TFM_PSA_API + tfm_spm_init(); +#endif + +#ifdef TFM_CORE_DEBUG + /* Jumps to non-secure code */ + LOG_MSG("Jumping to non-secure code..."); +#endif + + /* We close the TFM_SP_CORE_ID partition, because its only purpose is + * to be able to pass the state checks for the tests started from secure. + */ + tfm_spm_partition_set_state(TFM_SP_CORE_ID, SPM_PARTITION_STATE_CLOSED); + tfm_spm_partition_set_state(TFM_SP_NON_SECURE_ID, + SPM_PARTITION_STATE_RUNNING); + + /* Prioritise secure exceptions to avoid NS being able to pre-empt secure + * SVC or SecureFault + */ + tfm_core_set_secure_exception_priorities(); + + jump_to_ns_code(); +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_core.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_core.h new file mode 100644 index 00000000000..a30a0fa1364 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_core.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2017, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_CORE_H__ +#define __TFM_CORE_H__ + +#include "arm_cmse.h" +#include "tfm_svc.h" +#include "secure_utilities.h" + +extern int32_t tfm_scratch_area_size; +extern uint8_t *tfm_scratch_area; + +#endif /* __TFM_CORE_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_handler.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_handler.c new file mode 100644 index 00000000000..58e012322d1 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_handler.c @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include + +#include "cmsis.h" +#include "secure_utilities.h" +#include "arm_acle.h" +#include "tfm_svc.h" +#include "tfm_secure_api.h" +#include "region_defs.h" +#include "tfm_api.h" +#include "tfm_internal.h" +#ifdef TFM_PSA_API +#include +#include "tfm_svcalls.h" +#endif + +/* This SVC handler is called when a secure partition requests access to a + * buffer area + */ +extern int32_t tfm_core_set_buffer_area_handler(const uint32_t args[]); +#ifdef TFM_PSA_API +extern void tfm_psa_ipc_request_handler(const uint32_t svc_args[]); +#endif + +struct tfm_fault_context_s { + uint32_t R0; + uint32_t R1; + uint32_t R2; + uint32_t R3; + uint32_t R12; + uint32_t LR; + uint32_t ReturnAddress; + uint32_t RETPSR; +} tfm_fault_context; + +#if defined(__ARM_ARCH_8M_MAIN__) +/** + * \brief Overwrites default Secure fault handler. + */ +void SecureFault_Handler(void) +{ + /* figure out context from which we landed in fault handler */ + uint32_t lr = __get_LR(); + uint32_t sp; + + if (lr & EXC_RETURN_SECURE_STACK) { + if (lr & EXC_RETURN_STACK_PROCESS) { + sp = __get_PSP(); + } else { + sp = __get_MSP(); + } + } else { + if (lr & EXC_RETURN_STACK_PROCESS) { + sp = __TZ_get_PSP_NS(); + } else { + sp = __TZ_get_MSP_NS(); + } + } + + /* Only save the context if sp is valid */ + if ((sp >= S_DATA_START && + sp <= S_DATA_LIMIT - sizeof(tfm_fault_context) + 1) || + (sp >= NS_DATA_START && + sp <= NS_DATA_LIMIT - sizeof(tfm_fault_context) + 1)) { + tfm_memcpy(&tfm_fault_context, + (const void *)sp, + sizeof(tfm_fault_context)); + } + + LOG_MSG("Oops... Secure fault!!! You're not going anywhere!"); + while (1) { + ; + } +} +#elif defined(__ARM_ARCH_8M_BASE__) +/** + * \brief Overwrites default Hard fault handler. + * + * In case of a baseline implementation fault conditions that would generate a + * SecureFault in a mainline implementation instead generate a Secure HardFault. + */ +void HardFault_Handler(void) +{ + /* In a baseline implementation there is no way, to find out whether this is + * a hard fault triggered directly, or another fault that has been + * escalated. + */ + while (1) { + ; + } +} +#else +#error "Unsupported ARM Architecture." +#endif + +#if defined(__ARM_ARCH_8M_MAIN__) +__attribute__((naked)) void SVC_Handler(void) +{ + __ASM( + "TST lr, #4\n" /* Check store SP in thread mode to r0 */ + "IT EQ\n" + "BXEQ lr\n" + "MRS r0, PSP\n" + "MOV r1, lr\n" + "BL SVCHandler_main\n" + "BX r0\n" + ); +} +#elif defined(__ARM_ARCH_8M_BASE__) +__attribute__((naked)) void SVC_Handler(void) +{ + __ASM( + ".syntax unified\n" + "MOVS r0, #4\n" /* Check store SP in thread mode to r0 */ + "MOV r1, lr\n" + "TST r0, r1\n" + "BEQ handler\n" + "MRS r0, PSP\n" /* Coming from thread mode */ + "B sp_stored\n" + "handler:\n" + "BX lr\n" /* Coming from handler mode */ + "sp_stored:\n" + "MOV r1, lr\n" + "BL SVCHandler_main\n" + "BX r0\n" + ); +} +#else +#error "Unsupported ARM Architecture." +#endif + +uint32_t SVCHandler_main(uint32_t *svc_args, uint32_t lr) +{ + uint8_t svc_number; + /* + * Stack contains: + * r0, r1, r2, r3, r12, r14 (lr), the return address and xPSR + * First argument (r0) is svc_args[0] + */ + if (lr & EXC_RETURN_SECURE_STACK) { + /* SV called directly from secure context. Check instruction for + * svc_number + */ + svc_number = ((uint8_t *)svc_args[6])[-2]; + } else { + /* Secure SV executing with NS return. + * NS cannot directly trigger S SVC so this should not happen + * FixMe: check for security implications + */ + return lr; + } + switch (svc_number) { + case TFM_SVC_SFN_REQUEST: + lr = tfm_core_partition_request_svc_handler(svc_args, lr); + break; + case TFM_SVC_SFN_RETURN: + lr = tfm_core_partition_return_handler(lr); + break; + case TFM_SVC_VALIDATE_SECURE_CALLER: + tfm_core_validate_secure_caller_handler(svc_args); + break; + case TFM_SVC_GET_CALLER_CLIENT_ID: + tfm_core_get_caller_client_id_handler(svc_args); + break; + case TFM_SVC_SPM_REQUEST: + tfm_core_spm_request_handler((struct tfm_exc_stack_t *)svc_args); + break; + case TFM_SVC_MEMORY_CHECK: + tfm_core_memory_permission_check_handler(svc_args); + break; + case TFM_SVC_SET_SHARE_AREA: + tfm_core_set_buffer_area_handler(svc_args); + break; +#ifdef TFM_PSA_API + case TFM_SVC_IPC_REQUEST: + tfm_psa_ipc_request_handler(svc_args); + break; +#endif + case TFM_SVC_PRINT: + printf("\e[1;34m[Sec Thread] %s\e[0m\r\n", (char *)svc_args[0]); + break; + case TFM_SVC_GET_BOOT_DATA: + tfm_core_get_boot_data_handler(svc_args); + break; +#ifdef TFM_PSA_API + case TFM_SVC_PSA_FRAMEWORK_VERSION: + case TFM_SVC_PSA_VERSION: + case TFM_SVC_PSA_CONNECT: + case TFM_SVC_PSA_CALL: + case TFM_SVC_PSA_CLOSE: + case TFM_SVC_PSA_WAIT: + case TFM_SVC_PSA_GET: + case TFM_SVC_PSA_SET_RHANDLE: + case TFM_SVC_PSA_READ: + case TFM_SVC_PSA_SKIP: + case TFM_SVC_PSA_WRITE: + case TFM_SVC_PSA_REPLY: + case TFM_SVC_PSA_NOTIFY: + case TFM_SVC_PSA_CLEAR: + case TFM_SVC_PSA_EOI: + svc_args[0] = SVC_Handler_IPC(svc_number, svc_args); + break; +#endif + default: + LOG_MSG("Unknown SVC number requested!"); + break; + } + + return lr; +} + +void tfm_access_violation_handler(void) +{ + while (1) { + ; + } +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_internal.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_internal.h new file mode 100644 index 00000000000..18a56ecdacd --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_internal.h @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include "secure_utilities.h" + +#ifndef __TFM_INTERNAL_H__ +#define __TFM_INTERNAL_H__ + +/* + * This function pointer is meant to only hold non secure function pointers. + * It will be turned into a non-secure one (LSB cleared) before being called + * whatever happens anyway (unless cast to another function pointer type). + * Registers will be cleared before branching so that no information leaks + * from secure to non-secure world. + */ +typedef void __attribute__((cmse_nonsecure_call)) (*nsfptr_t) (void); + +extern nsfptr_t ns_entry; + +/** + * \brief Signal that secure partition initialisation is finished + */ +void tfm_secure_api_init_done(void); + +/** + * \brief Jumps to non-secure code. + */ +void jump_to_ns_code(void); + +/** + * \brief Called if veneer is running in thread mode + */ +uint32_t tfm_core_partition_request_svc_handler( + uint32_t *svc_args, uint32_t lr); + +/** + * \brief Called when secure service returns + */ +uint32_t tfm_core_partition_return_handler(uint32_t lr); + +/** + * \brief Called by secure service to check if client is secure + */ +void tfm_core_validate_secure_caller_handler(const uint32_t svc_args[]); + +/** + * \brief Stores caller's client id in state context + */ +void tfm_core_get_caller_client_id_handler(const uint32_t svc_args[]); + +/** + * \brief Checks if a secure service's access to a memory location is permitted + */ +void tfm_core_memory_permission_check_handler(const uint32_t svc_args[]); + +/** + * \brief Handle an SPM request by a secure service + */ +void tfm_core_spm_request_handler(const struct tfm_exc_stack_t *svc_ctx); + +/** + * \brief Check whether a buffer is ok for writing to by the privileged API + * function. + * + * This function checks whether the caller partition owns the buffer, can write + * to it, and the buffer has proper alignment. + * + * \param[in] partition_idx Partition index + * \param[in] start_addr The start address of the buffer + * \param[in] len The length of the buffer + * \param[in] alignment The expected alignment (in bits) + * + * \return 1 if the check passes, 0 otherwise. + * + * \note For a 0 long buffer the check fails. + */ +int32_t tfm_core_check_buffer_access(uint32_t partition_idx, + void *start_addr, + size_t len, + uint32_t alignment); + +/** + * \brief Retrieve secure partition related data from shared memory area, which + * stores shared data between bootloader and runtime firmware. + * + * \param[in] args Pointer to stack frame, which carries input parameters. + */ +void tfm_core_get_boot_data_handler(uint32_t args[]); + +/** + * \brief Validate the content of shared memory area, which stores the shared + * data between bootloader and runtime firmware. + */ +void tfm_core_validate_boot_data(void); + +#endif /* __TFM_INTERNAL_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_nspm.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_nspm.c new file mode 100644 index 00000000000..8912b0422ef --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_nspm.c @@ -0,0 +1,302 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include "secure_utilities.h" +#include "tfm_api.h" + +#ifndef TFM_MAX_NS_THREAD_COUNT +#define TFM_MAX_NS_THREAD_COUNT 8 +#endif +#define INVALID_CLIENT_ID 0 + +#define DEFAULT_NS_CLIENT_ID ((int32_t)-1) + +#define INVALID_NS_CLIENT_IDX (-1) +#define DEFAULT_NS_CLIENT_IDX 0 + +typedef uint32_t TZ_ModuleId_t; +typedef uint32_t TZ_MemoryId_t; + +static struct ns_client_list_t { + int32_t ns_client_id; + int32_t next_free_index; +} NsClientIdList[TFM_MAX_NS_THREAD_COUNT]; + +static int32_t free_index = 0U; +static int32_t active_ns_client_idx = INVALID_NS_CLIENT_IDX; + +static int get_next_ns_client_id() +{ +#ifdef TFM_NS_CLIENT_IDENTIFICATION + static int32_t next_ns_client_id = DEFAULT_NS_CLIENT_ID; + + if (next_ns_client_id > 0) + { + next_ns_client_id = DEFAULT_NS_CLIENT_ID; + } + return next_ns_client_id--; +#else + return DEFAULT_NS_CLIENT_ID; +#endif +} + +void tfm_nspm_configure_clients(void) +{ + int32_t i; + + /* Default to one NS client */ + free_index = 1; + NsClientIdList[0].ns_client_id = get_next_ns_client_id(); + for (i = 1; i < TFM_MAX_NS_THREAD_COUNT; ++i) { + NsClientIdList[i].ns_client_id = INVALID_CLIENT_ID; + } + active_ns_client_idx = DEFAULT_NS_CLIENT_IDX; +} + +int32_t tfm_nspm_get_current_client_id() +{ + if (active_ns_client_idx == INVALID_NS_CLIENT_IDX) + { + return 0; + } else { + return NsClientIdList[active_ns_client_idx].ns_client_id; + } +} + +/* TF-M implementation of the CMSIS TZ RTOS thread context management API */ + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +/* This veneer is TF-M internal, not a secure service */ +__attribute__((cmse_nonsecure_entry)) +uint32_t TZ_InitContextSystem_S(void) +{ + int32_t i; + + if (__get_active_exc_num() == EXC_NUM_THREAD_MODE) { + /* This veneer should only be called by NS RTOS in handler mode */ + return 0U; + } + + /* NS RTOS supports TZ context management, override defaults */ +#ifdef PRINT_NSPM_DEBUG + LOG_MSG("NS RTOS initialized TZ RTOS context management"); +#endif /* PRINT_NSPM_DEBUG */ + for (i = 1; i < TFM_MAX_NS_THREAD_COUNT; ++i) { + NsClientIdList[i].ns_client_id = INVALID_CLIENT_ID; + NsClientIdList[i].next_free_index = i + 1; + } + + /* Terminate list */ + NsClientIdList[i - 1].next_free_index = INVALID_NS_CLIENT_IDX; + /* Success */ + return 1U; +} + + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +/* This veneer is TF-M internal, not a secure service */ +__attribute__((cmse_nonsecure_entry)) +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module) +{ + TZ_MemoryId_t tz_id; + (void) module; /* Currently unused */ + + if (__get_active_exc_num() == EXC_NUM_THREAD_MODE) { + /* This veneer should only be called by NS RTOS in handler mode */ + return 0U; + } + + if (free_index < 0) { + /* No more free slots */ + return 0U; + } + + /* TZ_MemoryId_t must be a positive integer */ + tz_id = free_index + 1; + NsClientIdList[free_index].ns_client_id = get_next_ns_client_id(); +#ifdef PRINT_NSPM_DEBUG + printf("TZ_AllocModuleContext_S called, returning id %d\r\n", + NsClientIdList[free_index].ns_client_id); +#endif /* PRINT_NSPM_DEBUG */ + free_index = NsClientIdList[free_index].next_free_index; + + return tz_id; +} + + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +/* This veneer is TF-M internal, not a secure service */ +__attribute__((cmse_nonsecure_entry)) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id) +{ + uint32_t index; + + if (__get_active_exc_num() == EXC_NUM_THREAD_MODE) { + /* This veneer should only be called by NS RTOS in handler mode */ + return 0U; + } + + if ((id == 0U) || (id > TFM_MAX_NS_THREAD_COUNT)) { + /* Invalid TZ_MemoryId_t */ + return 0U; + } + + index = id - 1; + + if (NsClientIdList[index].ns_client_id == INVALID_CLIENT_ID) { + /* Non-existent client */ + return 0U; + } + +#ifdef PRINT_NSPM_DEBUG + printf("TZ_FreeModuleContext_S called for id %d\r\n", + NsClientIdList[index].ns_client_id); +#endif /* PRINT_NSPM_DEBUG */ + if (active_ns_client_idx == index) { +#ifdef PRINT_NSPM_DEBUG + printf("Freeing active NS client, NS inactive\r\n"); +#endif /* PRINT_NSPM_DEBUG */ + active_ns_client_idx = DEFAULT_NS_CLIENT_IDX; + } + NsClientIdList[index].ns_client_id = INVALID_CLIENT_ID; + NsClientIdList[index].next_free_index = free_index; + + free_index = index; + + return 1U; // Success +} + + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +/* This veneer is TF-M internal, not a secure service */ +__attribute__((cmse_nonsecure_entry)) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id) +{ + uint32_t index; + + if (__get_active_exc_num() == EXC_NUM_THREAD_MODE) { + /* This veneer should only be called by NS RTOS in handler mode */ + return 0U; + } + +#ifdef PRINT_NSPM_DEBUG + LOG_MSG("TZ_LoadContext_S called"); +#endif /* PRINT_NSPM_DEBUG */ + if ((id == 0U) || (id > TFM_MAX_NS_THREAD_COUNT)) { + /* Invalid TZ_MemoryId_t */ + return 0U; + } + + index = id - 1; + + if (NsClientIdList[index].ns_client_id == INVALID_CLIENT_ID) { + /* Non-existent client */ + return 0U; + } + + active_ns_client_idx = index; +#ifdef PRINT_NSPM_DEBUG + printf("TZ_LoadContext_S called for id %d\r\n", + NsClientIdList[index].ns_client_id); +#endif /* PRINT_NSPM_DEBUG */ + + return 1U; // Success +} + + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +/* This veneer is TF-M internal, not a secure service */ +__attribute__((cmse_nonsecure_entry)) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id) +{ + uint32_t index; + + if (__get_active_exc_num() == EXC_NUM_THREAD_MODE) { + /* This veneer should only be called by NS RTOS in handler mode */ + return 0U; + } + +#ifdef PRINT_NSPM_DEBUG + LOG_MSG("TZ_StoreContext_S called"); +#endif /* PRINT_NSPM_DEBUG */ + /* id corresponds to context being swapped out on NS side */ + if ((id == 0U) || (id > TFM_MAX_NS_THREAD_COUNT)) { + /* Invalid TZ_MemoryId_t */ + return 0U; + } + + index = id - 1; + + if (NsClientIdList[index].ns_client_id == INVALID_CLIENT_ID) { + /* Non-existent client */ + return 0U; + } + + if (active_ns_client_idx != index) { +#ifdef PRINT_NSPM_DEBUG + printf("TZ_StoreContext_S called for id %d, active id: %d\r\n", + NsClientIdList[index].ns_client_id, + NsClientIdList[active_ns_client_idx].ns_client_id); +#endif /* PRINT_NSPM_DEBUG */ + return 0U; + } + +#ifdef PRINT_NSPM_DEBUG + printf("TZ_StoreContext_S called for id %d\r\n", + NsClientIdList[index].ns_client_id); +#endif /* PRINT_NSPM_DEBUG */ + active_ns_client_idx = DEFAULT_NS_CLIENT_IDX; + + return 1U; // Success +} + +#ifdef TFM_NS_CLIENT_IDENTIFICATION +__attribute__((cmse_nonsecure_entry)) +enum tfm_status_e tfm_register_client_id (int32_t ns_client_id) +{ + int current_client_id; + + if (__get_active_exc_num() == EXC_NUM_THREAD_MODE) { + /* This veneer should only be called by NS RTOS in handler mode */ + return TFM_ERROR_NS_THREAD_MODE_CALL; + } + + if (ns_client_id >= 0) { + /* The client ID is invalid */ + return TFM_ERROR_INVALID_PARAMETER; + } + + if (active_ns_client_idx < 0) { + /* No client is active */ + return TFM_ERROR_GENERIC; + } + + current_client_id = NsClientIdList[active_ns_client_idx].ns_client_id; + if (current_client_id >= 0 ) { + /* The client ID is invalid */ + return TFM_ERROR_INVALID_PARAMETER; + } + + NsClientIdList[active_ns_client_idx].ns_client_id = ns_client_id; +#ifdef PRINT_NSPM_DEBUG + printf("tfm_register_client_id called with id %d\r\n", ns_client_id); +#endif /* PRINT_NSPM_DEBUG */ + + return TFM_SUCCESS; +} +#endif diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_nspm.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_nspm.h new file mode 100644 index 00000000000..b485462519f --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_nspm.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_NSPM_H__ +#define __TFM_NSPM_H__ + +#include + +/** + * \brief initialise the NS context database + */ +void tfm_nspm_configure_clients(void); + +/** + * \brief Get the client ID of the current NS client + * + * \return The client id of the current NS client. 0 (invalid client id) is + * returned in case of error. + */ +int32_t tfm_nspm_get_current_client_id(void); + +#endif /* __TFM_NSPM_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_platform_core_api.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_platform_core_api.h new file mode 100644 index 00000000000..7092e0c1bcc --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_platform_core_api.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_PLATFORM_CORE_API_H__ +#define __TFM_PLATFORM_CORE_API_H__ + +/** + * \brief Should be called in case of access violation. + * + * There might be platform specific means, by which it is possible on a + * subsystem to detect access violation. For example a platform can have a + * Peripheral Protection Controller, to detect unauthorised accesses to + * peripheral registers. Setting up the protection, and handling the violation + * is implemented in platform specific code. However TF-M should be able to + * decide how to proceed if a violation happens. So to notify TF-M, platform + * code have to call this function, if a violation happens. + */ +void tfm_access_violation_handler(void); + +#endif /* __TFM_PLATFORM_CORE_API_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_psa_api_client.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_psa_api_client.c new file mode 100644 index 00000000000..36f2c163581 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_psa_api_client.c @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include +#include "psa_client.h" +#include "psa_service.h" +#include "secure_utilities.h" +#include "tfm_secure_api.h" +#include "tfm_api.h" +#include "tfm_svcalls.h" + +/* FixMe: check if this is really needed */ +extern int32_t tfm_secure_lock; + +__attribute__ ((always_inline)) __STATIC_INLINE +int32_t tfm_psa_veneer_sanity_check(struct tfm_sfn_req_s *desc_ptr) +{ + if (desc_ptr->ns_caller) { + if (tfm_secure_lock != 0) { + /* Secure domain is already locked! + * FixMe: Decide if this is a fault or permitted in case of PSA + * API usage + */ + return TFM_ERROR_SECURE_DOMAIN_LOCKED; + } + } else { + /* Secure partition should not call a different secure partition + * using TFM PSA veneers + */ + return TFM_ERROR_INVALID_EXC_MODE; + } + return TFM_SUCCESS; +} + +/* Veneer implementation */ + +#define TFM_CORE_NS_IPC_REQUEST_VENEER(fn, a, b, c, d) \ + return tfm_core_ns_ipc_request(fn, (int32_t)a, (int32_t)b, \ + (int32_t)c, (int32_t)d) + +__attribute__ ((always_inline)) __STATIC_INLINE +int32_t tfm_core_ns_ipc_request(void *fn, int32_t arg1, int32_t arg2, + int32_t arg3, int32_t arg4) +{ + int32_t args[4] = {arg1, arg2, arg3, arg4}; + volatile struct tfm_sfn_req_s desc; + struct tfm_sfn_req_s *desc_ptr = &desc; + int32_t res; + + desc.sfn = fn; + desc.args = args; + desc.ns_caller = cmse_nonsecure_caller(); + + if (__get_active_exc_num() != EXC_NUM_THREAD_MODE) + { + /* FIXME: Proper error handling to be implemented */ + return TFM_ERROR_INVALID_EXC_MODE; + } else { + __ASM("MOV r0, %1\n" + "SVC %2\n" + "MOV %0, r0\n" + : "=r" (res) + : "r" (desc_ptr), "I" (TFM_SVC_IPC_REQUEST) + : "r0"); + return res; + } +} + +/* FixMe: these functions need to have different attributes compared to those + * legacy veneers which may be called by secure partitions. + * They won't call legacy SFN but instead will be handlers for TF-M + */ + +__tfm_secure_gateway_attributes__ +uint32_t tfm_psa_framework_version_veneer(void) +{ + TFM_CORE_NS_IPC_REQUEST_VENEER(tfm_svcall_psa_framework_version, 0, 0, + 0, 0); +} + +__tfm_secure_gateway_attributes__ +uint32_t tfm_psa_version_veneer(uint32_t sid) +{ + TFM_CORE_NS_IPC_REQUEST_VENEER(tfm_svcall_psa_version, sid, 0, 0, 0); +} + +__tfm_secure_gateway_attributes__ +psa_handle_t tfm_psa_connect_veneer(uint32_t sid, uint32_t minor_version) +{ + TFM_CORE_NS_IPC_REQUEST_VENEER(tfm_svcall_psa_connect, sid, + minor_version, 0, 0); +} + +__tfm_secure_gateway_attributes__ +psa_status_t tfm_psa_call_veneer(psa_handle_t handle, + const psa_invec *in_vecs, + psa_outvec *out_vecs) +{ + TFM_CORE_NS_IPC_REQUEST_VENEER(tfm_svcall_psa_call, handle, in_vecs, + out_vecs, 0); +} + +__tfm_secure_gateway_attributes__ +psa_status_t tfm_psa_close_veneer(psa_handle_t handle) +{ + TFM_CORE_NS_IPC_REQUEST_VENEER(tfm_svcall_psa_close, handle, 0, 0, 0); +} + +void tfm_psa_ipc_request_handler(uint32_t svc_ctx[]) +{ + uint32_t *r0_ptr = svc_ctx; + + /* The only argument to the SVC call is stored in the stacked r0 */ + struct tfm_sfn_req_s *desc_ptr = (struct tfm_sfn_req_s *) *r0_ptr; + + if(tfm_psa_veneer_sanity_check(desc_ptr) != TFM_SUCCESS) { + /* FixMe: consider error handling - this may be critical error */ + *r0_ptr = TFM_ERROR_INVALID_PARAMETER; + return; + } + + /* Store SVC return value in stacked r0 */ + *r0_ptr = desc_ptr->sfn((int32_t)desc_ptr->args, + desc_ptr->ns_caller, + 0, + 0); + + return; +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_secure_api.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_secure_api.c new file mode 100644 index 00000000000..e0663b4adb2 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_secure_api.c @@ -0,0 +1,799 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include +#include +#include "cmsis.h" +#include "tfm_secure_api.h" +#include "tfm_nspm.h" +#include "secure_utilities.h" +#include "secure_fw/spm/spm_api.h" +#include "region_defs.h" +#include "tfm_api.h" + +#define EXC_RETURN_SECURE_FUNCTION 0xFFFFFFFD + +#ifndef TFM_LVL +#error TFM_LVL is not defined! +#endif + +#if TFM_LVL == 1 +/* Macros to pick linker symbols and allow references to sections */ +#define REGION(a, b, c) a##b##c +#define REGION_NAME(a, b, c) REGION(a, b, c) +#define REGION_DECLARE(a, b, c) extern uint32_t REGION_NAME(a, b, c) + +REGION_DECLARE(Image$$, TFM_SECURE_STACK, $$ZI$$Base); +REGION_DECLARE(Image$$, TFM_SECURE_STACK, $$ZI$$Limit); +#endif + +/* This is the "Big Lock" on the secure side, to guarantee single entry + * to SPE + */ +int32_t tfm_secure_lock; +static int32_t tfm_secure_api_initializing = 1; + +static int32_t *prepare_partition_ctx( + struct tfm_exc_stack_t *svc_ctx, + struct tfm_sfn_req_s *desc_ptr, + int32_t *dst) +{ + /* XPSR = as was when called, but make sure it's thread mode */ + *(--dst) = svc_ctx->XPSR & 0xFFFFFE00; + /* ReturnAddress = resume veneer in new context */ + *(--dst) = svc_ctx->RetAddr; + /* LR = sfn address */ + *(--dst) = (int32_t)desc_ptr->sfn; + /* R12 = don't care */ + *(--dst) = 0; + + /* R0-R3 = sfn arguments */ + int32_t i = 4; + + while (i > 0) { + i--; + *(--dst) = (uint32_t)desc_ptr->args[i]; + } + return dst; +} + +static void restore_caller_ctx( + struct tfm_exc_stack_t *svc_ctx, + struct tfm_exc_stack_t *target_ctx) +{ + /* ReturnAddress = resume veneer after second SVC */ + target_ctx->RetAddr = svc_ctx->RetAddr; + + /* R0 = function return value */ + target_ctx->R0 = svc_ctx->R0; + + return; +} + +static int32_t tfm_start_partition(struct tfm_sfn_req_s *desc_ptr, + uint32_t excReturn) +{ + uint32_t caller_partition_idx = desc_ptr->caller_part_idx; + const struct spm_partition_runtime_data_t *curr_part_data; + uint32_t caller_flags; + register uint32_t partition_idx; + uint32_t psp = __get_PSP(); + uint32_t partition_psp, partition_psplim; + uint32_t partition_state; + uint32_t partition_flags; + struct tfm_exc_stack_t *svc_ctx = (struct tfm_exc_stack_t *)psp; + uint32_t caller_partition_id; + int32_t client_id; + + caller_flags = tfm_spm_partition_get_flags(caller_partition_idx); + + /* Check partition state consistency */ + if (((caller_flags & SPM_PART_FLAG_APP_ROT) != 0) + != (!desc_ptr->ns_caller)) { + /* Partition state inconsistency detected */ + return TFM_SECURE_LOCK_FAILED; + } + + if((caller_flags & SPM_PART_FLAG_APP_ROT) == 0) { + /* Disable NS exception handling while secure service is running. + * FixMe: + * This restriction is applied to limit the number of possible attack + * vectors. + * To be removed when pre-emption and context management issues have + * been analysed and resolved. + */ + TFM_NS_EXC_DISABLE(); + } + + partition_idx = get_partition_idx(desc_ptr->sp_id); + + curr_part_data = tfm_spm_partition_get_runtime_data(partition_idx); + partition_state = curr_part_data->partition_state; + partition_flags = tfm_spm_partition_get_flags(partition_idx); + caller_partition_id = tfm_spm_partition_get_partition_id( + caller_partition_idx); + + if (tfm_secure_api_initializing) { +#if TFM_LVL != 1 + /* Make thread mode unprivileged while untrusted partition init is + * executed + */ + if ((partition_flags & SPM_PART_FLAG_PSA_ROT) == 0) { + CONTROL_Type ctrl; + + ctrl.w = __get_CONTROL(); + ctrl.b.nPRIV = 1; + __set_CONTROL(ctrl.w); + __DSB(); + __ISB(); + } +#endif + } else if (partition_state == SPM_PARTITION_STATE_RUNNING || + partition_state == SPM_PARTITION_STATE_SUSPENDED || + partition_state == SPM_PARTITION_STATE_BLOCKED) { + /* Recursion is not permitted! */ + return TFM_ERROR_PARTITION_NON_REENTRANT; + } else if (partition_state != SPM_PARTITION_STATE_IDLE) { + /* The partition to be called is not in a proper state */ + return TFM_SECURE_LOCK_FAILED; + } + +#if TFM_LVL == 1 + /* Prepare switch to shared secure partition stack */ + partition_psp = + (uint32_t)®ION_NAME(Image$$, TFM_SECURE_STACK, $$ZI$$Limit); + partition_psplim = + (uint32_t)®ION_NAME(Image$$, TFM_SECURE_STACK, $$ZI$$Base); +#else + partition_psp = curr_part_data->stack_ptr; + partition_psplim = tfm_spm_partition_get_stack_bottom(partition_idx); +#endif + /* Store the context for the partition call */ + tfm_spm_partition_set_caller_partition_idx(partition_idx, + caller_partition_idx); + tfm_spm_partition_store_context(caller_partition_idx, psp, excReturn); + + if ((caller_flags & SPM_PART_FLAG_APP_ROT)) { + tfm_spm_partition_set_caller_client_id(partition_idx, + caller_partition_id); + } else { + client_id = tfm_nspm_get_current_client_id(); + if (client_id >= 0) + { + return TFM_SECURE_LOCK_FAILED; + } + tfm_spm_partition_set_caller_client_id(partition_idx, client_id); + } + +#if (TFM_LVL != 1) && (TFM_LVL != 2) + /* Dynamic partitioning is only done is TFM level 3 */ + tfm_spm_partition_sandbox_deconfig(caller_partition_idx); + + /* Configure partition execution environment */ + if (tfm_spm_partition_sandbox_config(partition_idx) != SPM_ERR_OK) { + ERROR_MSG("Failed to configure sandbox for partition!"); + tfm_secure_api_error_handler(); + } +#endif + + /* Default share to scratch area in case of partition to partition calls + * this way partitions always get default access to input buffers + */ + /* FixMe: return value/error handling TBD */ + tfm_spm_partition_set_share(partition_idx, desc_ptr->ns_caller ? + TFM_BUFFER_SHARE_NS_CODE : TFM_BUFFER_SHARE_SCRATCH); + +#if TFM_LVL == 1 + /* In level one, only switch context and return from exception if in + * handler mode + */ + if ((desc_ptr->ns_caller) || (tfm_secure_api_initializing)) { + /* Prepare the partition context, update stack ptr */ + psp = (uint32_t)prepare_partition_ctx( + svc_ctx, desc_ptr, (int32_t *)partition_psp); + __set_PSP(psp); + __set_PSPLIM(partition_psplim); + } +#else + /* Prepare the partition context, update stack ptr */ + psp = (uint32_t)prepare_partition_ctx(svc_ctx, desc_ptr, + (int32_t *)partition_psp); + __set_PSP(psp); + __set_PSPLIM(partition_psplim); +#endif + + tfm_spm_partition_set_state(caller_partition_idx, + SPM_PARTITION_STATE_BLOCKED); + tfm_spm_partition_set_state(partition_idx, SPM_PARTITION_STATE_RUNNING); + tfm_secure_lock++; + + return TFM_SUCCESS; +} + +static int32_t tfm_return_from_partition(uint32_t *excReturn) +{ + uint32_t current_partition_idx = + tfm_spm_partition_get_running_partition_idx(); + const struct spm_partition_runtime_data_t *curr_part_data, *ret_part_data; + uint32_t current_partition_flags; + uint32_t return_partition_idx; + uint32_t return_partition_flags; + uint32_t psp = __get_PSP(); + struct tfm_exc_stack_t *svc_ctx = (struct tfm_exc_stack_t *)psp; + + if (current_partition_idx == SPM_INVALID_PARTITION_IDX) { + return TFM_SECURE_UNLOCK_FAILED; + } + + curr_part_data = tfm_spm_partition_get_runtime_data(current_partition_idx); + return_partition_idx = curr_part_data->caller_partition_idx; + + if (return_partition_idx == SPM_INVALID_PARTITION_IDX) { + return TFM_SECURE_UNLOCK_FAILED; + } + + ret_part_data = tfm_spm_partition_get_runtime_data(return_partition_idx); + + return_partition_flags = tfm_spm_partition_get_flags(return_partition_idx); + current_partition_flags = tfm_spm_partition_get_flags( + current_partition_idx); + + tfm_secure_lock--; + + if((return_partition_flags & SPM_PART_FLAG_APP_ROT) == 0) { + /* Re-enable NS exceptions when secure service returns to NS client. + * FixMe: + * To be removed when pre-emption and context management issues have + * been analysed and resolved. + */ + TFM_NS_EXC_ENABLE(); + } + +#if (TFM_LVL != 1) && (TFM_LVL != 2) + /* Deconfigure completed partition environment */ + tfm_spm_partition_sandbox_deconfig(current_partition_idx); + if (tfm_secure_api_initializing) { + /* Restore privilege for thread mode during TF-M init. This is only + * have to be done if the partition is not trusted. + */ + if ((current_partition_flags & SPM_PART_FLAG_PSA_ROT) == 0) { + CONTROL_Type ctrl; + + ctrl.w = __get_CONTROL(); + ctrl.b.nPRIV = 0; + __set_CONTROL(ctrl.w); + __DSB(); + __ISB(); + } + } else { + /* Configure the caller partition environment in case this was a + * partition to partition call and returning to untrusted partition + */ + if (tfm_spm_partition_sandbox_config(return_partition_idx) + != SPM_ERR_OK) { + ERROR_MSG("Failed to configure sandbox for partition!"); + tfm_secure_api_error_handler(); + } + if (return_partition_flags & SPM_PART_FLAG_APP_ROT) { + /* Restore share status */ + tfm_spm_partition_set_share( + return_partition_idx, + tfm_spm_partition_get_runtime_data( + return_partition_idx)->share); + } + } +#endif + +#if TFM_LVL == 1 + if (!(return_partition_flags & SPM_PART_FLAG_APP_ROT) || + (tfm_secure_api_initializing)) { + /* In TFM level 1 context restore is only done when + * returning to NS or after initialization + */ + /* Restore caller context */ + restore_caller_ctx(svc_ctx, + (struct tfm_exc_stack_t *)ret_part_data->stack_ptr); + *excReturn = ret_part_data->lr; + __set_PSP(ret_part_data->stack_ptr); + extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Base[]; + uint32_t psp_stack_bottom = (uint32_t)Image$$ARM_LIB_STACK$$ZI$$Base; + __set_PSPLIM(psp_stack_bottom); + + } +#else + /* Restore caller context */ + restore_caller_ctx(svc_ctx, + (struct tfm_exc_stack_t *)ret_part_data->stack_ptr); + *excReturn = ret_part_data->lr; + __set_PSP(ret_part_data->stack_ptr); + __set_PSPLIM(tfm_spm_partition_get_stack_bottom(return_partition_idx)); + /* Clear the context entry before returning */ + tfm_spm_partition_set_stack( + current_partition_idx, psp - sizeof(struct tfm_exc_stack_t)); +#endif + + tfm_spm_partition_cleanup_context(current_partition_idx); + + tfm_spm_partition_set_state(current_partition_idx, + SPM_PARTITION_STATE_IDLE); + tfm_spm_partition_set_state(return_partition_idx, + SPM_PARTITION_STATE_RUNNING); + + return TFM_SUCCESS; +} + +void tfm_secure_api_error_handler(void) +{ + ERROR_MSG("Security violation when calling secure API"); + while (1) { + ; + } +} + +static int32_t tfm_check_sfn_req_integrity(struct tfm_sfn_req_s *desc_ptr) +{ + if ((desc_ptr == NULL) || + (desc_ptr->sp_id == 0) || + (desc_ptr->sfn == NULL)) { + /* invalid parameter */ + return TFM_ERROR_INVALID_PARAMETER; + } + return TFM_SUCCESS; +} + +static int32_t tfm_core_check_sfn_req_rules( + struct tfm_sfn_req_s *desc_ptr) +{ + /* Check partition idx validity */ + if (desc_ptr->caller_part_idx == SPM_INVALID_PARTITION_IDX) { + return TFM_ERROR_NO_ACTIVE_PARTITION; + } + + if ((desc_ptr->ns_caller) && (tfm_secure_lock != 0)) { + /* Secure domain is already locked! + * This should only happen if caller is secure partition! + * FixMe: This scenario is a potential security breach + * Take appropriate action! + */ + return TFM_ERROR_SECURE_DOMAIN_LOCKED; + } + + if (tfm_secure_api_initializing) { + int32_t id = + tfm_spm_partition_get_partition_id(desc_ptr->caller_part_idx); + + if ((id != TFM_SP_CORE_ID) || (tfm_secure_lock != 0)) { + /* Invalid request during system initialization */ + ERROR_MSG("Invalid service request during initialization!"); + return TFM_ERROR_NOT_INITIALIZED; + } + } + + return TFM_SUCCESS; +} + +void tfm_secure_api_init_done(void) +{ + tfm_secure_api_initializing = 0; +#if TFM_LVL != 1 + if (tfm_spm_partition_sandbox_config(TFM_SP_NON_SECURE_ID) != SPM_ERR_OK) { + ERROR_MSG("Failed to configure sandbox for partition!"); + tfm_secure_api_error_handler(); + } +#endif +} + +int32_t tfm_core_sfn_request_handler( + struct tfm_sfn_req_s *desc_ptr, uint32_t excReturn) +{ + int32_t res; + + res = tfm_check_sfn_req_integrity(desc_ptr); + if (res != TFM_SUCCESS) { + ERROR_MSG("Invalid service request!"); + return TFM_ERROR_STATUS(res); + } + + __disable_irq(); + desc_ptr->caller_part_idx = tfm_spm_partition_get_running_partition_idx(); + + res = tfm_core_check_sfn_req_rules(desc_ptr); + if (res != TFM_SUCCESS) { + /* FixMe: error compartmentalization TBD */ + tfm_spm_partition_set_state( + desc_ptr->caller_part_idx, SPM_PARTITION_STATE_CLOSED); + __enable_irq(); + ERROR_MSG("Unauthorized service request!"); + return TFM_ERROR_STATUS(res); + } + + res = tfm_start_partition(desc_ptr, excReturn); + if (res != TFM_SUCCESS) { + /* FixMe: consider possible fault scenarios */ + __enable_irq(); + ERROR_MSG("Failed to process service request!"); + return TFM_ERROR_STATUS(res); + } + + __enable_irq(); + + return res; +} + +#if TFM_LVL == 1 +int32_t tfm_core_sfn_request_thread_mode(struct tfm_sfn_req_s *desc_ptr) +{ + int32_t res; + int32_t *args; + int32_t retVal; + + /* No excReturn value is needed as no exception handling is used */ + res = tfm_core_sfn_request_handler(desc_ptr, 0); + + if (res != TFM_SUCCESS) { + tfm_secure_api_error_handler(); + } + + /* Secure partition to secure partition call in TFM level 1 */ + args = desc_ptr->args; + retVal = desc_ptr->sfn(args[0], args[1], args[2], args[3]); + + /* return handler should restore original exc_return value... */ + res = tfm_return_from_partition(NULL); + if (res == TFM_SUCCESS) { + /* If unlock successful, pass SS return value to caller */ + res = retVal; + } else { + /* Unlock errors indicate ctx database corruption or unknown + * anomalies. Halt execution + */ + ERROR_MSG("Secure API error during unlock!"); + tfm_secure_api_error_handler(); + } + return res; +} +#endif + +void tfm_core_validate_secure_caller_handler(uint32_t *svc_args) +{ + + int32_t res = TFM_ERROR_GENERIC; + uint32_t running_partition_idx = + tfm_spm_partition_get_running_partition_idx(); + const struct spm_partition_runtime_data_t *curr_part_data = + tfm_spm_partition_get_runtime_data(running_partition_idx); + uint32_t running_partition_flags = + tfm_spm_partition_get_flags(running_partition_idx); + uint32_t caller_partition_flags = + tfm_spm_partition_get_flags(curr_part_data->caller_partition_idx); + + if (!(running_partition_flags & SPM_PART_FLAG_APP_ROT)) { + /* This handler shouldn't be called from outside partition context. + * Partitions are only allowed to run while S domain is locked. + */ + svc_args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + + /* Store return value in r0 */ + if (caller_partition_flags & SPM_PART_FLAG_APP_ROT) { + res = TFM_SUCCESS; + } + svc_args[0] = res; +} + +int32_t tfm_core_check_buffer_access(uint32_t partition_idx, + void *start_addr, + size_t len, + uint32_t alignment) +{ + uintptr_t start_addr_value = (uintptr_t)start_addr; + uintptr_t end_addr_value = (uintptr_t)start_addr + len; + uintptr_t alignment_mask; + + alignment_mask = (((uintptr_t)1) << alignment) - 1; + + /* Check that the pointer is aligned properly */ + if (start_addr_value & alignment_mask) { + /* not aligned, return error */ + return 0; + } + + /* Protect against overflow (and zero len) */ + if (end_addr_value <= start_addr_value) + { + return 0; + } + +#if TFM_LVL == 1 + /* For privileged partition execution, all secure data memory and stack + * is accessible + */ + if (start_addr_value >= S_DATA_START && + end_addr_value <= (S_DATA_START + S_DATA_SIZE)) { + return 1; + } +#else + /* For non-privileged execution the partition's data and stack is + * accessible + */ + if (start_addr_value >= + tfm_spm_partition_get_stack_bottom(partition_idx) && + end_addr_value <= + tfm_spm_partition_get_stack_top(partition_idx)) { + return 1; + } + if (start_addr_value >= + tfm_spm_partition_get_rw_start(partition_idx) && + end_addr_value <= + tfm_spm_partition_get_rw_limit(partition_idx)) { + return 1; + } + if (start_addr_value >= + tfm_spm_partition_get_zi_start(partition_idx) && + end_addr_value <= + tfm_spm_partition_get_zi_limit(partition_idx)) { + return 1; + } +#endif + return 0; +} + +void tfm_core_get_caller_client_id_handler(uint32_t *svc_args) +{ + uintptr_t result_ptr_value = svc_args[0]; + uint32_t running_partition_idx = + tfm_spm_partition_get_running_partition_idx(); + const uint32_t running_partition_flags = + tfm_spm_partition_get_flags(running_partition_idx); + const struct spm_partition_runtime_data_t *curr_part_data = + tfm_spm_partition_get_runtime_data(running_partition_idx); + int res = 0; + + if (!(running_partition_flags & SPM_PART_FLAG_APP_ROT)) { + /* This handler shouldn't be called from outside partition context. + * Partitions are only allowed to run while S domain is locked. + */ + svc_args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + + /* Make sure that the output pointer points to a memory area that is owned + * by the partition + */ + res = tfm_core_check_buffer_access(running_partition_idx, + (void *)result_ptr_value, + sizeof(curr_part_data->caller_client_id), + 2); + if (!res) { + /* Not in accessible range, return error */ + svc_args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + + *((int32_t *)result_ptr_value) = curr_part_data->caller_client_id; + + /* Store return value in r0 */ + svc_args[0] = TFM_SUCCESS; +} + +void tfm_core_memory_permission_check_handler(uint32_t *svc_args) +{ + uint32_t ptr = svc_args[0]; + uint32_t size = svc_args[1]; + int32_t access = svc_args[2]; + + uint32_t max_buf_size, ptr_start, range_limit, range_check = false; + int32_t res; + uint32_t running_partition_idx = + tfm_spm_partition_get_running_partition_idx(); + const struct spm_partition_runtime_data_t *curr_part_data = + tfm_spm_partition_get_runtime_data(running_partition_idx); + uint32_t running_partition_flags = + tfm_spm_partition_get_flags(running_partition_idx); + int32_t flags = 0; + void *rangeptr; + + if (!(running_partition_flags & SPM_PART_FLAG_APP_ROT) || (size == 0)) { + /* This handler should only be called from a secure partition. */ + svc_args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + + if (curr_part_data->share != TFM_BUFFER_SHARE_PRIV) { + flags |= CMSE_MPU_UNPRIV; + } + + if (access == TFM_MEMORY_ACCESS_RW) { + flags |= CMSE_MPU_READWRITE; + } else { + flags |= CMSE_MPU_READ; + } + + /* Check if partition access to address would fail */ + rangeptr = cmse_check_address_range((void *)ptr, size, flags); + + /* Get regions associated with address */ + cmse_address_info_t addr_info = cmse_TT((void *)ptr); + + if (rangeptr == NULL) { + svc_args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + + if (addr_info.flags.secure) { +#if TFM_LVL == 1 + /* For privileged partition execution, all secure data memory is + * accessible + */ + max_buf_size = S_DATA_SIZE; + ptr_start = S_DATA_START; + range_limit = S_DATA_LIMIT; +#else + /* Only scratch is permitted in secure memory */ + max_buf_size = (uint32_t)tfm_scratch_area_size; + ptr_start = (uint32_t)tfm_scratch_area; + range_limit = (uint32_t)tfm_scratch_area + tfm_scratch_area_size - 1; +#endif + range_check = true; + } else { + if (!addr_info.flags.sau_region_valid) { + /* If address is NS, TF-M expects SAU to be configured + */ + svc_args[0] = TFM_ERROR_INVALID_PARAMETER; + return; + } + switch (addr_info.flags.sau_region) { + case TFM_NS_REGION_CODE: + if (access == TFM_MEMORY_ACCESS_RW) { + res = TFM_ERROR_INVALID_PARAMETER; + } else { + /* Currently TF-M does not support checks for NS Memory + * accesses by partitions + */ + res = TFM_SUCCESS; + } + break; + case TFM_NS_REGION_DATA: + /* Currently TF-M does not support checks for NS Memory + * accesses by partitions + */ + res = TFM_SUCCESS; + break; + default: + /* Only NS data and code regions can be accessed as buffers */ + res = TFM_ERROR_INVALID_PARAMETER; + break; + } + } + + if (range_check == true) { + if ((size <= max_buf_size) && (ptr >= ptr_start) + && (ptr <= range_limit + 1 - size)) { + res = TFM_SUCCESS; + } else { + res = TFM_ERROR_INVALID_PARAMETER; + } + } + + /* Store return value in r0 */ + svc_args[0] = res; +} + +/* This SVC handler is called if veneer is running in thread mode */ +uint32_t tfm_core_partition_request_svc_handler( + struct tfm_exc_stack_t *svc_ctx, uint32_t excReturn) +{ + if (!(excReturn & EXC_RETURN_STACK_PROCESS)) { + /* Service request SVC called with MSP active. + * Either invalid configuration for Thread mode or SVC called + * from Handler mode, which is not supported. + * FixMe: error severity TBD + */ + ERROR_MSG("Service request SVC called with MSP active!"); + tfm_secure_api_error_handler(); + } + + struct tfm_sfn_req_s *desc_ptr = (struct tfm_sfn_req_s *)svc_ctx->R0; + + if (tfm_core_sfn_request_handler(desc_ptr, excReturn) != TFM_SUCCESS) { + tfm_secure_api_error_handler(); + } + + return EXC_RETURN_SECURE_FUNCTION; +} + +/* This SVC handler is called when sfn returns */ +uint32_t tfm_core_partition_return_handler(uint32_t lr) +{ + int32_t res; + + if (!(lr & EXC_RETURN_STACK_PROCESS)) { + /* Partition return SVC called with MSP active. + * This should not happen! + */ + ERROR_MSG("Partition return SVC called with MSP active!"); + tfm_secure_api_error_handler(); + } + + /* Store return value from secure partition */ + int32_t retVal = *(int32_t *)__get_PSP(); + + if ((retVal > TFM_SUCCESS) && + (retVal < TFM_PARTITION_SPECIFIC_ERROR_MIN)) { + /* Secure function returned a reserved value */ +#ifdef TFM_CORE_DEBUG + LOG_MSG("Invalid return value from secure partition!"); +#endif + /* FixMe: error can be traced to specific secure partition + * and Core is not compromised. Error handling flow can be + * refined + */ + tfm_secure_api_error_handler(); + } + + res = tfm_return_from_partition(&lr); + if (res != TFM_SUCCESS) { + /* Unlock errors indicate ctx database corruption or unknown anomalies + * Halt execution + */ + ERROR_MSG("Secure API error during unlock!"); + tfm_secure_api_error_handler(); + } + + return lr; +} + +void tfm_core_set_buffer_area_handler(uint32_t *args) +{ + /* r0 is stored in args[0] in exception stack frame + * Store input parameter before writing return value to that address + */ + enum tfm_buffer_share_region_e share; + uint32_t running_partition_idx = + tfm_spm_partition_get_running_partition_idx(); + const struct spm_partition_runtime_data_t *curr_part_data = + tfm_spm_partition_get_runtime_data(running_partition_idx); + uint32_t caller_partition_idx = curr_part_data->caller_partition_idx; + uint32_t running_partition_flags = + tfm_spm_partition_get_flags(running_partition_idx); + uint32_t caller_partition_flags = + tfm_spm_partition_get_flags(caller_partition_idx); + + /* tfm_core_set_buffer_area() returns int32_t */ + int32_t *res_ptr = (int32_t *)&args[0]; + + if (!(running_partition_flags & SPM_PART_FLAG_APP_ROT)) { + /* This handler should only be called from a secure partition. */ + *res_ptr = TFM_ERROR_INVALID_PARAMETER; + return; + } + + switch (args[0]) { + case TFM_BUFFER_SHARE_DEFAULT: + share = (!(caller_partition_flags & SPM_PART_FLAG_APP_ROT)) ? + (TFM_BUFFER_SHARE_NS_CODE) : (TFM_BUFFER_SHARE_SCRATCH); + break; + case TFM_BUFFER_SHARE_SCRATCH: + case TFM_BUFFER_SHARE_NS_CODE: + share = args[0]; + break; + default: + *res_ptr = TFM_ERROR_INVALID_PARAMETER; + return; + } + + if (tfm_spm_partition_set_share(running_partition_idx, share) == + SPM_ERR_OK) { + *res_ptr = TFM_SUCCESS; + } else { + *res_ptr = TFM_ERROR_INVALID_PARAMETER; + } + + return; +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_secure_api.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_secure_api.h new file mode 100644 index 00000000000..2f253e1ae67 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_secure_api.h @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_SECURE_API_H__ +#define __TFM_SECURE_API_H__ + +#include "arm_cmse.h" +#include "tfm_svc.h" +#include "secure_utilities.h" +#include "tfm_core.h" +#include "tfm_api.h" + +/*! + * \def __tfm_secure_gateway_attributes__ + * + * \brief Attributes for secure gateway functions + */ +#define __tfm_secure_gateway_attributes__ \ + __attribute__((cmse_nonsecure_entry, noinline, section("SFN"))) + +/* Hide specific errors if not debugging */ +#ifdef TFM_CORE_DEBUG +#define TFM_ERROR_STATUS(status) (status) +#else +#define TFM_ERROR_STATUS(status) (TFM_PARTITION_BUSY) +#endif + +#ifndef TFM_LVL +#error TFM_LVL is not defined! +#endif + +extern void tfm_secure_api_error_handler(void); + +typedef int32_t(*sfn_t)(int32_t, int32_t, int32_t, int32_t); + +struct tfm_sfn_req_s { + uint32_t sp_id; + sfn_t sfn; + int32_t *args; + uint32_t caller_part_idx; + int32_t ns_caller : 1; +}; + +enum tfm_buffer_share_region_e { + TFM_BUFFER_SHARE_DISABLE, + TFM_BUFFER_SHARE_NS_CODE, + TFM_BUFFER_SHARE_SCRATCH, + TFM_BUFFER_SHARE_PRIV, /* only for TCB in level 2, all in level 1 */ + TFM_BUFFER_SHARE_DEFAULT, +}; + +enum tfm_ns_region_e { + TFM_NS_REGION_CODE = 0, + TFM_NS_REGION_DATA, + TFM_NS_REGION_VENEER, + TFM_NS_REGION_PERIPH_1, + TFM_NS_REGION_PERIPH_2, + TFM_NS_SECONDARY_IMAGE_REGION, +}; + +enum tfm_memory_access_e { + TFM_MEMORY_ACCESS_RO = 1, + TFM_MEMORY_ACCESS_RW = 2, +}; + +extern int32_t tfm_core_set_buffer_area(enum tfm_buffer_share_region_e share); + +extern int32_t tfm_core_validate_secure_caller(void); + +extern int32_t tfm_core_get_caller_client_id(int32_t *caller_client_id); + +extern int32_t tfm_core_memory_permission_check( + void *ptr, uint32_t size, int32_t access); + +extern int32_t tfm_core_get_boot_data(uint8_t major_type, void *ptr, + uint32_t len); + +int32_t tfm_core_sfn_request(struct tfm_sfn_req_s *desc_ptr); + +int32_t tfm_core_sfn_request_thread_mode(struct tfm_sfn_req_s *desc_ptr); + +#define TFM_CORE_SFN_REQUEST(id, fn, a, b, c, d) \ + return tfm_core_partition_request(id, fn, (int32_t)a, (int32_t)b, \ + (int32_t)c, (int32_t)d) + +__attribute__ ((always_inline)) __STATIC_INLINE +int32_t tfm_core_partition_request(uint32_t id, void *fn, + int32_t arg1, int32_t arg2, int32_t arg3, int32_t arg4) +{ + int32_t args[4] = {arg1, arg2, arg3, arg4}; + struct tfm_sfn_req_s desc, *desc_ptr = &desc; + + desc.sp_id = id; + desc.sfn = fn; + desc.args = args; + desc.ns_caller = cmse_nonsecure_caller(); + if (__get_active_exc_num() != EXC_NUM_THREAD_MODE) { + /* FixMe: Error severity TBD */ + return TFM_ERROR_GENERIC; + } else { +#if TFM_LVL == 1 + if (desc.ns_caller) { + return tfm_core_sfn_request(desc_ptr); + } else { + return tfm_core_sfn_request_thread_mode(desc_ptr); + } +#else + return tfm_core_sfn_request(desc_ptr); +#endif + + } +} + +#endif /* __TFM_SECURE_API_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_spm_services.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_spm_services.c new file mode 100644 index 00000000000..9052ef7369f --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_spm_services.c @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include + +#include "tfm_svc.h" +#include "tfm_secure_api.h" +#include "tfm_internal.h" +#include "secure_fw/include/tfm_spm_services_api.h" + +uint8_t *tfm_scratch_area; +int32_t tfm_scratch_area_size; +nsfptr_t ns_entry; + +void jump_to_ns_code(void) +{ +#if TFM_LVL != 1 + /* Initialization is done, set thread mode to unprivileged. */ + CONTROL_Type ctrl; + + ctrl.w = __get_CONTROL(); + ctrl.b.nPRIV = 1; + __set_CONTROL(ctrl.w); +#endif + /* All changes made to memory will be effective after this point */ + __DSB(); + __ISB(); + + /* Calls the non-secure Reset_Handler to jump to the non-secure binary */ + ns_entry(); +} + +#if defined(__ARM_ARCH_8M_MAIN__) +__attribute__((naked)) int32_t tfm_core_sfn_request( + struct tfm_sfn_req_s *desc_ptr) +{ + __ASM( + "PUSH {r4-r12, lr}\n" + "SVC %[SVC_REQ]\n" + "MOV r4, #0\n" + "MOV r5, #0\n" + "MOV r6, #0\n" + "MOV r7, #0\n" + "MOV r8, #0\n" + "MOV r9, #0\n" + "MOV r10, #0\n" + "MOV r11, #0\n" + "BLX lr\n" + "SVC %[SVC_RET]\n" + "POP {r4-r12, pc}\n" + : : [SVC_REQ] "I" (TFM_SVC_SFN_REQUEST) + , [SVC_RET] "I" (TFM_SVC_SFN_RETURN) + : "r0"); +} +#elif defined(__ARM_ARCH_8M_BASE__) +__attribute__((naked)) int32_t tfm_core_sfn_request( + struct tfm_sfn_req_s *desc_ptr) +{ + __ASM( + ".syntax unified\n" + "PUSH {lr}\n" + "PUSH {r4-r7}\n" + "MOV r4, r8\n" + "MOV r5, r9\n" + "MOV r6, r10\n" + "MOV r7, r11\n" + "PUSH {r4-r7}\n" + "MOV r4, r12\n" + "PUSH {r4}\n" + "SVC %[SVC_REQ]\n" + "MOVS r4, #0\n" + "MOV r5, r4\n" + "MOV r6, r4\n" + "MOV r7, r4\n" + "MOV r8, r4\n" + "MOV r9, r4\n" + "MOV r10, r4\n" + "MOV r11, r4\n" + "BLX lr\n" + "SVC %[SVC_RET]\n" + "POP {r4}\n" + "MOV r12, r4\n" + "POP {r4-r7}\n" + "MOV r8, r4\n" + "MOV r9, r5\n" + "MOV r10, r6\n" + "MOV r11, r7\n" + "POP {r4-r7}\n" + "POP {pc}\n" + : : [SVC_REQ] "I" (TFM_SVC_SFN_REQUEST) + , [SVC_RET] "I" (TFM_SVC_SFN_RETURN) + : "r0"); +} +#else +#error "Unsupported ARM Architecture." +#endif + +__attribute__((naked)) +int32_t tfm_core_memory_permission_check( + void *ptr, uint32_t len, int32_t access) +{ + __ASM( + "SVC %0\n" + "BX lr\n" + : : "I" (TFM_SVC_MEMORY_CHECK)); +} + +__attribute__((naked)) +int32_t tfm_core_get_caller_client_id(int32_t *caller_client_id) +{ + __ASM( + "SVC %0\n" + "BX LR\n" + : : "I" (TFM_SVC_GET_CALLER_CLIENT_ID)); +} + +__attribute__((naked)) +int32_t tfm_spm_request_reset_vote(void) +{ + __ASM( + "MOVS R0, %0\n" + "B tfm_spm_request\n" + : : "I" (TFM_SPM_REQUEST_RESET_VOTE)); +} + +__attribute__((naked)) +int32_t tfm_spm_request(void) +{ + __ASM( + "SVC %0\n" + "BX lr\n" + : : "I" (TFM_SVC_SPM_REQUEST)); +} + +__attribute__((naked)) +int32_t tfm_core_validate_secure_caller(void) +{ + __ASM( + "SVC %0\n" + "BX lr\n" + : : "I" (TFM_SVC_VALIDATE_SECURE_CALLER)); +} + +__attribute__((naked)) +int32_t tfm_core_set_buffer_area(enum tfm_buffer_share_region_e share) +{ + __ASM( + "SVC %0\n" + "BX lr\n" + : : "I" (TFM_SVC_SET_SHARE_AREA)); +} + +__attribute__((naked)) +int32_t tfm_core_get_boot_data(uint8_t major_type, void *ptr, uint32_t len) +{ + __ASM( + "SVC %0\n" + "BX lr\n" + : : "I" (TFM_SVC_GET_BOOT_DATA)); +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_svc.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_svc.h new file mode 100644 index 00000000000..44ad9ff73db --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/core/tfm_svc.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_SVC_H__ +#define __TFM_SVC_H__ + +#include "cmsis.h" + +typedef enum { + TFM_SVC_SFN_REQUEST = 0, + TFM_SVC_SFN_RETURN, + TFM_SVC_VALIDATE_SECURE_CALLER, + TFM_SVC_GET_CALLER_CLIENT_ID, + TFM_SVC_MEMORY_CHECK, + TFM_SVC_SET_SHARE_AREA, + TFM_SVC_SPM_REQUEST, + TFM_SVC_PRINT, + TFM_SVC_GET_BOOT_DATA, +#ifdef TFM_PSA_API + TFM_SVC_IPC_REQUEST, + TFM_SVC_SCHEDULE, + /* PSA Client SVC */ + TFM_SVC_PSA_FRAMEWORK_VERSION, + TFM_SVC_PSA_VERSION, + TFM_SVC_PSA_CONNECT, + TFM_SVC_PSA_CALL, + TFM_SVC_PSA_CLOSE, + /* PSA Service SVC */ + TFM_SVC_PSA_WAIT, + TFM_SVC_PSA_GET, + TFM_SVC_PSA_SET_RHANDLE, + TFM_SVC_PSA_READ, + TFM_SVC_PSA_SKIP, + TFM_SVC_PSA_WRITE, + TFM_SVC_PSA_REPLY, + TFM_SVC_PSA_NOTIFY, + TFM_SVC_PSA_CLEAR, + TFM_SVC_PSA_EOI, +#endif +} tfm_svc_number_t; + +#define SVC(code) __ASM("svc %0" : : "I" (code)) + +#endif /* __TFM_SVC_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/include/tfm_spm_services_api.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/include/tfm_spm_services_api.h new file mode 100644 index 00000000000..be08ed278c7 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/include/tfm_spm_services_api.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_SPM_SERVICES_API_H__ +#define __TFM_SPM_SERVICES_API_H__ + +enum tfm_spm_request_type_t { + TFM_SPM_REQUEST_RESET_VOTE, +}; + +/** + * \brief Request a vote from SPM on a system reset + * + * \return Returns 0 if request is accepted, any other value means reject + */ +int32_t tfm_spm_request_reset_vote(void); + +#endif /* __TFM_SPM_SERVICES_API_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_api.c b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_api.c new file mode 100644 index 00000000000..6331c30c49b --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_api.c @@ -0,0 +1,328 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/* This file contains the APIs exported by the SPM to tfm core */ + +#include +#include +#include "spm_api.h" +#include "platform/include/tfm_spm_hal.h" +#include "secure_utilities.h" +#include "spm_db_setup.h" +#include "tfm_internal.h" +#include "tfm_api.h" +#include "tfm_nspm.h" +#include "secure_fw/core/tfm_core.h" +#include "platform_retarget.h" +#include "tfm_peripherals_def.h" +#include "spm_partition_defs.h" + + +struct spm_partition_db_t g_spm_partition_db = {0,}; + +typedef enum { + TFM_INIT_FAILURE, +} sp_error_type_t; + +/* + * This function is called when a secure partition causes an error. + * In case of an error in the error handling, a non-zero value have to be + * returned. + */ +static void tfm_spm_partition_err_handler( + struct spm_partition_desc_t *partition, + sp_error_type_t err_type, + int32_t err_code) +{ +#ifdef TFM_CORE_DEBUG + if (err_type == TFM_INIT_FAILURE) { + printf("Partition init failed for partition id 0x%08X\r\n", + partition->static_data.partition_id); + } else { + printf("Unknown partition error %d for partition id 0x%08X\r\n", + err_type, partition->static_data.partition_id); + } +#endif + tfm_spm_partition_set_state(partition->static_data.partition_id, + SPM_PARTITION_STATE_CLOSED); +} + +uint32_t get_partition_idx(uint32_t partition_id) +{ + int i; + + if (partition_id == INVALID_PARTITION_ID) { + return SPM_INVALID_PARTITION_IDX; + } + + for (i = 0; i < g_spm_partition_db.partition_count; ++i) { + if (g_spm_partition_db.partitions[i].static_data.partition_id == + partition_id) { + return i; + } + } + return SPM_INVALID_PARTITION_IDX; +} + +enum spm_err_t tfm_spm_db_init(void) +{ + struct spm_partition_desc_t *part_ptr; + + tfm_memset (&g_spm_partition_db, 0, sizeof(g_spm_partition_db)); + + /* This function initialises partition db */ + g_spm_partition_db.running_partition_idx = SPM_INVALID_PARTITION_IDX; + g_spm_partition_db.partition_count = 0; + + /* There are a few partitions that are used by TF-M internally. + * These are explicitly added to the partition db here. + */ + + /* For the non secure Execution environment */ +#if TFM_LVL != 1 + extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Base[]; + extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit[]; + uint32_t psp_stack_bottom = (uint32_t)Image$$ARM_LIB_STACK$$ZI$$Base; + uint32_t psp_stack_top = (uint32_t)Image$$ARM_LIB_STACK$$ZI$$Limit; +#endif + if (g_spm_partition_db.partition_count >= SPM_MAX_PARTITIONS) { + return SPM_ERR_INVALID_CONFIG; + } + part_ptr = &(g_spm_partition_db.partitions[ + g_spm_partition_db.partition_count]); + part_ptr->static_data.partition_id = TFM_SP_NON_SECURE_ID; + part_ptr->static_data.partition_flags = 0; + +#if TFM_LVL != 1 + part_ptr->memory_data.stack_bottom = psp_stack_bottom; + part_ptr->memory_data.stack_top = psp_stack_top; + /* Since RW, ZI and stack are configured as one MPU region, configure + * RW start address to psp_stack_bottom to get RW access to stack + */ + part_ptr->memory_data.rw_start = psp_stack_bottom; +#endif + + part_ptr->runtime_data.partition_state = SPM_PARTITION_STATE_UNINIT; + tfm_nspm_configure_clients(); + ++g_spm_partition_db.partition_count; + + /* For the TF-M core environment itself */ + if (g_spm_partition_db.partition_count >= SPM_MAX_PARTITIONS) { + return SPM_ERR_INVALID_CONFIG; + } + part_ptr = &(g_spm_partition_db.partitions[ + g_spm_partition_db.partition_count]); + part_ptr->static_data.partition_id = TFM_SP_CORE_ID; + part_ptr->static_data.partition_flags = + SPM_PART_FLAG_APP_ROT | SPM_PART_FLAG_PSA_ROT; + part_ptr->runtime_data.partition_state = SPM_PARTITION_STATE_UNINIT; + ++g_spm_partition_db.partition_count; + + /* Add user-defined secure partitions */ + #include "tfm_partition_list.inc" + + g_spm_partition_db.is_init = 1; + + return SPM_ERR_OK; +} + +enum spm_err_t tfm_spm_partition_init(void) +{ + struct spm_partition_desc_t *part; + struct tfm_sfn_req_s desc; + int32_t args[4] = {0}; + int32_t fail_cnt = 0; + uint32_t idx; + + /* Call the init function for each partition */ + for (idx = 0; idx < g_spm_partition_db.partition_count; ++idx) { + part = &g_spm_partition_db.partitions[idx]; +#ifdef TFM_PSA_API + if (part->static_data.partition_flags & SPM_PART_FLAG_IPC) { + continue; + } +#endif + tfm_spm_hal_configure_default_isolation(part->platform_data); + if (part->static_data.partition_init == NULL) { + tfm_spm_partition_set_state(idx, SPM_PARTITION_STATE_IDLE); + tfm_spm_partition_set_caller_partition_idx(idx, + SPM_INVALID_PARTITION_IDX); + } else { + int32_t res; + + desc.args = args; + desc.ns_caller = 0; + desc.sfn = (sfn_t)part->static_data.partition_init; + desc.sp_id = part->static_data.partition_id; + res = tfm_core_sfn_request(&desc); + if (res == TFM_SUCCESS) { + tfm_spm_partition_set_state(idx, SPM_PARTITION_STATE_IDLE); + } else { + tfm_spm_partition_err_handler(part, TFM_INIT_FAILURE, res); + fail_cnt++; + } + } + } + + tfm_secure_api_init_done(); + + if (fail_cnt == 0) { + return SPM_ERR_OK; + } else { + return SPM_ERR_PARTITION_NOT_AVAILABLE; + } +} + +#if TFM_LVL != 1 +enum spm_err_t tfm_spm_partition_sandbox_config(uint32_t partition_idx) +{ + struct spm_partition_desc_t *part; + if (!g_spm_partition_db.is_init) { + return SPM_ERR_PARTITION_DB_NOT_INIT; + } + + part = &g_spm_partition_db.partitions[partition_idx]; + + return tfm_spm_hal_partition_sandbox_config(&(part->memory_data), + part->platform_data); + +} + +enum spm_err_t tfm_spm_partition_sandbox_deconfig(uint32_t partition_idx) +{ + /* This function takes a partition id and disables the + * SPM partition for that partition + */ + + struct spm_partition_desc_t *part; + + part = &g_spm_partition_db.partitions[partition_idx]; + + return tfm_spm_hal_partition_sandbox_deconfig(&(part->memory_data), + part->platform_data); +} + +uint32_t tfm_spm_partition_get_stack_bottom(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx]. + memory_data.stack_bottom; +} + +uint32_t tfm_spm_partition_get_stack_top(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx].memory_data.stack_top; +} + +uint32_t tfm_spm_partition_get_zi_start(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx]. + memory_data.zi_start; +} + +uint32_t tfm_spm_partition_get_zi_limit(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx]. + memory_data.zi_limit; +} + +uint32_t tfm_spm_partition_get_rw_start(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx]. + memory_data.rw_start; +} + +uint32_t tfm_spm_partition_get_rw_limit(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx]. + memory_data.rw_limit; +} + +void tfm_spm_partition_set_stack(uint32_t partition_idx, uint32_t stack_ptr) +{ + g_spm_partition_db.partitions[partition_idx]. + runtime_data.stack_ptr = stack_ptr; +} +#endif + +void tfm_spm_partition_store_context(uint32_t partition_idx, + uint32_t stack_ptr, uint32_t lr) +{ + g_spm_partition_db.partitions[partition_idx]. + runtime_data.stack_ptr = stack_ptr; + g_spm_partition_db.partitions[partition_idx]. + runtime_data.lr = lr; +} + +uint32_t tfm_spm_partition_get_partition_id(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx].static_data. + partition_id; +} + +uint32_t tfm_spm_partition_get_flags(uint32_t partition_idx) +{ + return g_spm_partition_db.partitions[partition_idx].static_data. + partition_flags; +} + +const struct spm_partition_runtime_data_t * + tfm_spm_partition_get_runtime_data(uint32_t partition_idx) +{ + return &(g_spm_partition_db.partitions[partition_idx].runtime_data); +} + +void tfm_spm_partition_set_state(uint32_t partition_idx, uint32_t state) +{ + g_spm_partition_db.partitions[partition_idx].runtime_data.partition_state = + state; + if (state == SPM_PARTITION_STATE_RUNNING) { + g_spm_partition_db.running_partition_idx = partition_idx; + } +} + +void tfm_spm_partition_set_caller_partition_idx(uint32_t partition_idx, + uint32_t caller_partition_idx) +{ + g_spm_partition_db.partitions[partition_idx].runtime_data. + caller_partition_idx = caller_partition_idx; +} + +void tfm_spm_partition_set_caller_client_id(uint32_t partition_idx, + int32_t caller_client_id) +{ + g_spm_partition_db.partitions[partition_idx].runtime_data. + caller_client_id = caller_client_id; +} + +enum spm_err_t tfm_spm_partition_set_share(uint32_t partition_idx, + uint32_t share) +{ + enum spm_err_t ret = SPM_ERR_OK; + +#if TFM_LVL != 1 + /* Only need to set configuration on levels higher than 1 */ + ret = tfm_spm_hal_set_share_region(share); +#endif + + if (ret == SPM_ERR_OK) { + g_spm_partition_db.partitions[partition_idx].runtime_data.share = share; + } + return ret; +} + +uint32_t tfm_spm_partition_get_running_partition_idx(void) +{ + return g_spm_partition_db.running_partition_idx; +} + +void tfm_spm_partition_cleanup_context(uint32_t partition_idx) +{ + struct spm_partition_desc_t *partition = + &(g_spm_partition_db.partitions[partition_idx]); + partition->runtime_data.caller_partition_idx = SPM_INVALID_PARTITION_IDX; + partition->runtime_data.share = 0; +} diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_api.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_api.h new file mode 100644 index 00000000000..c3f7414d4aa --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_api.h @@ -0,0 +1,287 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __SPM_API_H__ +#define __SPM_API_H__ + +/* This file contains the apis exported by the SPM to tfm core */ +#include "spm_partition_defs.h" +#include "secure_fw/core/tfm_secure_api.h" + +#define SPM_INVALID_PARTITION_IDX (~0U) + +enum spm_err_t { + SPM_ERR_OK = 0, + SPM_ERR_PARTITION_DB_NOT_INIT, + SPM_ERR_PARTITION_ALREADY_ACTIVE, + SPM_ERR_PARTITION_NOT_AVAILABLE, + SPM_ERR_INVALID_CONFIG, +}; + +enum spm_part_state_t { + SPM_PARTITION_STATE_UNINIT = 0, + SPM_PARTITION_STATE_IDLE, + SPM_PARTITION_STATE_RUNNING, + SPM_PARTITION_STATE_SUSPENDED, + SPM_PARTITION_STATE_BLOCKED, + SPM_PARTITION_STATE_CLOSED +}; + +enum spm_part_flag_mask_t { + SPM_PART_FLAG_APP_ROT = 0x01, + SPM_PART_FLAG_PSA_ROT = 0x02, + SPM_PART_FLAG_IPC = 0x04 +}; + +/** + * \brief Runtime context information of a partition + */ +struct spm_partition_runtime_data_t { + uint32_t partition_state; + uint32_t caller_partition_idx; + int32_t caller_client_id; + uint32_t share; + uint32_t stack_ptr; + uint32_t lr; +}; + + +/** + * \brief Returns the index of the partition with the given partition ID. + * + * \param[in] partition_id Partition id + * + * \return the partition idx if partition_id is valid, + * \ref SPM_INVALID_PARTITION_IDX othervise + */ +uint32_t get_partition_idx(uint32_t partition_id); + +/** + * \brief Configure isolated sandbox for a partition + * + * \param[in] partition_idx Partition index + * + * \return Error code \ref spm_err_t + * + * \note This function doesn't check if partition_idx is valid. + */ +enum spm_err_t tfm_spm_partition_sandbox_config(uint32_t partition_idx); + +/** + * \brief Deconfigure sandbox for a partition + * + * \param[in] partition_idx Partition index + * + * \return Error code \ref spm_err_t + * + * \note This function doesn't check if partition_idx is valid. + */ +enum spm_err_t tfm_spm_partition_sandbox_deconfig(uint32_t partition_idx); + +/** + * \brief Get bottom of stack region for a partition + * + * \param[in] partition_idx Partition index + * + * \return Stack region bottom value + * + * \note This function doesn't check if partition_idx is valid. + */ +uint32_t tfm_spm_partition_get_stack_bottom(uint32_t partition_idx); + +/** + * \brief Get top of stack region for a partition + * + * \param[in] partition_idx Partition index + * + * \return Stack region top value + * + * \note This function doesn't check if partition_idx is valid. + */ +uint32_t tfm_spm_partition_get_stack_top(uint32_t partition_idx); + +/** + * \brief Get the id of the partition for its index from the db + * + * \param[in] partition_idx Partition index + * + * \return Partition ID for that partition + * + * \note This function doesn't check if partition_idx is valid. + */ +uint32_t tfm_spm_partition_get_partition_id(uint32_t partition_idx); + +/** + * \brief Get the flags associated with a partition + * + * \param[in] partition_idx Partition index + * + * \return Flags associated with the partition + * + * \note This function doesn't check if partition_idx is valid. + */ +uint32_t tfm_spm_partition_get_flags(uint32_t partition_idx); + +/** + * \brief Get the start of the zero-initialised region for a partition + * + * \param[in] partition_idx Partition idx + * + * \return Start of the zero-initialised region + * + * \note This function doesn't check if partition_idx is valid. + */ +uint32_t tfm_spm_partition_get_zi_start(uint32_t partition_idx); + +/** + * \brief Get the limit of the zero-initialised region for a partition + * + * \param[in] partition_idx Partition idx + * + * \return Limit of the zero-initialised region + * + * \note This function doesn't check if partition_idx is valid. + * \note The address returned is not part of the region. + */ +uint32_t tfm_spm_partition_get_zi_limit(uint32_t partition_idx); + +/** + * \brief Get the start of the read-write region for a partition + * + * \param[in] partition_idx Partition idx + * + * \return Start of the read-write region + * + * \note This function doesn't check if partition_idx is valid. + */ +uint32_t tfm_spm_partition_get_rw_start(uint32_t partition_idx); + +/** + * \brief Get the limit of the read-write region for a partition + * + * \param[in] partition_idx Partition idx + * + * \return Limit of the read-write region + * + * \note This function doesn't check if partition_idx is valid. + * \note The address returned is not part of the region. + */ +uint32_t tfm_spm_partition_get_rw_limit(uint32_t partition_idx); + +/** + * \brief Get the current runtime data of a partition + * + * \param[in] partition_idx Partition index + * + * \return The runtime data of the specified partition + * + * \note This function doesn't check if partition_idx is valid. + */ +const struct spm_partition_runtime_data_t * + tfm_spm_partition_get_runtime_data(uint32_t partition_idx); + +/** + * \brief Returns the index of the partition that has running state + * + * \return The index of the partition with the running state, if there is any + * set. 0 otherwise. + */ +uint32_t tfm_spm_partition_get_running_partition_idx(void); + +/** + * \brief Save stack pointer for partition in database + * + * \param[in] partition_idx Partition index + * \param[in] stack_ptr Stack pointer to be stored + * + * \note This function doesn't check if partition_idx is valid. + */ +void tfm_spm_partition_set_stack(uint32_t partition_id, uint32_t stack_ptr); + +/** + * \brief Save stack pointer and link register for partition in database + * + * \param[in] partition_idx Partition index + * \param[in] stack_ptr Stack pointer to be stored + * \param[in] lr Link register to be stored + * + * \note This function doesn't check if partition_idx is valid. + */ +void tfm_spm_partition_store_context(uint32_t partition_idx, + uint32_t stack_ptr, uint32_t lr); + +/** + * \brief Set the current state of a partition + * + * \param[in] partition_idx Partition index + * \param[in] state The state to be set + * + * \note This function doesn't check if partition_idx is valid. + * \note The \ref state has to have the value set of \ref spm_part_state_t. + */ +void tfm_spm_partition_set_state(uint32_t partition_idx, uint32_t state); + +/** + * \brief Set the caller partition index for a given partition + * + * \param[in] partition_idx Partition index + * \param[in] caller_partition_idx The index of the caller partition + * + * \note This function doesn't check if any of the partition_idxs are valid. + */ +void tfm_spm_partition_set_caller_partition_idx(uint32_t partition_idx, + uint32_t caller_partition_idx); + +/** +* \brief Set the caller client ID for a given partition +* +* \param[in] partition_idx Partition index +* \param[in] caller_client_id The ID of the calling client +* +* \note This function doesn't check if any of the partition_idxs are valid. +*/ +void tfm_spm_partition_set_caller_client_id(uint32_t partition_idx, + int32_t caller_client_id); + +/** + * \brief Set the buffer share region of the partition + * + * \param[in] partition_idx Partition index + * \param[in] share The buffer share region to be set + * + * \return Error code \ref spm_err_t + * + * \note This function doesn't check if partition_idx is valid. + * \note share has to have the value set of \ref tfm_buffer_share_region_e + */ +enum spm_err_t tfm_spm_partition_set_share(uint32_t partition_idx, + uint32_t share); + +/** + * \brief Initialize partition database + * + * \return Error code \ref spm_err_t + */ +enum spm_err_t tfm_spm_db_init(void); + +/** + * \brief Execute partition init function + * + * \return Error code \ref spm_err_t + */ +enum spm_err_t tfm_spm_partition_init(void); + +/** + * \brief Clears the context info from the database for a partition. + * + * \param[in] partition_idx Partition index + * + * \note This function doesn't check if partition_idx is valid. + */ +void tfm_spm_partition_cleanup_context(uint32_t partition_idx); + +#endif /*__SPM_API_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_db.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_db.h new file mode 100644 index 00000000000..60b5fbd4569 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_db.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __SPM_DB_H__ +#define __SPM_DB_H__ + +#ifdef TFM_PSA_API +#include "tfm_thread.h" +#endif + +struct spm_partition_desc_t; +struct spm_partition_db_t; + +uint32_t get_partition_idx(uint32_t partition_id); + +typedef int32_t(*sp_init_function)(void); + +#define TFM_PARTITION_TYPE_APP "APPLICATION-ROT" +#define TFM_PARTITION_TYPE_PSA "PSA-ROT" + +#define TFM_STACK_SIZE 1024 + +#ifdef TFM_PSA_API +enum tfm_partition_priority { + TFM_PRIORITY_LOW = THRD_PRIOR_LOWEST, + TFM_PRIORITY_NORMAL = THRD_PRIOR_MEDIUM, + TFM_PRIORITY_HIGH = THRD_PRIOR_HIGHEST, +}; +#else +enum tfm_partition_priority { + TFM_PRIORITY_LOW = 0xFF, + TFM_PRIORITY_NORMAL = 0x7F, + TFM_PRIORITY_HIGH = 0, +}; +#endif + +#define TFM_PRIORITY(LEVEL) TFM_PRIORITY_##LEVEL + +/** + * Holds the fields of the partition DB used by the SPM code. The values of + * these fields are calculated at compile time, and set during initialisation + * phase. + */ +struct spm_partition_static_data_t { + uint32_t partition_id; + uint32_t partition_flags; + uint32_t partition_priority; + sp_init_function partition_init; +}; + +/** + * Holds the fields that define a partition for SPM. The fields are further + * divided to structures, to keep the related fields close to each other. + */ +struct spm_partition_desc_t { + struct spm_partition_static_data_t static_data; + struct spm_partition_runtime_data_t runtime_data; + struct tfm_spm_partition_platform_data_t *platform_data; +#if TFM_LVL != 1 + struct tfm_spm_partition_memory_data_t memory_data; +#endif +#ifdef TFM_PSA_API + struct tfm_thrd_ctx sp_thrd; + /* + * stack_limit points to starting address of the partitions' stack plus the partitions' stack size. + */ + uint32_t stack_limit; + uint32_t stack_size; +#endif +}; + +/* Macros to pick linker symbols and allow to form the partition data base */ +#define REGION(a, b, c) a##b##c +#define REGION_NAME(a, b, c) REGION(a, b, c) +#if TFM_LVL == 1 +#define REGION_DECLARE(a, b, c) +#else +#define REGION_DECLARE(a, b, c) extern uint32_t REGION_NAME(a, b, c) +#define PART_REGION_ADDR(partition, region) \ + (uint32_t)®ION_NAME(Image$$, partition, region) +#endif + +#endif /* __SPM_DB_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_db_setup.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_db_setup.h new file mode 100644 index 00000000000..a15e7b7cb14 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_db_setup.h @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __SPM_DB_SETUP_H__ +#define __SPM_DB_SETUP_H__ + +#include +#include "spm_db.h" + +/** + * \brief Get the index of a partition. + * + * Gets the index of a partition in the partition db based on the partition ID + * provided as a parameter. + * + * \param[in] partition_id The ID of the partition + * + * \return \ref INVALID_PARTITION_IDX if the provided ID is invalid. The index + * of the partition otherwise. + */ +uint32_t get_partition_idx(uint32_t partition_id); + +struct spm_partition_db_t { + uint32_t is_init; + uint32_t partition_count; + uint32_t running_partition_idx; + struct spm_partition_desc_t partitions[SPM_MAX_PARTITIONS]; +}; + +#define PARTITION_INIT_STATIC_DATA(data, partition, flags, id, priority) \ + do { \ + data.partition_id = partition##_ID; \ + data.partition_flags = flags; \ + data.partition_priority = TFM_PRIORITY(priority); \ + } while (0) + +#if TFM_LVL == 1 +#define PARTITION_INIT_MEMORY_DATA(data, partition) +#else +#define PARTITION_INIT_MEMORY_DATA(data, partition) \ + do { \ + data.code_start = PART_REGION_ADDR(partition, $$Base); \ + data.code_limit = PART_REGION_ADDR(partition, $$Limit); \ + data.ro_start = PART_REGION_ADDR(partition, $$RO$$Base); \ + data.ro_limit = PART_REGION_ADDR(partition, $$RO$$Limit); \ + data.rw_start = PART_REGION_ADDR(partition, _DATA$$RW$$Base); \ + data.rw_limit = PART_REGION_ADDR(partition, _DATA$$RW$$Limit); \ + data.zi_start = PART_REGION_ADDR(partition, _DATA$$ZI$$Base); \ + data.zi_limit = PART_REGION_ADDR(partition, _DATA$$ZI$$Limit); \ + data.stack_bottom = PART_REGION_ADDR(partition, _STACK$$ZI$$Base); \ + data.stack_top = PART_REGION_ADDR(partition, _STACK$$ZI$$Limit); \ + } while (0) +#endif + + +#if TFM_LVL == 1 +#define PARTITION_INIT_RUNTIME_DATA(data, partition) \ + do { \ + data.partition_state = SPM_PARTITION_STATE_UNINIT; \ + } while (0) +#else +#define PARTITION_INIT_RUNTIME_DATA(data, partition) \ + do { \ + data.partition_state = SPM_PARTITION_STATE_UNINIT; \ + data.stack_ptr = \ + PART_REGION_ADDR(partition, _STACK$$ZI$$Limit); \ + } while (0) +#endif + +#define PARTITION_DECLARE(partition, flag, type, id, priority, part_stack_size) \ + do { \ + REGION_DECLARE(Image$$, partition, $$Base); \ + REGION_DECLARE(Image$$, partition, $$Limit); \ + REGION_DECLARE(Image$$, partition, $$RO$$Base); \ + REGION_DECLARE(Image$$, partition, $$RO$$Limit); \ + REGION_DECLARE(Image$$, partition, _DATA$$RW$$Base); \ + REGION_DECLARE(Image$$, partition, _DATA$$RW$$Limit); \ + REGION_DECLARE(Image$$, partition, _DATA$$ZI$$Base); \ + REGION_DECLARE(Image$$, partition, _DATA$$ZI$$Limit); \ + REGION_DECLARE(Image$$, partition, _STACK$$ZI$$Base); \ + REGION_DECLARE(Image$$, partition, _STACK$$ZI$$Limit); \ + int32_t flags = flag; \ + if (tfm_memcmp(type, TFM_PARTITION_TYPE_APP, \ + strlen(TFM_PARTITION_TYPE_APP)) == 0) { \ + flags |= SPM_PART_FLAG_APP_ROT; \ + } else if (tfm_memcmp(type, TFM_PARTITION_TYPE_PSA, \ + strlen(TFM_PARTITION_TYPE_PSA)) == 0) { \ + flags |= SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT; \ + } else { \ + return SPM_ERR_INVALID_CONFIG; \ + } \ + struct spm_partition_desc_t *part_ptr; \ + if (g_spm_partition_db.partition_count >= SPM_MAX_PARTITIONS) { \ + return SPM_ERR_INVALID_CONFIG; \ + } \ + __attribute__((section(".data.partitions_stacks"))) \ + static uint8_t partition##_stack[part_stack_size] __attribute__((aligned(8))); \ + part_ptr = &(g_spm_partition_db.partitions[ \ + g_spm_partition_db.partition_count]); \ + part_ptr->stack_limit = (uint32_t)partition##_stack; \ + part_ptr->stack_size = part_stack_size; \ + PARTITION_INIT_STATIC_DATA(part_ptr->static_data, partition, flags, \ + id, priority); \ + PARTITION_INIT_RUNTIME_DATA(part_ptr->runtime_data, partition); \ + PARTITION_INIT_MEMORY_DATA(part_ptr->memory_data, partition); \ + ++g_spm_partition_db.partition_count; \ + } while (0) + +#define PARTITION_ADD_INIT_FUNC(partition, init_func) \ + do { \ + extern int32_t init_func(void); \ + uint32_t partition_idx = get_partition_idx(partition##_ID); \ + struct spm_partition_desc_t *part_ptr = \ + &(g_spm_partition_db.partitions[partition_idx]); \ + part_ptr->static_data.partition_init = init_func; \ + } while (0) + +#define PARTITION_ADD_PERIPHERAL(partition, peripheral) \ + do { \ + uint32_t partition_idx = get_partition_idx(partition##_ID); \ + struct spm_partition_desc_t *part_ptr = \ + &(g_spm_partition_db.partitions[partition_idx]); \ + part_ptr->platform_data = peripheral; \ + } while (0) + +#endif /* __SPM_DB_SETUP_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_partition_defs.h b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_partition_defs.h new file mode 100644 index 00000000000..0533881f872 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/secure_fw/spm/spm_partition_defs.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __SPM_PARTITION_DEFS_H__ +#define __SPM_PARTITION_DEFS_H__ + +/* FixMe: allocations to be settled. + * 8 bits reserved by TFM for secure partition Id in this prototype + */ +#define TFM_SP_BASE 256 + +/* A reserved partition ID that is used for uninitialised data */ +#define INVALID_PARTITION_ID (~0U) + +/* ***** partition ID-s internal to the TFM ***** */ +#define TFM_INTERNAL_PARTITIONS (2) + +/* From the SPM point of view the non secure processing environment is handled + * as a special secure partition. This simplifies the context switch + * operations. + */ +#define TFM_SP_NON_SECURE_ID (0) +/* A dummy partition for TFM_SP_CORE is created to handle secure partition + * calls done directly from the core, before NS execution started. + */ +#define TFM_SP_CORE_ID (1) + +#include "tfm_partition_defs.inc" + +/* This limit is only used to define the size of the database reserved for + * partitions. There's no requirement that it match the number of partitions + * that get registered in a specific build + */ +#define SPM_MAX_PARTITIONS (TFM_MAX_USER_PARTITIONS + TFM_INTERNAL_PARTITIONS) + +#endif /* __SPM_PARTITION_DEFS_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/LICENSE b/components/TARGET_PSA/TARGET_TFM/LICENSE new file mode 100644 index 00000000000..96810fdc927 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/LICENSE @@ -0,0 +1,2 @@ +Unless specifically indicated otherwise in a file, TF-M files in this directory are licensed under the BSD-3-Clause license, +as can be found in: LICENSE-bsd-3-clause.txt diff --git a/components/TARGET_PSA/TARGET_TFM/LICENSE-BSD-3-Clause b/components/TARGET_PSA/TARGET_TFM/LICENSE-BSD-3-Clause new file mode 100644 index 00000000000..476769c1fbc --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/LICENSE-BSD-3-Clause @@ -0,0 +1,26 @@ +Copyright 2019 Arm Limited and affiliates. +SPDX-License-Identifier: BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. 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. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" +AND 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 HOLDER 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/components/TARGET_PSA/TARGET_TFM/interface/include/psa_client.h b/components/TARGET_PSA/TARGET_TFM/interface/include/psa_client.h new file mode 100644 index 00000000000..70534741a8a --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/interface/include/psa_client.h @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __PSA_CLIENT_H__ +#define __PSA_CLIENT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/*********************** PSA Client Macros and Types *************************/ + +#define PSA_FRAMEWORK_VERSION (0x0100) + +#define PSA_VERSION_NONE (0) + +/* PSA response types */ +#define PSA_SUCCESS (0) +#define PSA_CONNECTION_REFUSED (INT32_MIN + 1) +#define PSA_CONNECTION_BUSY (INT32_MIN + 2) +#define PSA_DROP_CONNECTION (INT32_MIN) + +/* PSA message handles */ +#define PSA_NULL_HANDLE ((psa_handle_t)0) + +typedef int32_t psa_status_t; +typedef int32_t psa_handle_t; + +/** + * A read-only input memory region provided to an RoT Service. + */ +typedef struct psa_invec { + const void *base; /*!< the start address of the memory buffer */ + size_t len; /*!< the size in bytes */ +} psa_invec; + +/** + * A writable output memory region provided to an RoT Service. + */ +typedef struct psa_outvec { + void *base; /*!< the start address of the memory buffer */ + size_t len; /*!< the size in bytes */ +} psa_outvec; + +/*************************** PSA Client API **********************************/ + +/** + * \brief Retrieve the version of the PSA Framework API that is implemented. + * + * \return version The version of the PSA Framework implementation + * that is providing the runtime services to the + * caller. The major and minor version are encoded + * as follows: + * \arg version[15:8] -- major version number. + * \arg version[7:0] -- minor version number. + */ +uint32_t psa_framework_version(void); + +/** + * \brief Retrieve the minor version of an RoT Service or indicate that it is + * not present on this system. + * + * \param[in] sid ID of the RoT Service to query. + * + * \retval PSA_VERSION_NONE The RoT Service is not implemented, or the + * caller is not permitted to access the service. + * \retval > 0 The minor version of the implemented RoT + * Service. + */ +uint32_t psa_version(uint32_t sid); + +/** + * \brief Connect to an RoT Service by its SID. + * + * \param[in] sid ID of the RoT Service to connect to. + * \param[in] minor_version Requested version of the RoT Service. + * + * \retval > 0 A handle for the connection. + * \retval PSA_CONNECTION_REFUSED The SPM or RoT Service has refused the + * connection. + * \retval PSA_CONNECTION_BUSY The SPM or RoT Service cannot make the + * connection at the moment. + * \retval "Does not return" The RoT Service ID and version are not + * supported, or the caller is not permitted to + * access the service. + */ +psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version); + +/** + * \brief Call an RoT Service on an established connection. + * + * \param[in] handle A handle to an established connection. + * \param[in] in_vec Array of input \ref psa_invec structures. + * \param[in] in_len Number of input \ref psa_invec structures. + * \param[in/out] out_vec Array of output \ref psa_outvec structures. + * \param[in] out_len Number of output \ref psa_outvec structures. + * + * \retval >=0 RoT Service-specific status value. + * \retval <0 RoT Service-specific error code. + * \retval PSA_DROP_CONNECTION The connection has been dropped by the RoT + * Service. This indicates that either this or + * a previous message was invalid. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg An invalid handle was passed. + * \arg The connection is already handling a request. + * \arg An invalid memory reference was provided. + * \arg in_len + out_len > PSA_MAX_IOVEC. + * \arg The message is unrecognized by the RoT + * Service or incorrectly formatted. + */ +psa_status_t psa_call(psa_handle_t handle, + const psa_invec *in_vec, + size_t in_len, + psa_outvec *out_vec, + size_t out_len); + +/** + * \brief Close a connection to an RoT Service. + * + * \param[in] handle A handle to an established connection, or the + * null handle. + * + * \retval void Success. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg An invalid handle was provided that is not + * the null handle. + * \arg The connection is handling a request. + */ +void psa_close(psa_handle_t handle); + +#ifdef __cplusplus +} +#endif + +#endif /* __PSA_CLIENT_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/interface/include/psa_service.h b/components/TARGET_PSA/TARGET_TFM/interface/include/psa_service.h new file mode 100644 index 00000000000..753fab76c55 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/interface/include/psa_service.h @@ -0,0 +1,252 @@ +/* + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __PSA_SERVICE_H__ +#define __PSA_SERVICE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/********************** PSA Secure Partition Macros and Types ****************/ + +/* PSA wait timeouts */ +#define PSA_POLL (0x00000000u) +#define PSA_BLOCK (0x80000000u) + +/* A mask value that includes all Secure Partition signals */ +#define PSA_WAIT_ANY (~0u) + +/* Doorbell signal */ +#define PSA_DOORBELL (0x00000008u) + +/* PSA message types */ +#define PSA_IPC_CONNECT (1) +#define PSA_IPC_CALL (2) +#define PSA_IPC_DISCONNECT (3) + +/* Maximum number of input and output vectors */ +#define PSA_MAX_IOVEC (4) + +/* Return code from psa_get() */ +#define PSA_ERR_NOMSG (INT32_MIN + 3) + +/* Store a set of one or more Secure Partition signals */ +typedef uint32_t psa_signal_t; + +/** + * Describe a message received by an RoT Service after calling \ref psa_get(). + */ +typedef struct psa_msg_t { + uint32_t type; /* One of the following values: + * \ref PSA_IPC_CONNECT + * \ref PSA_IPC_CALL + * \ref PSA_IPC_DISCONNECT + */ + psa_handle_t handle; /* A reference generated by the SPM to the + * message returned by psa_get(). + */ + int32_t client_id; /* Partition ID of the sender of the message */ + void *rhandle; /* Be useful for binding a connection to some + * application-specific data or function + * pointer within the RoT Service + * implementation. + */ + size_t in_size[PSA_MAX_IOVEC]; /* Provide the size of each client input + * vector in bytes. + */ + size_t out_size[PSA_MAX_IOVEC];/* Provide the size of each client output + * vector in bytes. + */ +} psa_msg_t; + +/************************* PSA Secure Partition API **************************/ + +/** + * \brief Return the Secure Partition interrupt signals that have been asserted + * from a subset of signals provided by the caller. + * + * \param[in] signal_mask A set of signals to query. Signals that are not + * in this set will be ignored. + * \param[in] timeout Specify either blocking \ref PSA_BLOCK or + * polling \ref PSA_POLL operation. + * + * \retval >0 At least one signal is asserted. + * \retval 0 No signals are asserted. This is only seen when + * a polling timeout is used. + */ +psa_signal_t psa_wait(psa_signal_t signal_mask, uint32_t timeout); + +/** + * \brief Retrieve the message which corresponds to a given RoT Service signal + * and remove the message from the RoT Service queue. + * + * \param[in] signal The signal value for an asserted RoT Service. + * \param[out] msg Pointer to \ref psa_msg_t object for receiving + * the message. + * + * \retval PSA_SUCCESS Success, *msg will contain the delivered + * message. + * \retval PSA_ERR_NOMSG Message could not be delivered. + * \retval "Does not return" The call is invalid because one or more of the + * following are true: + * \arg signal has more than a single bit set. + * \arg signal does not correspond to an RoT Service. + * \arg The RoT Service signal is not currently + * asserted. + * \arg The msg pointer provided is not a valid memory + * reference. + */ +psa_status_t psa_get(psa_signal_t signal, psa_msg_t *msg); + +/** + * \brief Associate some RoT Service private data with a client connection. + * + * \param[in] msg_handle Handle for the client's message. + * \param[in] rhandle Reverse handle allocated by the RoT Service. + * + * \retval void Success, rhandle will be provided with all + * subsequent messages delivered on this + * connection. + * \retval "Does not return" msg_handle is invalid. + */ +void psa_set_rhandle(psa_handle_t msg_handle, void *rhandle); + +/** + * \brief Read a message parameter or part of a message parameter from a client + * input vector. + * + * \param[in] msg_handle Handle for the client's message. + * \param[in] invec_idx Index of the input vector to read from. Must be + * less than \ref PSA_MAX_IOVEC. + * \param[out] buffer Buffer in the Secure Partition to copy the + * requested data to. + * \param[in] num_bytes Maximum number of bytes to be read from the + * client input vector. + * + * \retval >0 Number of bytes copied. + * \retval 0 There was no remaining data in this input + * vector. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg msg_handle is invalid. + * \arg msg_handle does not refer to a + * \ref PSA_IPC_CALL message. + * \arg invec_idx is equal to or greater than + * \ref PSA_MAX_IOVEC. + * \arg the memory reference for buffer is invalid or + * not writable. + */ +size_t psa_read(psa_handle_t msg_handle, uint32_t invec_idx, + void *buffer, size_t num_bytes); + +/** + * \brief Skip over part of a client input vector. + * + * \param[in] msg_handle Handle for the client's message. + * \param[in] invec_idx Index of input vector to skip from. Must be + * less than \ref PSA_MAX_IOVEC. + * \param[in] num_bytes Maximum number of bytes to skip in the client + * input vector. + * + * \retval >0 Number of bytes skipped. + * \retval 0 There was no remaining data in this input + * vector. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg msg_handle is invalid. + * \arg msg_handle does not refer to a + * \ref PSA_IPC_CALL message. + * \arg invec_idx is equal to or greater than + * \ref PSA_MAX_IOVEC. + */ +size_t psa_skip(psa_handle_t msg_handle, uint32_t invec_idx, size_t num_bytes); + +/** + * \brief Write a message response to a client output vector. + * + * \param[in] msg_handle Handle for the client's message. + * \param[out] outvec_idx Index of output vector in message to write to. + * Must be less than \ref PSA_MAX_IOVEC. + * \param[in] buffer Buffer with the data to write. + * \param[in] num_bytes Number of bytes to write to the client output + * vector. + * + * \retval void Success + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg msg_handle is invalid. + * \arg msg_handle does not refer to a + * \ref PSA_IPC_CALL message. + * \arg outvec_idx is equal to or greater than + * \ref PSA_MAX_IOVEC. + * \arg The memory reference for buffer is invalid. + * \arg The call attempts to write data past the end + * of the client output vector. + */ +void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx, + const void *buffer, size_t num_bytes); + +/** + * \brief Complete handling of a specific message and unblock the client. + * + * \param[in] msg_handle Handle for the client's message. + * \param[in] status Message result value to be reported to the + * client. + * + * \retval void Success. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg msg_handle is invalid. + * \arg An invalid status code is specified for the + * type of message. + */ +void psa_reply(psa_handle_t msg_handle, psa_status_t status); + +/** + * \brief Send a PSA_DOORBELL signal to a specific Secure Partition. + * + * \param[in] partition_id Secure Partition ID of the target partition. + * + * \retval void Success. + * \retval "Does not return" partition_id does not correspond to a Secure + * Partition. + */ +void psa_notify(int32_t partition_id); + +/** + * \brief Clear the PSA_DOORBELL signal. + * + * \param[in] void + * + * \retval void Success. + * \retval "Does not return" The Secure Partition's doorbell signal is not + * currently asserted. + */ +void psa_clear(void); + +/** + * \brief Inform the SPM that an interrupt has been handled (end of interrupt). + * + * \param[in] irq_signal The interrupt signal that has been processed. + * + * \retval void Success. + * \retval "Does not return" The call is invalid, one or more of the + * following are true: + * \arg irq_signal is not an interrupt signal. + * \arg irq_signal indicates more than one signal. + * \arg irq_signal is not currently asserted. + */ +void psa_eoi(psa_signal_t irq_signal); + +#ifdef __cplusplus +} +#endif + +#endif /* __PSA_SERVICE_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_api.h b/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_api.h new file mode 100644 index 00000000000..79a94cbdd06 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_api.h @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_API_H__ +#define __TFM_API_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "interface/include/psa_client.h" + +#define TFM_INVALID_CLIENT_ID 0 + +/** + * \brief Checks if the provided client ID is a secure client ID. + * + * \param[in] client_id Client ID to check + * + * \return Returns 1 if the client Id is secure. Otherwise, returns 0. + */ +#define TFM_CLIENT_ID_IS_S(client_id) ((client_id)>0) + +/** + * \brief Checks if the provided client ID is a non-secure client ID. + * + * \param[in] client_id Client ID to check + * + * \return Returns 1 if the client Id is non-secure. Otherwise, returns 0. + */ +#define TFM_CLIENT_ID_IS_NS(client_id) ((client_id)<0) + +/* FixMe: sort out DEBUG compile option and limit return value options + * on external interfaces */ +/* Note: + * TFM will only return values recognized and parsed by TFM core. + * Service return codes are not automatically passed on to REE. + * Any non-zero return value is interpreted as an error that may trigger + * TEE error handling flow. + */ +enum tfm_status_e +{ + TFM_SUCCESS = 0, + TFM_PARTITION_BUSY, + TFM_ERROR_SECURE_DOMAIN_LOCKED, + TFM_ERROR_INVALID_PARAMETER, + TFM_ERROR_PARTITION_NON_REENTRANT, + TFM_ERROR_NS_THREAD_MODE_CALL, + TFM_ERROR_NOT_INITIALIZED, + TFM_ERROR_NO_ACTIVE_PARTITION, + TFM_ERROR_INVALID_EXC_MODE, + TFM_SECURE_LOCK_FAILED, + TFM_SECURE_UNLOCK_FAILED, + TFM_ERROR_GENERIC = 0x1F, + TFM_PARTITION_SPECIFIC_ERROR_MIN, +}; + +//==================== Secure function declarations ==========================// + +/** + * \brief Assign client ID to the current TZ context + * + * \param[in] ns_client_id The client ID to be assigned to the current + * context + * \return TFM_SUCCESS if the client ID assigned successfully, an error code + * according to \ref tfm_status_e in case of error. + * + * \note This function have to be called from handler mode. + */ +enum tfm_status_e tfm_register_client_id (int32_t ns_client_id); + +/** + * \brief Retrieve the version of the PSA Framework API that is implemented + * + * \return The version of the PSA Framework + */ +uint32_t tfm_psa_framework_version_veneer(void); + +/** + * \brief Return version of secure function provided by secure binary + * + * \param[in] sid ID of secure service + * + * \return Version number of secure function + */ +uint32_t tfm_psa_version_veneer(uint32_t sid); + +/** + * \brief Connect to secure function + * + * \param[in] sid ID of secure service + * \param[in] minor_version Minor version of SF requested by client + * + * \return Returns handle to connection + */ +psa_handle_t tfm_psa_connect_veneer(uint32_t sid, uint32_t minor_version); + +/** + * \brief Call a secure function referenced by a connection handle + * + * \param[in] handle Handle to connection + * \param[in] in_vecs invec containing pointer/count of input vectors + * \param[in] out_vecs outvec containing pointer/count of output vectors + * + * \return Returns \ref psa_status_t status code + */ +psa_status_t tfm_psa_call_veneer(psa_handle_t handle, + const psa_invec *in_vecs, + psa_outvec *out_vecs); + +/** + * \brief Close connection to secure function referenced by a connection handle + * + * \param[in] handle Handle to connection + * + * \return Returns \ref psa_status_t status code + */ +psa_status_t tfm_psa_close_veneer(psa_handle_t handle); + +//================ End Secure function declarations ==========================// + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_API_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_ns_lock.h b/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_ns_lock.h new file mode 100644 index 00000000000..0c73a60a68b --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_ns_lock.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_NS_LOCK_H__ +#define __TFM_NS_LOCK_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef int32_t (*veneer_fn) (uint32_t arg0, uint32_t arg1, + uint32_t arg2, uint32_t arg3); + +/** + * \brief NS world, NS lock based dispatcher + * + * \details To be called from the wrapper API interface + */ + +uint32_t tfm_ns_lock_dispatch(veneer_fn fn, + uint32_t arg0, uint32_t arg1, + uint32_t arg2, uint32_t arg3); + +/** + * \brief NS world, Init NS lock + * + * \details Needs to be called during non-secure app init + * to initialize the TFM NS lock object + */ +uint32_t tfm_ns_lock_init(); + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_NS_LOCK_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_ns_svc.h b/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_ns_svc.h new file mode 100644 index 00000000000..0399af9f0c0 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_ns_svc.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include + +#ifndef __TFM_NS_SVC_H__ +#define __TFM_NS_SVC_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Include all the SVC handler headers + */ +#include "tfm_nspm_svc_handler.h" + +/** + * \brief Macro to encode an svc instruction + * + */ +#define SVC(code) __ASM("svc %0" : : "I" (code)) + +/** + * \def LIST_SVC_NSPM + * + * \brief This is an X macro which lists + * the SVC interface exposed by TF-M + * for the NS OS. + * + */ +#define LIST_SVC_NSPM \ + X(SVC_TFM_NSPM_REGISTER_CLIENT_ID, tfm_nspm_svc_register_client_id) \ + +/** + * \brief Numbers associated to each SVC available + * + * \details Start from 1 as 0 is reserved by RTX + */ +enum tfm_svc_num { + SVC_INVALID = 0, + +#define X(SVC_ENUM, SVC_HANDLER) SVC_ENUM, + + /* SVC API for Services */ +#ifdef TFM_NS_CLIENT_IDENTIFICATION + LIST_SVC_NSPM +#endif + +#undef X + + /* add all the new entries above this line */ + SVC_TFM_MAX, +}; + +/* number of user SVC functions */ +#define USER_SVC_COUNT (SVC_TFM_MAX - 1) + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_NS_SVC_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_nspm_svc_handler.h b/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_nspm_svc_handler.h new file mode 100644 index 00000000000..73f75a95e13 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/interface/include/tfm_nspm_svc_handler.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2018, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_NSPM_SVC_HANDLER_H__ +#define __TFM_NSPM_SVC_HANDLER_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Reports the client ID of this task to TF-M (SVC function) + * + * \param [in] client_id Client ID to register. + * + * \return Returns 1 if the client ID was successfully reported 0 otherwise + */ +uint32_t tfm_nspm_svc_register_client_id(uint32_t client_id); + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_NSPM_SVC_HANDLER_H__ */ diff --git a/components/TARGET_PSA/TARGET_TFM/mbed_lib.json b/components/TARGET_PSA/TARGET_TFM/mbed_lib.json new file mode 100644 index 00000000000..f6530249804 --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "tfm", + "macros": [ + "TFM_PSA_API", "MBED_TZ_DEFAULT_ACCESS=1" + ], + "config": { + "level": { + "help": "TFM security level", + "macro_name": "TFM_LVL", + "value": 1 + }, + "handle_pool_size": { + "help": "maximum number of handles that can be opened at the same time", + "macro_name": "TFM_CONN_HANDLE_MAX_NUM", + "value": 10 + }, + "rot_pool_size": { + "help": "maximum number of RoT services allowed", + "macro_name": "TFM_SPM_MAX_ROT_SERV_NUM", + "value": 20 + }, + "message_pool_size": { + "help": "maximum number of active messages allowed", + "macro_name": "TFM_MSG_QUEUE_MAX_MSG_NUM", + "value": 10 + } + } +} + diff --git a/components/TARGET_PSA/TARGET_TFM/tf-m-integration.md b/components/TARGET_PSA/TARGET_TFM/tf-m-integration.md new file mode 100644 index 00000000000..089a46075bc --- /dev/null +++ b/components/TARGET_PSA/TARGET_TFM/tf-m-integration.md @@ -0,0 +1,111 @@ +# TF-M integration to Mbed-OS +This document is an initial draft for TF-M for Mbed-OS porting guide . + +## Audience +This guide is intended for developers wishing to port Mbed-OS with TF-M used as a secure kernel for ARMv8-M targets. + +Prior knowledge with both TF-M & Mbed-OS concepts is assumed. + +## Build system concepts: + +Mbed-OS build system is based on [Mbed-CLI](https://github.com/ARMmbed/mbed-cli). +Mbed-CLI build system performs lookup for source and header files within project directory and adds them all to a build. All folders will be scanned for sources except for: +- folders starting with `TARGET_*` +- folders starting with `COMPONENT_*` +- folders starting with `FEATURE_*` +- folders starting with `TESTS_*` (not true for `mbed test` builds) +- files and folders listed in `.mbedignore` + +The ignored folders listed above can be explicitly added to a compilation by adding following keys to a target description in `targets.json`: +- adding `extra_labels_add`, `inherits` and `sub_target` for adding `TARGET_*` +- adding `components_add` for adding `COMPONENT_*` +- `features_add` for adding `FEATURE_*` + +TF-M is built as bare-metal in a secure target, in order to build a secure target with TF-M as its' kernel need to add `--app-config /tools/psa/tfm/mbed_app.json` to the build command of the secure target. + +## Build hooks + +Mbed-OS testing tools are designed to work with a single image (`.bin` or `.hex`). +When building mbed-os for ARMv8-M targets two images are created. One for normal world(NW) and one for TrustZone(TZ). +Mbed-OS build system provides `post_binary_hook` that allows executing arbitrary Python script for merging NW and TZ images. Typically `post_binary_hook` is added to NW target and assumes TZ target images as a prerequisite. + +## Porting ARMv8-M targets + +Typically firmware for ARMv8-M targets consist of 2 or more images: normal world and TrustZone image. More images can be present in case boot loaders are used. +Two images must be built and linked separately. TrustZone image must be built first. + +There may be code and/or header files sharing between the two targets. +Nested folder layout typically provides more easy code reuse between two targets: +Example: + +```txt +└── tragets + └── TARGET_ + └── TARGET_ + ├── common_files <-- files shared between NW and TZ images + ├── TARGET__NS + │   └── normal_world_files <-- files only to be included for NW build + └── TARGET__S + └── trustzone_files <-- files only to be included for TZ build +``` + +The target should be represented in a following way in `target.json` (`MUSCA_A1` is taken for example and should be substituted): +```json +... +"ARM_MUSCA_A1": { + "public": false, + "inherits": ["Target"], + "supported_toolchains": ["ARMC6", "GCC_ARM"], + "default_toolchain": "ARMC6", + "extra_labels": ["ARM_SSG", "MUSCA_A1"], + }, + "ARM_MUSCA_A1_NS": { + "inherits": ["NSPE_Target", "ARM_MUSCA_A1"], + "core": "Cortex-M33-NS", + "device_has_add": ["INTERRUPTIN", "LPTICKER", "SERIAL", "SLEEP", "USTICKER"], + "macros": [ + "MBED_FAULT_HANDLER_DISABLED", + "MBEDTLS_PSA_CRYPTO_C" + ], + "extra_labels_add": ["MUSCA_A1_NS", "PSA", "TFM"], + "post_binary_hook": {"function": "ArmMuscaA1Code.binary_hook"} + }, + "ARM_MUSCA_A1_S": { + "inherits": ["SPE_Target", "ARM_MUSCA_A1"], + "core": "Cortex-M33", + "device_has_add": ["FLASH"], + "macros": [ + "MBED_MPU_CUSTOM", + "MBEDTLS_PSA_CRYPTO_SPM", + "MBEDTLS_PSA_CRYPTO_C", + "MBEDTLS_ENTROPY_NV_SEED" + ], + "components_add": ["FLASHIAP"], + "extra_labels_add": ["MUSCA_A1_S", "PSA", "TFM"] + }, +``` + +Example details: +- Secure target: + - `"device_has_add": ["FLASH"]` and `"components_add": ["FLASHIAP"]` for enabling storage stack. Required by PSA Internal storage service. + - `"extra_labels_add": ["PSA", "TFM"]` are required to add PSA services and TF-M SPM implementation sources to a compilation + - all the macros from the example above are required + - must inherit from `SPE_Target` +- Nonsecure target: + - must inherit from `NSPE_Target` + - `"extra_labels_add": ["PSA", "TFM"]` are required to add PSA services and TF-M SPM implementation sources to a compilation + - all the macros from the example above are required + - `post_binary_hook` is used to combine secure and non-secure images + +### HAL +For porting Mbed-OS & TF-M both Mbed-OS and TF-M HAL layers should be created. + +#### Mbed-OS HAL: +Follow instructions for [Mbed-OS HAL porting](https://os.mbed.com/docs/mbed-os/v5.11/porting/porting-hal-modules.html) + +#### TF-M: +Mbed-OS contains customized TF-M version. TF-M services reference implementation was replaced by Mbed-OS version. Thus TF-M has different HAL layer comparing to vanilla [TF-M reference implementation](https://git.trustedfirmware.org/trusted-firmware-m.git/about/). + +The porting layer consists of: +- All functions listed in: `components/TARGET_PSA/TARGET_TFM/COMPONENT_SPE/platform/include/tfm_spm_hal.h` +- Flash API `mbed-os/hal/flash_api.h` implementation is required for TZ image. It is used by PSA Internal trusted storage implementation. diff --git a/components/TARGET_PSA/inc/psa/client.h b/components/TARGET_PSA/inc/psa/client.h new file mode 100644 index 00000000000..da731018ba0 --- /dev/null +++ b/components/TARGET_PSA/inc/psa/client.h @@ -0,0 +1,23 @@ +/* Copyright (c) 2017-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. + */ + +#if defined(TARGET_TFM) +#include "interface/include/psa_client.h" +#else +#include "TARGET_MBED_SPM/psa_defs.h" +#include "TARGET_MBED_SPM/spm_client.h" +#endif diff --git a/components/TARGET_PSA/inc/psa/error.h b/components/TARGET_PSA/inc/psa/error.h new file mode 100644 index 00000000000..ba0e0e31b59 --- /dev/null +++ b/components/TARGET_PSA/inc/psa/error.h @@ -0,0 +1,56 @@ +/* +* 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. +*/ + +/* psa/error.h +Standard error codes for the SPM and RoT Services +As defined in PSA Firmware Framework v1.0 +*/ + +#ifndef __PSA_ERROR__ +#define __PSA_ERROR__ + +#include +#include + +typedef int32_t psa_status_t; + +#define PSA_SUCCESS ((psa_status_t)0) + +#define PSA_ERROR_PROGRAMMER_ERROR ((psa_status_t)-129) +#define PSA_ERROR_CONNECTION_REFUSED ((psa_status_t)-130) +#define PSA_ERROR_CONNECTION_BUSY ((psa_status_t)-131) +#define PSA_ERROR_GENERIC_ERROR ((psa_status_t)-132) +#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)-133) +#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)-134) +#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)-135) +#define PSA_ERROR_INVALID_HANDLE ((psa_status_t)-136) +#define PSA_ERROR_BAD_STATE ((psa_status_t)-137) +#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)-138) +#define PSA_ERROR_ALREADY_EXISTS ((psa_status_t)-139) +#define PSA_ERROR_DOES_NOT_EXIST ((psa_status_t)-140) +#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)-141) +#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)-142) +#define PSA_ERROR_INSUFFICIENT_DATA ((psa_status_t)-143) +#define PSA_ERROR_SERVICE_FAILURE ((psa_status_t)-144) +#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)-145) +#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)-146) +#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)-147) +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) +#define PSA_ERROR_DATA_CORRUPT ((psa_status_t)-152) + +#endif // __PSA_ERROR__ diff --git a/components/TARGET_PSA/inc/psa/internal_trusted_storage.h b/components/TARGET_PSA/inc/psa/internal_trusted_storage.h new file mode 100644 index 00000000000..7b3b6a9785a --- /dev/null +++ b/components/TARGET_PSA/inc/psa/internal_trusted_storage.h @@ -0,0 +1,23 @@ +/* Copyright (c) 2017-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 __MBED_INTERNAL_TRUSTED_STORAGE_H__ +#define __MBED_INTERNAL_TRUSTED_STORAGE_H__ + +#include "psa_prot_internal_storage.h" + +#endif // __MBED_INTERNAL_TRUSTED_STORAGE_H__ diff --git a/components/TARGET_PSA/inc/psa/lifecycle.h b/components/TARGET_PSA/inc/psa/lifecycle.h new file mode 100644 index 00000000000..4f269fd386b --- /dev/null +++ b/components/TARGET_PSA/inc/psa/lifecycle.h @@ -0,0 +1,74 @@ +/* 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 __LIFECYCLE_H__ +#define __LIFECYCLE_H__ + +/** @file +@brief This file describes the PSA RoT Lifecycle API +*/ + +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef int32_t psa_status_t; + +#define PSA_LIFECYCLE_STATE_MASK (0xff00u) /**< A mask value that extracts the main lifecycle state */ +#define PSA_LIFECYCLE_SUBSTATE_MASK (0x00ffu) /**< A mask value that extracts the IMPLEMENTATION DEFINED lifecycle sub-state */ + +#define PSA_LIFECYCLE_UNKNOWN (0x0000u) /**< State is unknown */ +#define PSA_LIFECYCLE_ASSEMBLY_AND_TEST (0x1000u) /**< Assembly and Test state */ +#define PSA_LIFECYCLE_PSA_ROT_PROVISIONING (0x2000u) /**< PSA RoT Provisioning state */ +#define PSA_LIFECYCLE_SECURED (0x3000u) /**< Secured state */ +#define PSA_LIFECYCLE_NON_PSA_ROT_DEBUG (0x4000u) /**< Non PSA RoT debug state */ +#define PSA_LIFECYCLE_RECOVERABLE_PSA_ROT_DEBUG (0x5000u) /**< Recoverable PSA RoT Debug state */ +#define PSA_LIFECYCLE_DECOMMISSIONED (0x6000u) /**< Decommissioned state */ + +#define PSA_LIFECYCLE_SUCCESS 0 +#define PSA_LIFECYCLE_ERROR (INT32_MIN + 1000) + +/** \brief Get PSA RoT lifecycle state + * + * \retval The main state and sub-state are encoded as follows:@n + @a version[15:8] – main lifecycle state + @a version[7:0] – IMPLEMENTATION DEFINED sub-state + */ +uint32_t psa_security_lifecycle_state(void); + +/** \brief Request state change + * + * State change requested and the system. + * TODO when not drunk + */ +psa_status_t mbed_psa_reboot_and_request_new_security_state(uint32_t new_state); + + +/** \brief Resets the system + * + */ +void psa_system_reset(); + +#ifdef __cplusplus +} +#endif + +#endif // __LIFECYCLE_H__ diff --git a/components/TARGET_PSA/inc/psa/protected_storage.h b/components/TARGET_PSA/inc/psa/protected_storage.h new file mode 100644 index 00000000000..eb010adb172 --- /dev/null +++ b/components/TARGET_PSA/inc/psa/protected_storage.h @@ -0,0 +1,200 @@ +/* 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. + */ + +/** @file +@brief This file describes the PSA Protected Storage API +*/ + +#ifndef __PSA_PROTECTED_STORAGE_H__ +#define __PSA_PROTECTED_STORAGE_H__ + +#include +#include + +#include "psa/error.h" +#include "psa/storage_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define PSA_PS_API_VERSION_MAJOR 1 /**< The major version number of the PSA PS API. It will be incremented on significant updates that may include breaking changes */ +#define PSA_PS_API_VERSION_MINOR 1 /**< The minor version number of the PSA PS API. It will be incremented in small updates that are unlikely to include breaking changes */ + + +/** + * \brief create a new or modify an existing key/value pair + * + * \param[in] uid the identifier for the data + * \param[in] data_length The size in bytes of the data in `p_data` + * \param[in] p_data A buffer containing the data + * \param[in] create_flags The flags indicating the properties of the data + * + * \return A status indicating the success/failure of the operation + + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the provided uid value was already created with PSA_STORAGE_WRITE_ONCE_FLAG + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one or more of the given arguments were invalid. + * \retval PSA_ERROR_NOT_SUPPORTED The operation failed because one or more of the flags provided in `create_flags` is not supported or is not valid + * \retval PSA_ERROR_INSUFFICIENT_STORAGE The operation failed because there was insufficient space on the storage medium + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_GENERIC_ERROR The operation failed because of an unspecified internal failure + */ +psa_status_t psa_ps_set(psa_storage_uid_t uid, + uint32_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags); + +/** + * \brief Retrieve the value for a provided uid + * + * \param[in] uid The identifier for the data + * \param[in] data_offset The offset within the data associated with the `uid` to start retrieving data + * \param[in] data_length The amount of data to read (and the minimum allocated size of the `p_data` buffer) + * \param[out] p_data The buffer where the data will be placed upon successful completion + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one or more of the given arguments were invalid (null pointer, wrong flags etc.) + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided uid value was not found in the storage + * \retval PSA_ERROR_BUFFER_TOO_SMALL The operation failed because the data associated with provided uid is not the same size as `data_size` + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_GENERIC_ERROR The operation failed because of an unspecified internal failure + * \retval PSA_ERROR_DATA_CORRUPT The operation failed because of an authentication failure when attempting to get the key + * \retval PSA_ERROR_INVALID_SIGNATURE The operation failed because the data associated with the UID failed authentication + */ +psa_status_t psa_ps_get(psa_storage_uid_t uid, + uint32_t data_offset, + uint32_t data_length, + void *p_data); + +/** + * \brief Retrieve the metadata about the provided uid + * + * \param[in] uid The identifier for the data + * \param[out] p_info A pointer to the `psa_storage_info_t` struct that will be populated with the metadata + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one or more of the given arguments were invalid (null pointer, wrong flags etc.) + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided uid value was not found in the storage + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_GENERIC_ERROR The operation failed because of an unspecified internal failure + * \retval PSA_ERROR_DATA_CORRUPT The operation failed because of an authentication failure when attempting to get the key + * \retval PSA_ERROR_INVALID_SIGNATURE The operation failed because the data associated with the UID failed authentication + */ +psa_status_t psa_ps_get_info(psa_storage_uid_t uid, struct psa_storage_info_t *p_info); + +/** + * \brief Remove the provided uid and its associated data from the storage + * + * \param[in] uid The identifier for the data to be removed + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one or more of the given arguments were invalid (null pointer, wrong flags etc.) + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided uid value was not found in the storage + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the provided uid value was created with psa_eps_WRITE_ONCE_FLAG + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_GENERIC_ERROR The operation failed because of an unspecified internal failure + */ +psa_status_t psa_ps_remove(psa_storage_uid_t uid); + +/** + * Creates an asset based on the given identifier, the maximum size and + * creation flags. This create allocates the space in the secure storage + * area without setting any data in the asset. + * + * It is only necessary to call this function for items that will be written + * with the \ref psa_ps_set_extended function. If only the \ref psa_ps_set function + * is needed, calls to this function are redundant. + * + * If the \ref PSA_STORAGE_FLAG_WRITE_ONCE flag is passed, implementations should + * return \ref PSA_ERROR_NOT_SUPPORTED. + * + * This function is optional. Not all PSA Protected Storage Implementations + * will implement this function. Consult the documentation of your chosen + * platform to determine if it is present. + * + * \param[in] uid A unique identifier for the asset. + * \param[in] size The maximum size in bytes of the asset. + * \param[in] create_flags Create flags \ref psa_storage_create_flags_t. + * + * \retval PSA_SUCCESS The assest does not exist and the input parameters are correct or + * the asset already exists, the input parameters are the same that + * have been used to create the asset and the owner is the same and the current asset content is kept + * TDB: "Owner is the same" doesn't really make sense from a PSA perspective, as each partition + * has its own UID space, making other partitions' data unadressable + * \retval PSA_ERROR_STORAGE_FAILURE The create action has a physical storage error + * \retval PSA_ERROR_INSUFFICIENT_STORAGE The maximum size is bigger of the current available space + * \retval PSA_ERROR_NOT_SUPPORTED One or more create_flags are not valid or supported + * \retval PSA_ERROR_INVALID_ARGUMENT The asset exists and the input paramters are not the same as the existing asset + * \retval PSA_ERROR_NOT_SUPPORTED The implementation of the API does not support this function + * \retval PSA_ERROR_GENERIC_ERROR The operation has failed due to an unspecified error + */ +psa_status_t psa_ps_create(psa_storage_uid_t uid, + uint32_t size, + psa_storage_create_flags_t create_flags); + +/** + * Sets partial data into an asset based on the given identifier, data_offset, + * data length and p_data. + * + * Before calling this function, the asset must have been created with a call + * to \ref psa_ps_create. + * + * This function is optional. Not all PSA Protected Storage Implementations + * will implement this function. Consult the documentation of your chosen + * platform to determine if it is present. + * + * \param[in] uid The unique identifier for the asset. + * \param[in] data_offset Offset within the asset to start the write. + * \param[in] data_length The size in bytes of the data in p_data to write. + * \param[in] p_data Pointer to a buffer which contains the data to write. + * + * \retval PSA_SUCCESS If the asset exists, the input parameters are correct and the data + * is correctly written in the physical storage + * \retval PSA_ERROR_STORAGE_FAILURE If the data is not written correctly in the physical storage + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one or more of the given arguments were invalid (null pointer, wrong flags, etc) + * \retval PSA_ERROR_DOES_NOT_EXIST The specified UID was not found + * \retval PSA_ERROR_NOT_SUPPORTED The implementation of the API does not support this function + * \retval PSA_ERROR_GENERIC_ERROR The operation failed due to an unspecified error + * \retval PSA_ERROR_DATA_CORRUPT The operation failed because the existing data has been corrupted + * \retval PSA_ERROR_INVALID_SIGNATURE The operation failed because the existing data failed authentication (MAC check failed) + */ +psa_status_t psa_ps_set_extended(psa_storage_uid_t uid, + uint32_t data_offset, + uint32_t data_length, + const void *p_data); + +/** + * Returns a bitmask with flags set for all of the optional features supported + * by the implementation. + * + * Currently defined flags are limited to: + * - \ref PSA_STORAGE_SUPPORT_SET_EXTENDED + */ +uint32_t psa_ps_get_support(void); + +#ifdef __cplusplus +} +#endif + + +#endif // __PSA_PROTECTED_STORAGE_H__ diff --git a/components/TARGET_PSA/inc/psa/service.h b/components/TARGET_PSA/inc/psa/service.h new file mode 100644 index 00000000000..dbce303c1ff --- /dev/null +++ b/components/TARGET_PSA/inc/psa/service.h @@ -0,0 +1,24 @@ +/* Copyright (c) 2017-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. + */ + +#if defined(TARGET_TFM) +#include "interface/include/psa_service.h" +#else +#include "TARGET_MBED_SPM/psa_defs.h" +#include "TARGET_MBED_SPM/COMPONENT_SPE/spm_server.h" +#include "TARGET_MBED_SPM/COMPONENT_SPE/spm_panic.h" +#endif diff --git a/components/TARGET_PSA/inc/psa/storage_common.h b/components/TARGET_PSA/inc/psa/storage_common.h new file mode 100644 index 00000000000..4008d485245 --- /dev/null +++ b/components/TARGET_PSA/inc/psa/storage_common.h @@ -0,0 +1,61 @@ +/* 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. + */ + +/** @file +@brief This file includes common definitions for PSA storage +*/ + +#ifndef __PSA_STORAGE_COMMON_H__ +#define __PSA_STORAGE_COMMON_H__ + +#include +#include +#include "psa/error.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \brief Flags used when creating a data entry + */ +typedef uint32_t psa_storage_create_flags_t; + +#define PSA_STORAGE_FLAG_NONE 0 /**< No flags to pass */ +#define PSA_STORAGE_FLAG_WRITE_ONCE (1 << 0) /**< The data associated with the uid will not be able to be modified or deleted. Intended to be used to set bits in `psa_storage_create_flags_t`*/ + +/** \brief A type for UIDs used for identifying data + */ +typedef uint64_t psa_storage_uid_t; + +/** + * \brief A container for metadata associated with a specific uid + */ +struct psa_storage_info_t { + uint32_t size; /**< The size of the data associated with a uid **/ + psa_storage_create_flags_t flags; /**< The flags set when the uid was created **/ +}; + +/** \brief Flag indicating that \ref psa_storage_create and \ref psa_storage_set_extended are supported */ +#define PSA_STORAGE_SUPPORT_SET_EXTENDED (1 << 0) + +/** \brief PSA storage specific error codes */ +#define PSA_ERROR_DATA_CORRUPT ((psa_status_t)-152) + +#ifdef __cplusplus +} +#endif + +#endif // __PSA_STORAGE_COMMON_H__ diff --git a/components/TARGET_PSA/services/COMPONENT_PSA_SRV_IMPL/mbed_lib.json b/components/TARGET_PSA/services/COMPONENT_PSA_SRV_IMPL/mbed_lib.json new file mode 100644 index 00000000000..9e4db970062 --- /dev/null +++ b/components/TARGET_PSA/services/COMPONENT_PSA_SRV_IMPL/mbed_lib.json @@ -0,0 +1,13 @@ +{ + "name": "psa-services", + "requires": [ + "drivers", + "platform", + "mbedtls", + "mbed-crypto", + "storage", + "flashiap-block-device", + "tdbstore", + "storage_tdb_internal" + ] +} diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h b/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h index 43ce138949c..71769d3da7c 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h +++ b/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h @@ -42,23 +42,24 @@ typedef enum psa_sec_function_s { PSA_CRYPTO_INVALID, PSA_CRYPTO_INIT, PSA_IMPORT_KEY, + PSA_ALLOCATE_KEY, + PSA_CREATE_KEY, + PSA_OPEN_KEY, + PSA_CLOSE_KEY, PSA_DESTROY_KEY, PSA_GET_KEY_INFORMATION, PSA_EXPORT_KEY, PSA_EXPORT_PUBLIC_KEY, - PSA_KEY_POLICY_INIT, - PSA_KEY_POLICY_SET_USAGE, - PSA_KEY_POLICY_GET_USAGE, - PSA_KEY_POLICY_GET_ALGORITHM, PSA_SET_KEY_POLICY, PSA_GET_KEY_POLICY, - PSA_SET_KEY_LIFETIME, PSA_GET_KEY_LIFETIME, PSA_HASH_SETUP, PSA_HASH_UPDATE, PSA_HASH_FINISH, PSA_HASH_VERIFY, PSA_HASH_ABORT, + PSA_HASH_CLONE_BEGIN, + PSA_HASH_CLONE_END, PSA_MAC_SIGN_SETUP, PSA_MAC_VERIFY_SETUP, PSA_MAC_UPDATE, @@ -95,52 +96,50 @@ typedef enum psa_sec_function_s { */ /** psa_crypto_ipc_s struct used for some of the - * PSA Crypto APIs that need psa_key_slot_t and psa_algorithm_t arguments + * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t arguments * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to * pack them together. */ - typedef struct psa_crypto_ipc_s { psa_sec_function_t func; - psa_key_slot_t key; + psa_key_handle_t handle; psa_algorithm_t alg; } psa_crypto_ipc_t; /** psa_crypto_derivation_ipc_s struct used for some of the - * PSA Crypto APIs that need psa_key_slot_t and psa_algorithm_t arguments + * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t arguments * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to * pack them together. */ typedef struct psa_crypto_derivation_ipc_s { psa_sec_function_t func; - psa_key_slot_t key; + psa_key_handle_t handle; psa_algorithm_t alg; size_t capacity; } psa_crypto_derivation_ipc_t; /** psa_key_mng_ipc_s struct used for some of the - * PSA Crypto APIs that need psa_key_slot_t and psa_algorithm_t arguments + * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t arguments * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to * pack them together. */ - typedef struct psa_key_mng_ipc_s { - psa_key_slot_t key; + psa_key_handle_t handle; + psa_key_lifetime_t lifetime; psa_key_type_t type; psa_sec_function_t func; } psa_key_mng_ipc_t; /** psa_crypto_ipc_aead_s struct used for AEAD integrated - * PSA Crypto APIs that need psa_key_slot_t and psa_algorithm_t and extra arguments + * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t and extra arguments * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to * pack them together. */ - // Max length supported for nonce is 16 bytes. #define PSA_AEAD_MAX_NONCE_SIZE 16 typedef struct psa_crypto_ipc_aead_s { psa_sec_function_t func; - psa_key_slot_t key; + psa_key_handle_t handle; psa_algorithm_t alg; uint16_t nonce_size; size_t additional_data_length; @@ -149,19 +148,18 @@ typedef struct psa_crypto_ipc_aead_s { } psa_crypto_ipc_aead_t; /** psa_crypto_ipc_asymmetric_s struct used for asymmetric - * PSA Crypto APIs that need psa_key_slot_t and psa_algorithm_t arguments + * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t arguments * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to * pack them together. */ typedef struct psa_crypto_ipc_asymmetric_s { psa_sec_function_t func; - psa_key_slot_t key; + psa_key_handle_t handle; psa_algorithm_t alg; size_t input_length; size_t salt_length; } psa_crypto_ipc_asymmetric_t; - /**@}*/ #endif /* PSA_CRYPTO_SPE_PLATFORM_H */ diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h b/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h index 8b20939da70..6d94034788d 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h +++ b/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h @@ -1,5 +1,3 @@ -#include "spm/psa_defs.h" - /** * \file psa/crypto_struct.h * @@ -27,21 +25,40 @@ #ifndef PSA_CRYPTO_STRUCT_H #define PSA_CRYPTO_STRUCT_H +#include "psa/client.h" + struct psa_hash_operation_s { psa_handle_t handle; }; +#define PSA_HASH_OPERATION_INIT { PSA_NULL_HANDLE } +static inline struct psa_hash_operation_s psa_hash_operation_init(void) +{ + const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT; + return (v); +} + struct psa_mac_operation_s { psa_handle_t handle; }; +#define PSA_MAC_OPERATION_INIT { PSA_NULL_HANDLE } +static inline struct psa_mac_operation_s psa_mac_operation_init(void) +{ + const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT; + return (v); +} + struct psa_cipher_operation_s { psa_handle_t handle; }; -struct psa_aead_operation_s { - psa_handle_t handle; -}; +#define PSA_CIPHER_OPERATION_INIT { PSA_NULL_HANDLE } +static inline struct psa_cipher_operation_s psa_cipher_operation_init(void) +{ + const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT; + return (v); +} struct psa_crypto_generator_s { psa_handle_t handle; @@ -59,5 +76,11 @@ struct psa_key_policy_s { psa_algorithm_t alg; }; +#define PSA_KEY_POLICY_INIT {0, 0} +static inline struct psa_key_policy_s psa_key_policy_init(void) +{ + const struct psa_key_policy_s v = PSA_KEY_POLICY_INIT; + return (v); +} #endif /* PSA_CRYPTO_STRUCT_H */ 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 d7349038746..c8a55717897 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 @@ -24,10 +24,7 @@ #include #include #include "psa_crypto_srv_ifs.h" - -#include "spm/psa_defs.h" -#include "spm/spm_client.h" - +#include "psa/client.h" #include "crypto.h" #include "crypto_platform_spe.h" @@ -35,7 +32,7 @@ psa_status_t psa_crypto_init(void) { - psa_error_t err_call; + psa_status_t err_call; psa_handle_t handle = PSA_NULL_HANDLE; handle = psa_connect(PSA_CRYPTO_INIT_ID, MINOR_VER); @@ -46,10 +43,6 @@ psa_status_t psa_crypto_init(void) err_call = psa_call(handle, NULL, 0, NULL, 0); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } - return ((psa_status_t) err_call); } @@ -59,7 +52,7 @@ psa_status_t psa_crypto_init(void) psa_status_t psa_mac_abort(psa_mac_operation_t *operation) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; if (operation->handle <= 0) { @@ -68,32 +61,28 @@ psa_status_t psa_mac_abort(psa_mac_operation_t *operation) psa_crypto_ipc.func = PSA_MAC_ABORT; - psa_invec_t in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; + psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; err_call = psa_call(operation->handle, &in_vec, 1, NULL, 0); psa_close(operation->handle); operation->handle = PSA_NULL_HANDLE; - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } - return ((psa_status_t) err_call); } static psa_status_t psa_mac_setup(psa_mac_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t key_handle, psa_algorithm_t alg, psa_sec_function_t func) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; psa_crypto_ipc.func = func; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; - psa_invec_t in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; + psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; operation->handle = psa_connect(PSA_MAC_ID, MINOR_VER); @@ -102,30 +91,27 @@ static psa_status_t psa_mac_setup(psa_mac_operation_t *operation, } err = psa_call(operation->handle, &in_vec, 1, NULL, 0); - if (err < 0) { - err = PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err); } psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t key_handle, psa_algorithm_t alg) { psa_status_t status = PSA_SUCCESS; - status = psa_mac_setup(operation, key, alg, PSA_MAC_SIGN_SETUP); + status = psa_mac_setup(operation, key_handle, alg, PSA_MAC_SIGN_SETUP); return status; } psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t key_handle, psa_algorithm_t alg) { psa_status_t status = PSA_SUCCESS; - status = psa_mac_setup(operation, key, alg, PSA_MAC_VERIFY_SETUP); + status = psa_mac_setup(operation, key_handle, alg, PSA_MAC_VERIFY_SETUP); return status; } @@ -133,23 +119,20 @@ psa_status_t psa_mac_update(psa_mac_operation_t *operation, const uint8_t *input, size_t input_length) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; psa_crypto_ipc.func = PSA_MAC_UPDATE; - psa_invec_t in_vec[2] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + psa_invec in_vec[2] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, { input, input_length } }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err = psa_call(operation->handle, in_vec, 2, NULL, 0); - if (err < 0) { - err = PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err); } @@ -159,28 +142,24 @@ psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, size_t mac_size, size_t *mac_length) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; psa_crypto_ipc.func = PSA_MAC_SIGN_FINISH; - psa_invec_t in_vec[2] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + psa_invec in_vec[2] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, { &mac_size, sizeof(mac_size) } }; - psa_outvec_t out_vec[2] = { { mac, mac_size }, { mac_length, sizeof(*mac_length) } }; + psa_outvec out_vec[2] = { { mac, mac_size }, { mac_length, sizeof(*mac_length) } }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err_call = psa_call(operation->handle, in_vec, 2, out_vec, 2); psa_close(operation->handle); operation->handle = PSA_NULL_HANDLE; - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } - return ((psa_status_t) err_call); } @@ -188,28 +167,24 @@ psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_length) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; psa_crypto_ipc.func = PSA_MAC_VERIFY_FINISH; - psa_invec_t in_vec[3] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + psa_invec in_vec[3] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, { &mac_length, sizeof(mac_length) }, { mac, mac_length } }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err_call = psa_call(operation->handle, in_vec, 3, NULL, 0); psa_close(operation->handle); operation->handle = PSA_NULL_HANDLE; - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } - return ((psa_status_t) err_call); } @@ -220,7 +195,7 @@ psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, psa_status_t psa_hash_abort(psa_hash_operation_t *operation) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; if (operation->handle <= 0) { @@ -229,29 +204,25 @@ psa_status_t psa_hash_abort(psa_hash_operation_t *operation) psa_crypto_ipc.func = PSA_HASH_ABORT; - psa_invec_t in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; + psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; err_call = psa_call(operation->handle, &in_vec, 1, NULL, 0); psa_close(operation->handle); operation->handle = PSA_NULL_HANDLE; - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } - return ((psa_status_t) err_call); } psa_status_t psa_hash_setup(psa_hash_operation_t *operation, psa_algorithm_t alg) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; psa_crypto_ipc.func = PSA_HASH_SETUP; psa_crypto_ipc.alg = alg; - psa_invec_t in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; + psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; operation->handle = psa_connect(PSA_HASH_ID, MINOR_VER); if (operation->handle <= 0) { @@ -259,9 +230,6 @@ psa_status_t psa_hash_setup(psa_hash_operation_t *operation, } err = psa_call(operation->handle, &in_vec, 1, NULL, 0); - if (err < 0) { - err = PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err); } @@ -270,23 +238,20 @@ psa_status_t psa_hash_update(psa_hash_operation_t *operation, const uint8_t *input, size_t input_length) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; psa_crypto_ipc.func = PSA_HASH_UPDATE; - psa_invec_t in_vec[2] = { {&psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + psa_invec in_vec[2] = { {&psa_crypto_ipc, sizeof(psa_crypto_ipc) }, { input, input_length } }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err = psa_call(operation->handle, in_vec, 2, NULL, 0); - if (err < 0) { - err = PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err); } @@ -296,30 +261,26 @@ psa_status_t psa_hash_finish(psa_hash_operation_t *operation, size_t hash_size, size_t *hash_length) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; psa_crypto_ipc.func = PSA_HASH_FINISH; - psa_invec_t in_vec[2] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + psa_invec in_vec[2] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, { &hash_size, sizeof(hash_size) } }; - psa_outvec_t out_vec[2] = { { hash, hash_size }, + psa_outvec out_vec[2] = { { hash, hash_size }, { hash_length, sizeof(*hash_length) } }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err_call = psa_call(operation->handle, in_vec, 2, out_vec, 2); psa_close(operation->handle); operation->handle = PSA_NULL_HANDLE; - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } - return ((psa_status_t) err_call); } @@ -327,36 +288,70 @@ psa_status_t psa_hash_verify(psa_hash_operation_t *operation, const uint8_t *hash, size_t hash_length) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; psa_crypto_ipc.func = PSA_HASH_VERIFY; - psa_invec_t in_vec[3] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc_t) }, + psa_invec in_vec[3] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc_t) }, { &hash_length, sizeof(hash_length) }, { hash, hash_length } }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err_call = psa_call(operation->handle, in_vec, 3, NULL, 0); psa_close(operation->handle); operation->handle = PSA_NULL_HANDLE; - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; + return ((psa_status_t) err_call); +} + +psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation) +{ + psa_status_t err_call = 0; + psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; + size_t index; + + psa_invec in_vec[2] = { + { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + { &index, sizeof(index) } + }; + psa_outvec out_vec = { &index, sizeof(index) }; + + if (source_operation->handle <= PSA_NULL_HANDLE || target_operation->handle != PSA_NULL_HANDLE) { + return (PSA_ERROR_BAD_STATE); } + target_operation->handle = psa_connect(PSA_HASH_ID, MINOR_VER); + if (target_operation->handle <= PSA_NULL_HANDLE) { + return (PSA_ERROR_COMMUNICATION_FAILURE); + } + + psa_crypto_ipc.func = PSA_HASH_CLONE_BEGIN; + err_call = psa_call(source_operation->handle, in_vec, 1, &out_vec, 1); + if (err_call != 0) { + goto exit; + } + + psa_crypto_ipc.func = PSA_HASH_CLONE_END; + err_call = psa_call(target_operation->handle, in_vec, 2, NULL, 0); + +exit: + if (err_call != 0) { + psa_close(target_operation->handle); + target_operation->handle = PSA_NULL_HANDLE; + } return ((psa_status_t) err_call); } - /****************************************************************/ /* AEAD */ /****************************************************************/ -psa_status_t psa_aead_encrypt(psa_key_slot_t key, +psa_status_t psa_aead_encrypt(psa_key_handle_t key_handle, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, @@ -369,13 +364,13 @@ psa_status_t psa_aead_encrypt(psa_key_slot_t key, size_t *ciphertext_length) { psa_handle_t handle = PSA_NULL_HANDLE; - psa_error_t call_error = PSA_SUCCESS; + psa_status_t call_error = PSA_SUCCESS; psa_crypto_ipc_aead_t psa_crypto_ipc = { 0, 0, 0, 0, 0, 0, { 0 } }; - psa_invec_t in_vec[2]; - psa_outvec_t out_vec[2]; + psa_invec in_vec[2]; + psa_outvec out_vec[2]; psa_crypto_ipc.func = PSA_AEAD_ENCRYPT; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; psa_crypto_ipc.additional_data_length = additional_data_length; psa_crypto_ipc.input_length = plaintext_length; @@ -397,19 +392,19 @@ psa_status_t psa_aead_encrypt(psa_key_slot_t key, memcpy(buffer + additional_data_length, plaintext, plaintext_length); - in_vec[0] = (psa_invec_t) { + in_vec[0] = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc_aead_t) }; - in_vec[1] = (psa_invec_t) { + in_vec[1] = (psa_invec) { buffer, additional_data_length + plaintext_length }; - out_vec[0] = (psa_outvec_t) { + out_vec[0] = (psa_outvec) { ciphertext, ciphertext_size }; - out_vec[1] = (psa_outvec_t) { + out_vec[1] = (psa_outvec) { ciphertext_length, sizeof(*ciphertext_length) }; @@ -422,14 +417,11 @@ psa_status_t psa_aead_encrypt(psa_key_slot_t key, psa_close(handle); - if (call_error < 0) { - call_error = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t)call_error); } -psa_status_t psa_aead_decrypt(psa_key_slot_t key, +psa_status_t psa_aead_decrypt(psa_key_handle_t key_handle, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, @@ -442,13 +434,13 @@ psa_status_t psa_aead_decrypt(psa_key_slot_t key, size_t *plaintext_length) { psa_handle_t handle = PSA_NULL_HANDLE; - psa_error_t call_error = PSA_SUCCESS; + psa_status_t call_error = PSA_SUCCESS; psa_crypto_ipc_aead_t psa_crypto_ipc = { 0, 0, 0, 0, 0, 0, { 0 } }; - psa_invec_t in_vec[2]; - psa_outvec_t out_vec[2]; + psa_invec in_vec[2]; + psa_outvec out_vec[2]; psa_crypto_ipc.func = PSA_AEAD_DECRYPT; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; psa_crypto_ipc.additional_data_length = additional_data_length; psa_crypto_ipc.input_length = ciphertext_length; @@ -469,19 +461,19 @@ psa_status_t psa_aead_decrypt(psa_key_slot_t key, memcpy(buffer, additional_data, additional_data_length); memcpy(buffer + additional_data_length, ciphertext, ciphertext_length); - in_vec[0] = (psa_invec_t) { + in_vec[0] = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc_aead_t) }; - in_vec[1] = (psa_invec_t) { + in_vec[1] = (psa_invec) { buffer, additional_data_length + ciphertext_length }; - out_vec[0] = (psa_outvec_t) { + out_vec[0] = (psa_outvec) { plaintext, plaintext_size }; - out_vec[1] = (psa_outvec_t) { + out_vec[1] = (psa_outvec) { plaintext_length, sizeof(*plaintext_length) }; @@ -494,9 +486,6 @@ psa_status_t psa_aead_decrypt(psa_key_slot_t key, psa_close(handle); - if (call_error < 0) { - call_error = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t)call_error); } @@ -504,7 +493,7 @@ psa_status_t psa_aead_decrypt(psa_key_slot_t key, /* PSA_ASYMMETRIC */ /****************************************************************/ -psa_status_t psa_asymmetric_sign(psa_key_slot_t key, +psa_status_t psa_asymmetric_sign(psa_key_handle_t key_handle, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, @@ -513,26 +502,26 @@ psa_status_t psa_asymmetric_sign(psa_key_slot_t key, size_t *signature_length) { psa_handle_t handle = PSA_NULL_HANDLE; - psa_error_t call_error = PSA_SUCCESS; + psa_status_t call_error = PSA_SUCCESS; psa_crypto_ipc_asymmetric_t psa_crypto_ipc = { 0, 0, 0, 0, 0 }; - psa_invec_t in_vec[2]; - psa_outvec_t out_vec[2]; + psa_invec in_vec[2]; + psa_outvec out_vec[2]; psa_crypto_ipc.func = PSA_ASYMMETRIC_SIGN; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; - in_vec[0] = (psa_invec_t) { + in_vec[0] = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc_asymmetric_t) }; - in_vec[1] = (psa_invec_t) { + in_vec[1] = (psa_invec) { hash, hash_length }; - out_vec[0] = (psa_outvec_t) { + out_vec[0] = (psa_outvec) { signature, signature_size }; - out_vec[1] = (psa_outvec_t) { + out_vec[1] = (psa_outvec) { signature_length, sizeof(*signature_length) }; @@ -545,13 +534,10 @@ psa_status_t psa_asymmetric_sign(psa_key_slot_t key, psa_close(handle); - if (call_error < 0) { - call_error = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t)call_error); } -psa_status_t psa_asymmetric_verify(psa_key_slot_t key, +psa_status_t psa_asymmetric_verify(psa_key_handle_t key_handle, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, @@ -559,22 +545,22 @@ psa_status_t psa_asymmetric_verify(psa_key_slot_t key, size_t signature_size) { psa_handle_t handle = PSA_NULL_HANDLE; - psa_error_t call_error = PSA_SUCCESS; + psa_status_t call_error = PSA_SUCCESS; psa_crypto_ipc_asymmetric_t psa_crypto_ipc = { 0, 0, 0, 0, 0 }; - psa_invec_t in_vec[3]; + psa_invec in_vec[3]; psa_crypto_ipc.func = PSA_ASYMMETRIC_VERIFY; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; - in_vec[0] = (psa_invec_t) { + in_vec[0] = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc_asymmetric_t) }; - in_vec[1] = (psa_invec_t) { + in_vec[1] = (psa_invec) { signature, signature_size }; - in_vec[2] = (psa_invec_t) { + in_vec[2] = (psa_invec) { hash, hash_length }; handle = psa_connect(PSA_ASYMMETRIC_ID, MINOR_VER); @@ -584,14 +570,11 @@ psa_status_t psa_asymmetric_verify(psa_key_slot_t key, call_error = psa_call(handle, in_vec, 3, NULL, 0); psa_close(handle); - if (call_error < 0) { - call_error = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t)call_error); } static psa_status_t psa_asymmetric_operation(psa_sec_function_t func, - psa_key_slot_t key, + psa_key_handle_t key_handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, @@ -602,13 +585,13 @@ static psa_status_t psa_asymmetric_operation(psa_sec_function_t func, size_t *output_length) { psa_handle_t handle = PSA_NULL_HANDLE; - psa_error_t call_error = PSA_SUCCESS; + psa_status_t call_error = PSA_SUCCESS; psa_crypto_ipc_asymmetric_t psa_crypto_ipc = { 0, 0, 0, 0, 0 }; - psa_invec_t in_vec[2]; - psa_outvec_t out_vec[2]; + psa_invec in_vec[2]; + psa_outvec out_vec[2]; psa_crypto_ipc.func = func; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; psa_crypto_ipc.input_length = input_length; psa_crypto_ipc.salt_length = salt_length; @@ -621,18 +604,18 @@ static psa_status_t psa_asymmetric_operation(psa_sec_function_t func, memcpy(buffer, input, input_length); memcpy(buffer + input_length, salt, salt_length); - in_vec[0] = (psa_invec_t) { + in_vec[0] = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc_asymmetric_t) }; - in_vec[1] = (psa_invec_t) { + in_vec[1] = (psa_invec) { buffer, input_length + salt_length }; - out_vec[0] = (psa_outvec_t) { + out_vec[0] = (psa_outvec) { output, output_size }; - out_vec[1] = (psa_outvec_t) { + out_vec[1] = (psa_outvec) { output_length, sizeof(*output_length) }; @@ -645,13 +628,10 @@ static psa_status_t psa_asymmetric_operation(psa_sec_function_t func, psa_close(handle); - if (call_error < 0) { - call_error = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t)call_error); } -psa_status_t psa_asymmetric_encrypt(psa_key_slot_t key, +psa_status_t psa_asymmetric_encrypt(psa_key_handle_t key_handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, @@ -661,14 +641,15 @@ psa_status_t psa_asymmetric_encrypt(psa_key_slot_t key, size_t output_size, size_t *output_length) { - psa_status_t status = psa_asymmetric_operation(PSA_ASYMMETRIC_ENCRYPT, key, + psa_status_t status = psa_asymmetric_operation(PSA_ASYMMETRIC_ENCRYPT, + key_handle, alg, input, input_length, salt, salt_length, output, output_size, output_length); return status; } -psa_status_t psa_asymmetric_decrypt(psa_key_slot_t key, +psa_status_t psa_asymmetric_decrypt(psa_key_handle_t key_handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, @@ -678,7 +659,8 @@ psa_status_t psa_asymmetric_decrypt(psa_key_slot_t key, size_t output_size, size_t *output_length) { - psa_status_t status = psa_asymmetric_operation(PSA_ASYMMETRIC_DECRYPT, key, + psa_status_t status = psa_asymmetric_operation(PSA_ASYMMETRIC_DECRYPT, + key_handle, alg, input, input_length, salt, salt_length, output, output_size, output_length); @@ -689,22 +671,18 @@ psa_status_t psa_asymmetric_decrypt(psa_key_slot_t key, /* PSA_KEY_MANAGMENT */ /****************************************************************/ -psa_status_t psa_get_key_lifetime(psa_key_slot_t key, - psa_key_lifetime_t *lifetime) +psa_status_t psa_allocate_key(psa_key_handle_t *key_handle) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; - psa_key_mng_ipc.type = 0; - psa_key_mng_ipc.func = PSA_GET_KEY_LIFETIME; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = *key_handle; + psa_key_mng_ipc.func = PSA_ALLOCATE_KEY; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[1] = { - { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) } + psa_invec in_vec[1] = { + { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) } }; - psa_outvec_t out_vec[1] = { { - lifetime, (lifetime == NULL ? 0 : - sizeof(*lifetime)) - } + psa_outvec out_vec[1] = { + { key_handle, sizeof(*key_handle) } }; handle = psa_connect(PSA_KEY_MNG_ID, MINOR_VER); @@ -715,24 +693,56 @@ psa_status_t psa_get_key_lifetime(psa_key_slot_t key, err_call = psa_call(handle, in_vec, 1, out_vec, 1); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; + return ((psa_status_t) err_call); +} + +psa_status_t psa_create_key(psa_key_lifetime_t lifetime, + psa_key_id_t id, + psa_key_handle_t *key_handle) +{ + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = *key_handle; + psa_key_mng_ipc.lifetime = lifetime; + psa_key_mng_ipc.func = PSA_CREATE_KEY; + psa_handle_t handle = PSA_NULL_HANDLE; + psa_invec in_vec[2] = { + { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }, + { &id, sizeof(id) } + }; + psa_outvec out_vec[1] = { { + key_handle, sizeof(*key_handle) + } + }; + + handle = psa_connect(PSA_KEY_MNG_ID, MINOR_VER); + if (handle <= 0) { + return (PSA_ERROR_COMMUNICATION_FAILURE); } + + err_call = psa_call(handle, in_vec, 2, out_vec, 1); + psa_close(handle); + return ((psa_status_t) err_call); } -psa_status_t psa_set_key_lifetime(psa_key_slot_t key, - psa_key_lifetime_t lifetime) +psa_status_t psa_open_key(psa_key_lifetime_t lifetime, + psa_key_id_t id, + psa_key_handle_t *key_handle) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; - psa_key_mng_ipc.type = 0; - psa_key_mng_ipc.func = PSA_SET_KEY_LIFETIME; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = *key_handle; + psa_key_mng_ipc.lifetime = lifetime; + psa_key_mng_ipc.func = PSA_OPEN_KEY; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[2] = { - { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) }, - { &lifetime, sizeof(psa_key_lifetime_t) } + psa_invec in_vec[2] = { + { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }, + { &id, sizeof(id) } + }; + psa_outvec out_vec[1] = { { + key_handle, sizeof(*key_handle) + } }; handle = psa_connect(PSA_KEY_MNG_ID, MINOR_VER); @@ -740,21 +750,60 @@ psa_status_t psa_set_key_lifetime(psa_key_slot_t key, return (PSA_ERROR_COMMUNICATION_FAILURE); } - err_call = psa_call(handle, in_vec, 2, NULL, 0); + err_call = psa_call(handle, in_vec, 2, out_vec, 1); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; + return ((psa_status_t) err_call); +} + +psa_status_t psa_close_key(psa_key_handle_t key_handle) +{ + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; + psa_key_mng_ipc.func = PSA_CLOSE_KEY; + psa_handle_t handle = PSA_NULL_HANDLE; + psa_invec in_vec[1] = { + { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) } + }; + + handle = psa_connect(PSA_KEY_MNG_ID, MINOR_VER); + if (handle <= 0) { + return (PSA_ERROR_COMMUNICATION_FAILURE); } + + err_call = psa_call(handle, in_vec, 1, NULL, 0); + psa_close(handle); + return ((psa_status_t) err_call); } -/* the psa_key_policy_init psa_key_policy_get_usage, -psa_key_policy_get_algorithm and psa_key_policy_set_usage -accessor functions are implemented directly in the non-secure partition */ -void psa_key_policy_init(psa_key_policy_t *policy) +psa_status_t psa_get_key_lifetime(psa_key_handle_t key_handle, + psa_key_lifetime_t *lifetime) { - memset(policy, 0, sizeof(psa_key_policy_t)); + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; + psa_key_mng_ipc.func = PSA_GET_KEY_LIFETIME; + psa_handle_t handle = PSA_NULL_HANDLE; + psa_invec in_vec[1] = { + { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) } + }; + psa_outvec out_vec[1] = { { + lifetime, (lifetime == NULL ? 0 : + sizeof(*lifetime)) + } + }; + + handle = psa_connect(PSA_KEY_MNG_ID, MINOR_VER); + if (handle <= 0) { + return (PSA_ERROR_COMMUNICATION_FAILURE); + } + + err_call = psa_call(handle, in_vec, 1, out_vec, 1); + psa_close(handle); + + return ((psa_status_t) err_call); } psa_key_usage_t psa_key_policy_get_usage(const psa_key_policy_t *policy) @@ -775,16 +824,15 @@ void psa_key_policy_set_usage(psa_key_policy_t *policy, policy->alg = alg; } -psa_status_t psa_set_key_policy(psa_key_slot_t key, +psa_status_t psa_set_key_policy(psa_key_handle_t key_handle, const psa_key_policy_t *policy) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; - psa_key_mng_ipc.type = 0; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; psa_key_mng_ipc.func = PSA_SET_KEY_POLICY; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[2] = { + psa_invec in_vec[2] = { { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) }, { policy, (policy == NULL ? 0 : sizeof(*policy)) } }; @@ -797,27 +845,23 @@ psa_status_t psa_set_key_policy(psa_key_slot_t key, err_call = psa_call(handle, in_vec, 2, NULL, 0); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } -psa_status_t psa_get_key_policy(psa_key_slot_t key, +psa_status_t psa_get_key_policy(psa_key_handle_t key_handle, psa_key_policy_t *policy) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; - psa_key_mng_ipc.type = 0; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; psa_key_mng_ipc.func = PSA_GET_KEY_POLICY; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[1] = { { + psa_invec in_vec[1] = { { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) } }; - psa_outvec_t out_vec[1] = { { + psa_outvec out_vec[1] = { { policy, (policy == NULL ? 0 : sizeof(*policy)) } @@ -831,24 +875,21 @@ psa_status_t psa_get_key_policy(psa_key_slot_t key, err_call = psa_call(handle, in_vec, 1, out_vec, 1); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } -psa_status_t psa_import_key(psa_key_slot_t key, +psa_status_t psa_import_key(psa_key_handle_t key_handle, psa_key_type_t type, const uint8_t *data, size_t data_length) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; psa_key_mng_ipc.type = type; psa_key_mng_ipc.func = PSA_IMPORT_KEY; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[2] = { + psa_invec in_vec[2] = { { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) }, { data, data_length } }; @@ -861,21 +902,17 @@ psa_status_t psa_import_key(psa_key_slot_t key, err_call = psa_call(handle, in_vec, 2, NULL, 0); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } -psa_status_t psa_destroy_key(psa_key_slot_t key) +psa_status_t psa_destroy_key(psa_key_handle_t key_handle) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; - psa_key_mng_ipc.type = 0; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; psa_key_mng_ipc.func = PSA_DESTROY_KEY; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[1] = { + psa_invec in_vec[1] = { { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) } }; @@ -887,28 +924,24 @@ psa_status_t psa_destroy_key(psa_key_slot_t key) err_call = psa_call(handle, in_vec, 1, NULL, 0); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } -psa_status_t psa_get_key_information(psa_key_slot_t key, +psa_status_t psa_get_key_information(psa_key_handle_t key_handle, psa_key_type_t *type, size_t *bits) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; - psa_key_mng_ipc.type = 0; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; psa_key_mng_ipc.func = PSA_GET_KEY_INFORMATION; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[1] = { { + psa_invec in_vec[1] = { { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) } }; - psa_outvec_t out_vec[2] = { { + psa_outvec out_vec[2] = { { type, (type == NULL ? 0 : sizeof(psa_key_type_t)) }, @@ -926,27 +959,23 @@ psa_status_t psa_get_key_information(psa_key_slot_t key, err_call = psa_call(handle, in_vec, 1, out_vec, 2); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } -static psa_status_t psa_export_key_common(psa_key_slot_t key, +static psa_status_t psa_export_key_common(psa_key_handle_t key_handle, uint8_t *data, size_t data_size, size_t *data_length, psa_sec_function_t func) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; - psa_key_mng_ipc.type = 0; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; psa_key_mng_ipc.func = func; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[1] = { { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) } }; - psa_outvec_t out_vec[2] = { { data, data_size }, + psa_invec in_vec[1] = { { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc_t) } }; + psa_outvec out_vec[2] = { { data, data_size }, { data_length, sizeof(*data_length) } }; @@ -958,63 +987,55 @@ static psa_status_t psa_export_key_common(psa_key_slot_t key, err_call = psa_call(handle, in_vec, 1, out_vec, 2); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } -psa_status_t psa_export_key(psa_key_slot_t key, +psa_status_t psa_export_key(psa_key_handle_t key_handle, uint8_t *data, size_t data_size, size_t *data_length) { - psa_status_t status = psa_export_key_common(key, data, data_size, + psa_status_t status = psa_export_key_common(key_handle, data, data_size, data_length, PSA_EXPORT_KEY); return status; } -psa_status_t psa_export_public_key(psa_key_slot_t key, +psa_status_t psa_export_public_key(psa_key_handle_t key_handle, uint8_t *data, size_t data_size, size_t *data_length) { - psa_status_t status = psa_export_key_common(key, data, data_size, + psa_status_t status = psa_export_key_common(key_handle, data, data_size, data_length, PSA_EXPORT_PUBLIC_KEY); return status; } -psa_status_t psa_generate_key(psa_key_slot_t key, +psa_status_t psa_generate_key(psa_key_handle_t key_handle, psa_key_type_t type, size_t bits, const void *parameters, size_t parameters_size) { - psa_error_t err_call; - psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0 }; - psa_key_mng_ipc.key = key; + psa_status_t err_call; + psa_key_mng_ipc_t psa_key_mng_ipc = { 0, 0, 0, 0 }; + psa_key_mng_ipc.handle = key_handle; psa_key_mng_ipc.type = type; psa_key_mng_ipc.func = PSA_GENERATE_KEY; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec[3]; + psa_invec in_vec[3]; in_vec[0].base = &psa_key_mng_ipc; in_vec[0].len = sizeof(psa_key_mng_ipc_t); in_vec[1].base = &bits; in_vec[1].len = sizeof(size_t); - /* currently the parameter argument is used only for RSA keypair - and ignored in other cases. support for other algorithms - may be added later*/ - if (PSA_KEY_TYPE_RSA_KEYPAIR == type) { - in_vec[2].base = parameters; - /* size of parameter is unsigned integer as defined in header */ - in_vec[2].len = parameters_size; - } else { // currenty ignored for non RSA case - in_vec[2].base = NULL; - in_vec[2].len = 0; + if (((parameters == NULL) && (parameters_size != 0)) || ((parameters != NULL) && (parameters_size == 0))) { + return (PSA_ERROR_INVALID_ARGUMENT); } + in_vec[2].base = parameters; + in_vec[2].len = parameters_size; + handle = psa_connect(PSA_KEY_MNG_ID, MINOR_VER); if (handle <= 0) { return (PSA_ERROR_COMMUNICATION_FAILURE); @@ -1023,9 +1044,6 @@ psa_status_t psa_generate_key(psa_key_slot_t key, err_call = psa_call(handle, in_vec, 3, NULL, 0); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } @@ -1036,9 +1054,9 @@ psa_status_t psa_generate_key(psa_key_slot_t key, psa_status_t psa_generate_random(uint8_t *output, size_t output_size) { - psa_error_t err_call; + psa_status_t err_call; psa_handle_t handle = PSA_NULL_HANDLE; - psa_outvec_t out_vec[1] = { { output, output_size } }; + psa_outvec out_vec[1] = { { output, output_size } }; handle = psa_connect(PSA_RNG_ID, MINOR_VER); if (handle <= 0) { @@ -1048,9 +1066,6 @@ psa_status_t psa_generate_random(uint8_t *output, err_call = psa_call(handle, NULL, 0, out_vec, 1); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } @@ -1061,9 +1076,9 @@ psa_status_t psa_generate_random(uint8_t *output, psa_status_t mbedtls_psa_inject_entropy(const unsigned char *seed, size_t seed_size) { - psa_error_t err_call; + psa_status_t err_call; psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec_t in_vec = { seed, seed_size }; + psa_invec in_vec = { seed, seed_size }; handle = psa_connect(PSA_ENTROPY_ID, MINOR_VER); if (handle <= 0) { @@ -1072,9 +1087,6 @@ psa_status_t mbedtls_psa_inject_entropy(const unsigned char *seed, err_call = psa_call(handle, &in_vec, 1, NULL, 0); psa_close(handle); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } @@ -1084,21 +1096,18 @@ psa_status_t mbedtls_psa_inject_entropy(const unsigned char *seed, psa_status_t psa_get_generator_capacity(const psa_crypto_generator_t *generator, size_t *capacity) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_derivation_ipc_t psa_crypto_ipc = { 0, 0, 0, 0 }; psa_crypto_ipc.func = PSA_GET_GENERATOR_CAPACITY; - psa_invec_t in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - psa_outvec_t out_vec = { capacity, sizeof(*capacity) }; + psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; + psa_outvec out_vec = { capacity, sizeof(*capacity) }; if (generator->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err_call = psa_call(generator->handle, &in_vec, 1, &out_vec, 1); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } @@ -1106,52 +1115,46 @@ psa_status_t psa_generator_read(psa_crypto_generator_t *generator, uint8_t *output, size_t output_length) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_derivation_ipc_t psa_crypto_ipc = { 0, 0, 0, 0 }; psa_crypto_ipc.func = PSA_GENERATOR_READ; - psa_invec_t in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - psa_outvec_t out_vec = { output, output_length }; + psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; + psa_outvec out_vec = { output, output_length }; if (generator->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err_call = psa_call(generator->handle, &in_vec, 1, &out_vec, 1); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } -psa_status_t psa_generator_import_key(psa_key_slot_t key, +psa_status_t psa_generator_import_key(psa_key_handle_t key_handle, psa_key_type_t type, size_t bits, psa_crypto_generator_t *generator) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_derivation_ipc_t psa_crypto_ipc = { 0, 0, 0, 0 }; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.func = PSA_GENERATOR_IMPORT_KEY; - psa_invec_t in_vec[3] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + psa_invec in_vec[3] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, { &type, sizeof(type) }, { &bits, sizeof(bits) } }; if (generator->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err_call = psa_call(generator->handle, in_vec, 3, NULL, 0); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } psa_status_t psa_key_derivation(psa_crypto_generator_t *generator, - psa_key_slot_t key, + psa_key_handle_t key_handle, psa_algorithm_t alg, const uint8_t *salt, size_t salt_length, @@ -1159,14 +1162,14 @@ psa_status_t psa_key_derivation(psa_crypto_generator_t *generator, size_t label_length, size_t capacity) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_derivation_ipc_t psa_crypto_ipc = { 0, 0, 0, 0 }; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; psa_crypto_ipc.func = PSA_KEY_DERIVATION; psa_crypto_ipc.capacity = capacity; - psa_invec_t in_vec[3] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + psa_invec in_vec[3] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, { salt, salt_length }, { label, label_length } }; @@ -1178,26 +1181,22 @@ psa_status_t psa_key_derivation(psa_crypto_generator_t *generator, err_call = psa_call(generator->handle, in_vec, 3, NULL, 0); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); - } psa_status_t psa_key_agreement(psa_crypto_generator_t *generator, - psa_key_slot_t private_key, + psa_key_handle_t private_key_handle, const uint8_t *peer_key, size_t peer_key_length, psa_algorithm_t alg) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_derivation_ipc_t psa_crypto_ipc = { 0, 0, 0, 0 }; - psa_crypto_ipc.key = private_key; + psa_crypto_ipc.handle = private_key_handle; psa_crypto_ipc.alg = alg; psa_crypto_ipc.func = PSA_KEY_AGREEMENT; - psa_invec_t in_vec[2] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, + psa_invec in_vec[2] = { { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, { peer_key, peer_key_length } }; @@ -1208,26 +1207,20 @@ psa_status_t psa_key_agreement(psa_crypto_generator_t *generator, err_call = psa_call(generator->handle, in_vec, 2, NULL, 0); - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); } psa_status_t psa_generator_abort(psa_crypto_generator_t *generator) { - psa_error_t err_call = PSA_SUCCESS; + psa_status_t err_call = PSA_SUCCESS; psa_crypto_derivation_ipc_t psa_crypto_ipc = { 0, 0, 0, 0 }; psa_crypto_ipc.func = PSA_GENERATOR_ABORT; - psa_invec_t in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; + psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; if (generator->handle != PSA_NULL_HANDLE) { err_call = psa_call(generator->handle, &in_vec, 1, NULL, 0); psa_close(generator->handle); generator->handle = PSA_NULL_HANDLE; } - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } return ((psa_status_t) err_call); @@ -1238,15 +1231,15 @@ psa_status_t psa_generator_abort(psa_crypto_generator_t *generator) /****************************************************************/ psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t key_handle, psa_algorithm_t alg) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; - psa_invec_t in_vec; + psa_invec in_vec; psa_crypto_ipc.func = PSA_CIPHER_ENCRYPT_SETUP; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; in_vec.base = &psa_crypto_ipc; @@ -1258,25 +1251,23 @@ psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, } err = psa_call(operation->handle, &in_vec, 1, NULL, 0); - if (err < 0) { - err = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } + return ((psa_status_t) err); } psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t key_handle, psa_algorithm_t alg) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; - psa_invec_t in_vec; + psa_invec in_vec; psa_crypto_ipc.func = PSA_CIPHER_DECRYPT_SETUP; - psa_crypto_ipc.key = key; + psa_crypto_ipc.handle = key_handle; psa_crypto_ipc.alg = alg; - in_vec = (psa_invec_t) { + in_vec = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; @@ -1287,9 +1278,7 @@ psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, } err = psa_call(operation->handle, &in_vec, 1, NULL, 0); - if (err < 0) { - err = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } + return ((psa_status_t) err); } @@ -1298,32 +1287,30 @@ psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, size_t iv_size, size_t *iv_length) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; - psa_invec_t in_vec; - psa_outvec_t out_vec[2]; + psa_invec in_vec; + psa_outvec out_vec[2]; psa_crypto_ipc.func = PSA_CIPHER_GENERATE_IV; - in_vec = (psa_invec_t) { + in_vec = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - out_vec[0] = (psa_outvec_t) { + out_vec[0] = (psa_outvec) { iv, iv_size }; - out_vec[1] = (psa_outvec_t) { + out_vec[1] = (psa_outvec) { iv_length, sizeof(*iv_length) }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err = psa_call(operation->handle, &in_vec, 1, out_vec, 2); - if (err < 0) { - err = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } + return ((psa_status_t) err); } @@ -1331,27 +1318,25 @@ psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, const unsigned char *iv, size_t iv_length) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; - psa_invec_t in_vec[2]; + psa_invec in_vec[2]; psa_crypto_ipc.func = PSA_CIPHER_SET_IV; - in_vec[0] = (psa_invec_t) { + in_vec[0] = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - in_vec[1] = (psa_invec_t) { + in_vec[1] = (psa_invec) { iv, iv_length }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err = psa_call(operation->handle, in_vec, 2, NULL, 0); - if (err < 0) { - err = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } + return ((psa_status_t) err); } @@ -1362,36 +1347,34 @@ psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, size_t output_size, size_t *output_length) { - psa_error_t err; + psa_status_t err; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; - psa_invec_t in_vec[2]; - psa_outvec_t out_vec[2]; + psa_invec in_vec[2]; + psa_outvec out_vec[2]; psa_crypto_ipc.func = PSA_CIPHER_UPDATE; - in_vec[0] = (psa_invec_t) { + in_vec[0] = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - in_vec[1] = (psa_invec_t) { + in_vec[1] = (psa_invec) { input, input_length }; - out_vec[0] = (psa_outvec_t) { + out_vec[0] = (psa_outvec) { output, output_size }; - out_vec[1] = (psa_outvec_t) { + out_vec[1] = (psa_outvec) { output_length, (output_length == NULL ? 0 : sizeof(*output_length)) }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err = psa_call(operation->handle, in_vec, 2, out_vec, 2); - if (err < 0) { - err = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } + return ((psa_status_t) err); } @@ -1400,43 +1383,41 @@ psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, size_t output_size, size_t *output_length) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; - psa_invec_t in_vec; - psa_outvec_t out_vec[2]; + psa_invec in_vec; + psa_outvec out_vec[2]; psa_crypto_ipc.func = PSA_CIPHER_FINISH; - in_vec = (psa_invec_t) { + in_vec = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - out_vec[0] = (psa_outvec_t) { + out_vec[0] = (psa_outvec) { output, output_size }; - out_vec[1] = (psa_outvec_t) { + out_vec[1] = (psa_outvec) { output_length, (output_length == NULL ? 0 : sizeof(*output_length)) }; if (operation->handle <= 0) { - return (PSA_ERROR_INVALID_ARGUMENT); + return (PSA_ERROR_BAD_STATE); } err_call = psa_call(operation->handle, &in_vec, 1, out_vec, 2); psa_close(operation->handle); operation->handle = PSA_NULL_HANDLE; - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } + return ((psa_status_t) err_call); } psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation) { - psa_error_t err_call; + psa_status_t err_call; psa_crypto_ipc_t psa_crypto_ipc = { 0, 0, 0 }; - psa_invec_t in_vec; + psa_invec in_vec; if (operation->handle <= 0) { return (PSA_SUCCESS); @@ -1444,16 +1425,14 @@ psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation) psa_crypto_ipc.func = PSA_CIPHER_ABORT; - in_vec = (psa_invec_t) { + in_vec = (psa_invec) { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; err_call = psa_call(operation->handle, &in_vec, 1, NULL, 0); psa_close(operation->handle); operation->handle = PSA_NULL_HANDLE; - if (err_call < 0) { - err_call = (psa_error_t) PSA_ERROR_COMMUNICATION_FAILURE; - } + return ((psa_status_t) err_call); } diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.c b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/TARGET_MBED_SPM/psa_crypto_srv_partition.c similarity index 99% rename from components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.c rename to components/TARGET_PSA/services/crypto/COMPONENT_SPE/TARGET_MBED_SPM/psa_crypto_srv_partition.c index fdba6a48f17..b211184d7e2 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.c +++ b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/TARGET_MBED_SPM/psa_crypto_srv_partition.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -227,3 +227,4 @@ void crypto_srv_init(spm_partition_t *partition) SPM_PANIC("Failed to create start main thread of partition crypto_srv!\n"); } } + diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/crypto_spe.h b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/crypto_spe.h index 50dcf193fbe..9ae16c6b7e2 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/crypto_spe.h +++ b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/crypto_spe.h @@ -25,7 +25,6 @@ extern "C" { #define psa_set_key_policy psa_sec_set_key_policy #define psa_get_key_policy psa_sec_get_key_policy #define psa_get_key_lifetime psa_sec_get_key_lifetime -#define psa_set_key_lifetime psa_sec_set_key_lifetime #define psa_hash_setup psa_sec_hash_setup #define psa_hash_update psa_sec_hash_update #define psa_hash_finish psa_sec_hash_finish @@ -60,6 +59,11 @@ extern "C" { #define psa_key_agreement psa_sec_key_agreement #define psa_generator_abort psa_sec_generator_abort #define mbedtls_psa_inject_entropy mbedtls_psa_sec_inject_entropy +#define psa_allocate_key psa_sec_allocate_key +#define psa_open_key psa_sec_open_key +#define psa_create_key psa_sec_create_key +#define psa_close_key psa_sec_close_key +#define psa_hash_clone psa_sec_hash_clone #include "crypto.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 36ac8803f06..48fa8550e17 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 @@ -1,8 +1,14 @@ // ---------------------------------- Includes --------------------------------- -#include "spm_panic.h" -#include "spm_server.h" -#include "spm/psa_defs.h" -#include "spm/spm_client.h" + + +#include "psa/client.h" +#include "psa/service.h" +#if defined(TARGET_TFM) +#define SPM_PANIC(format, ...) \ +{ \ + while(1){}; \ +} +#endif #define PSA_CRYPTO_SECURE 1 #include "crypto_spe.h" @@ -16,9 +22,97 @@ #define mbedtls_calloc calloc #define mbedtls_free free #endif -// ------------------------- Globals --------------------------- + +// ---------------------------------- Macros ----------------------------------- +#if !defined(MIN) +#define MIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) +#endif + +// -------------------------------- Structures --------------------------------- +typedef struct psa_spm_hash_clone_s { + int32_t partition_id; + void *source_operation; + uint8_t ref_count; +} psa_spm_hash_clone_t; + +// ---------------------------------- Globals ---------------------------------- static int psa_spm_init_refence_counter = 0; +/* maximal memory allocation for reading large hash or mac input buffers. +the data will be read in chunks of size */ +#if !defined (MAX_DATA_CHUNK_SIZE_IN_BYTES) +#define MAX_DATA_CHUNK_SIZE_IN_BYTES 400 +#endif + +#ifndef MAX_CONCURRENT_HASH_CLONES +#define MAX_CONCURRENT_HASH_CLONES 2 +#endif +static psa_spm_hash_clone_t psa_spm_hash_clones[MAX_CONCURRENT_HASH_CLONES]; + +// ------------------------- Internal Helper Functions ------------------------- +static inline psa_status_t reserve_hash_clone(int32_t partition_id, void *source_operation, size_t *index) +{ + /* check if the the clone request source operation is already part of another active clone operation, + * for the same source, if so then reuse it and increment its ref_count by 1. A scenario as such may happen + * in case there was a context switch between calls of PSA_HASH_CLONE_BEGIN and PSA_HASH_CLONE_END (on the + * client side) leading to PSA_HASH_CLONE_BEGIN being executed more than one time without a call to + * PSA_HASH_CLONE_END */ + for (*index = 0; *index < MAX_CONCURRENT_HASH_CLONES; (*index)++) { + if (psa_spm_hash_clones[*index].partition_id == partition_id && + psa_spm_hash_clones[*index].source_operation == source_operation) { + psa_spm_hash_clones[*index].ref_count++; + return PSA_SUCCESS; + } + } + + /* find an available empty entry in the array */ + for (*index = 0; *index < MAX_CONCURRENT_HASH_CLONES; (*index)++) { + if (psa_spm_hash_clones[*index].partition_id == 0 && + psa_spm_hash_clones[*index].source_operation == NULL) { + psa_spm_hash_clones[*index].partition_id = partition_id; + psa_spm_hash_clones[*index].source_operation = source_operation; + psa_spm_hash_clones[*index].ref_count++; + return PSA_SUCCESS; + } + } + + return PSA_ERROR_BAD_STATE; +} + +static inline void release_hash_clone(psa_spm_hash_clone_t *hash_clone) +{ + hash_clone->ref_count--; + if (hash_clone->ref_count == 0) { + hash_clone->partition_id = 0; + hash_clone->source_operation = NULL; + } +} + +static void destroy_hash_clone(void *source_operation) +{ + for (size_t i = 0; i < MAX_CONCURRENT_HASH_CLONES; i++) { + if (psa_spm_hash_clones[i].source_operation == source_operation) { + psa_spm_hash_clones[i].partition_id = 0; + psa_spm_hash_clones[i].source_operation = NULL; + psa_spm_hash_clones[i].ref_count = 0; + break; + } + } +} + +static inline psa_status_t get_hash_clone(size_t index, int32_t partition_id, + psa_spm_hash_clone_t **hash_clone) +{ + if (index >= MAX_CONCURRENT_HASH_CLONES || + psa_spm_hash_clones[index].partition_id != partition_id || + psa_spm_hash_clones[index].source_operation == NULL) { + return PSA_ERROR_BAD_STATE; + } + + *hash_clone = &psa_spm_hash_clones[index]; + return PSA_SUCCESS; +} + // ------------------------- Partition's Main Thread --------------------------- static void psa_crypto_init_operation(void) { @@ -36,6 +130,9 @@ static void psa_crypto_init_operation(void) status = psa_crypto_init(); if (status == PSA_SUCCESS) { ++psa_spm_init_refence_counter; + if (psa_spm_init_refence_counter == 1) { + memset(psa_spm_hash_clones, 0, sizeof(psa_spm_hash_clones)); + } } break; @@ -47,7 +144,7 @@ static void psa_crypto_init_operation(void) } } - psa_reply(msg.handle, (psa_error_t) status); + psa_reply(msg.handle, (psa_status_t) status); } static void psa_crypto_free_operation(void) @@ -71,6 +168,7 @@ static void psa_crypto_free_operation(void) } if (psa_spm_init_refence_counter == 0) { + memset(psa_spm_hash_clones, 0, sizeof(psa_spm_hash_clones)); mbedtls_psa_crypto_free(); } @@ -83,7 +181,7 @@ static void psa_crypto_free_operation(void) } } - psa_reply(msg.handle, (psa_error_t) status); + psa_reply(msg.handle, (psa_status_t) status); } static void psa_mac_operation(void) @@ -121,37 +219,53 @@ static void psa_mac_operation(void) switch (psa_crypto.func) { case PSA_MAC_SIGN_SETUP: { status = psa_mac_sign_setup(msg.rhandle, - psa_crypto.key, + psa_crypto.handle, psa_crypto.alg); break; } case PSA_MAC_VERIFY_SETUP: { status = psa_mac_verify_setup(msg.rhandle, - psa_crypto.key, + psa_crypto.handle, psa_crypto.alg); break; } case PSA_MAC_UPDATE: { - uint8_t *input_ptr = mbedtls_calloc(1, msg.in_size[1]); - if (input_ptr == NULL) { + + uint8_t *input_buffer = NULL; + size_t data_remaining = msg.in_size[1]; + size_t allocation_size = MIN(data_remaining, MAX_DATA_CHUNK_SIZE_IN_BYTES); + size_t size_to_read = 0; + + input_buffer = mbedtls_calloc(1, allocation_size); + if (input_buffer == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } - bytes_read = psa_read(msg.handle, 1, input_ptr, - msg.in_size[1]); + while (data_remaining > 0) { + size_to_read = MIN(data_remaining, MAX_DATA_CHUNK_SIZE_IN_BYTES); + bytes_read = psa_read(msg.handle, 1, input_buffer, + size_to_read); - if (bytes_read != msg.in_size[1]) { - SPM_PANIC("SPM read length mismatch"); + if (bytes_read != size_to_read) { + SPM_PANIC("SPM read length mismatch"); + } + + status = psa_mac_update(msg.rhandle, + input_buffer, + bytes_read); + + // stop on error + if (status != PSA_SUCCESS) { + break; + } + data_remaining = data_remaining - bytes_read; } - status = psa_mac_update(msg.rhandle, - input_ptr, - msg.in_size[1]); + mbedtls_free(input_buffer); - mbedtls_free(input_ptr); break; } @@ -238,7 +352,7 @@ static void psa_mac_operation(void) } } - psa_reply(msg.handle, (psa_error_t) status); + psa_reply(msg.handle, (psa_status_t) status); } static void psa_hash_operation(void) @@ -281,23 +395,39 @@ static void psa_hash_operation(void) } case PSA_HASH_UPDATE: { - uint8_t *input_ptr = mbedtls_calloc(1, msg.in_size[1]); - if (input_ptr == NULL) { + uint8_t *input_buffer = NULL; + size_t data_remaining = msg.in_size[1]; + size_t size_to_read = 0; + size_t allocation_size = MIN(data_remaining, MAX_DATA_CHUNK_SIZE_IN_BYTES); + + input_buffer = mbedtls_calloc(1, allocation_size); + if (input_buffer == NULL) { status = PSA_ERROR_INSUFFICIENT_MEMORY; break; } - bytes_read = psa_read(msg.handle, 1, input_ptr, - msg.in_size[1]); + while (data_remaining > 0) { + size_to_read = MIN(data_remaining, MAX_DATA_CHUNK_SIZE_IN_BYTES); + bytes_read = psa_read(msg.handle, 1, input_buffer, + size_to_read); - if (bytes_read != msg.in_size[1]) { - SPM_PANIC("SPM read length mismatch"); + if (bytes_read != size_to_read) { + SPM_PANIC("SPM read length mismatch"); + } + + status = psa_hash_update(msg.rhandle, + input_buffer, + bytes_read); + + // stop on error + if (status != PSA_SUCCESS) { + break; + } + data_remaining = data_remaining - bytes_read; } - status = psa_hash_update(msg.rhandle, - input_ptr, - msg.in_size[1]); - mbedtls_free(input_ptr); + mbedtls_free(input_buffer); + break; } @@ -325,6 +455,7 @@ static void psa_hash_operation(void) } mbedtls_free(hash); + destroy_hash_clone(msg.rhandle); break; } @@ -350,11 +481,48 @@ static void psa_hash_operation(void) status = psa_hash_verify(msg.rhandle, hash, hash_length); mbedtls_free(hash); + destroy_hash_clone(msg.rhandle); break; } case PSA_HASH_ABORT: { status = psa_hash_abort(msg.rhandle); + destroy_hash_clone(msg.rhandle); + break; + } + + case PSA_HASH_CLONE_BEGIN: { + size_t index = 0; + +#if defined(TARGET_MBED_SPM) + status = reserve_hash_clone(psa_identity(msg.handle), msg.rhandle, &index); +#else + status = reserve_hash_clone(msg.client_id, msg.rhandle, &index); +#endif + if (status == PSA_SUCCESS) { + psa_write(msg.handle, 0, &index, sizeof(index)); + } + break; + } + + case PSA_HASH_CLONE_END: { + psa_spm_hash_clone_t *hash_clone = NULL; + size_t index; + + bytes_read = psa_read(msg.handle, 1, &index, msg.in_size[1]); + if (bytes_read != msg.in_size[1]) { + SPM_PANIC("SPM read length mismatch"); + } + +#if defined(TARGET_MBED_SPM) + status = get_hash_clone(index, psa_identity(msg.handle), &hash_clone); +#else + status = get_hash_clone(index, msg.client_id, &hash_clone); +#endif + if (status == PSA_SUCCESS) { + status = psa_hash_clone(hash_clone->source_operation, msg.rhandle); + release_hash_clone(hash_clone); + } break; } @@ -370,6 +538,7 @@ static void psa_hash_operation(void) case PSA_IPC_DISCONNECT: { psa_hash_abort(msg.rhandle); if (msg.rhandle != NULL) { + destroy_hash_clone(msg.rhandle); mbedtls_free(msg.rhandle); } @@ -436,7 +605,7 @@ static void psa_asymmetric_operation(void) SPM_PANIC("SPM read length mismatch"); } - status = psa_asymmetric_sign(psa_crypto.key, + status = psa_asymmetric_sign(psa_crypto.handle, psa_crypto.alg, hash, msg.in_size[1], @@ -481,7 +650,7 @@ static void psa_asymmetric_operation(void) SPM_PANIC("SPM read length mismatch"); } - status = psa_asymmetric_verify(psa_crypto.key, + status = psa_asymmetric_verify(psa_crypto.handle, psa_crypto.alg, hash, msg.in_size[2], @@ -521,7 +690,7 @@ static void psa_asymmetric_operation(void) } if (psa_crypto.func == PSA_ASYMMETRIC_ENCRYPT) - status = psa_asymmetric_encrypt(psa_crypto.key, + status = psa_asymmetric_encrypt(psa_crypto.handle, psa_crypto.alg, input, psa_crypto.input_length, @@ -531,7 +700,7 @@ static void psa_asymmetric_operation(void) msg.out_size[0], &output_length); else - status = psa_asymmetric_decrypt(psa_crypto.key, + status = psa_asymmetric_decrypt(psa_crypto.handle, psa_crypto.alg, input, psa_crypto.input_length, @@ -568,7 +737,7 @@ static void psa_asymmetric_operation(void) } } - psa_reply(msg.handle, (psa_error_t) status); + psa_reply(msg.handle, (psa_status_t) status); } static void psa_aead_operation() @@ -628,7 +797,7 @@ static void psa_aead_operation() } if (psa_crypto.func == PSA_AEAD_ENCRYPT) - status = psa_aead_encrypt(psa_crypto.key, + status = psa_aead_encrypt(psa_crypto.handle, psa_crypto.alg, psa_crypto.nonce, (size_t)psa_crypto.nonce_size, @@ -640,7 +809,7 @@ static void psa_aead_operation() msg.out_size[0], &output_length); else - status = psa_aead_decrypt(psa_crypto.key, + status = psa_aead_decrypt(psa_crypto.handle, psa_crypto.alg, psa_crypto.nonce, (size_t)psa_crypto.nonce_size, @@ -677,7 +846,7 @@ static void psa_aead_operation() } } - psa_reply(msg.handle, (psa_error_t) status); + psa_reply(msg.handle, (psa_status_t) status); } static void psa_symmetric_operation(void) @@ -717,14 +886,14 @@ static void psa_symmetric_operation(void) switch (psa_crypto_ipc.func) { case PSA_CIPHER_ENCRYPT_SETUP: { status = psa_cipher_encrypt_setup(msg.rhandle, - psa_crypto_ipc.key, + psa_crypto_ipc.handle, psa_crypto_ipc.alg); break; } case PSA_CIPHER_DECRYPT_SETUP: { status = psa_cipher_decrypt_setup(msg.rhandle, - psa_crypto_ipc.key, + psa_crypto_ipc.handle, psa_crypto_ipc.alg); break; } @@ -847,7 +1016,7 @@ static void psa_symmetric_operation(void) } } - psa_reply(msg.handle, (psa_error_t) status); + psa_reply(msg.handle, (psa_status_t) status); } @@ -884,7 +1053,7 @@ static void psa_key_management_operation(void) size_t lifetime_length = msg.out_size[0]; psa_key_lifetime_t lifetime; - status = psa_get_key_lifetime(psa_key_mng.key, + status = psa_get_key_lifetime(psa_key_mng.handle, &lifetime); if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, @@ -894,20 +1063,6 @@ static void psa_key_management_operation(void) break; } - case PSA_SET_KEY_LIFETIME: { - size_t lifetime_length = msg.in_size[1]; - psa_key_lifetime_t lifetime; - - bytes_read = psa_read(msg.handle, 1, - &lifetime, lifetime_length); - 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; @@ -918,7 +1073,7 @@ static void psa_key_management_operation(void) SPM_PANIC("SPM read length mismatch"); } - status = psa_set_key_policy(psa_key_mng.key, &policy); + status = psa_set_key_policy(psa_key_mng.handle, &policy); break; } @@ -926,7 +1081,7 @@ static void psa_key_management_operation(void) size_t policy_size = msg.out_size[0]; psa_key_policy_t policy; - status = psa_get_key_policy(psa_key_mng.key, &policy); + status = psa_get_key_policy(psa_key_mng.handle, &policy); if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, &policy, policy_size); } @@ -947,7 +1102,7 @@ static void psa_key_management_operation(void) SPM_PANIC("SPM read length mismatch"); } - status = psa_import_key(psa_key_mng.key, + status = psa_import_key(psa_key_mng.handle, psa_key_mng.type, key, key_length); mbedtls_free(key); @@ -955,22 +1110,20 @@ static void psa_key_management_operation(void) } case PSA_DESTROY_KEY: { - status = psa_destroy_key(psa_key_mng.key); + status = psa_destroy_key(psa_key_mng.handle); break; } case PSA_GET_KEY_INFORMATION: { psa_key_type_t type; size_t bits; - status = psa_get_key_information(psa_key_mng.key, + status = psa_get_key_information(psa_key_mng.handle, &type, &bits); - if (status == PSA_SUCCESS) { - if (msg.out_size[0] >= sizeof(psa_key_type_t)) - psa_write(msg.handle, 0, - &type, sizeof(psa_key_type_t)); - if (msg.out_size[1] >= sizeof(size_t)) { - psa_write(msg.handle, 1, &bits, sizeof(size_t)); - } + if (msg.out_size[0] >= sizeof(psa_key_type_t)) + psa_write(msg.handle, 0, + &type, sizeof(psa_key_type_t)); + if (msg.out_size[1] >= sizeof(size_t)) { + psa_write(msg.handle, 1, &bits, sizeof(size_t)); } break; @@ -985,7 +1138,7 @@ static void psa_key_management_operation(void) break; } - status = psa_export_key(psa_key_mng.key, key, + status = psa_export_key(psa_key_mng.handle, key, key_length, &data_length); if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, key, data_length); @@ -1006,7 +1159,7 @@ static void psa_key_management_operation(void) break; } - status = psa_export_public_key(psa_key_mng.key, key, + status = psa_export_public_key(psa_key_mng.handle, key, key_length, &data_length); if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, key, data_length); @@ -1043,7 +1196,7 @@ static void psa_key_management_operation(void) } } - status = psa_generate_key(psa_key_mng.key, + status = psa_generate_key(psa_key_mng.handle, psa_key_mng.type, bits, parameter, parameter_size); @@ -1051,6 +1204,54 @@ static void psa_key_management_operation(void) break; } + case PSA_ALLOCATE_KEY: { + status = psa_allocate_key(&psa_key_mng.handle); + if (status == PSA_SUCCESS) { + psa_write(msg.handle, 0, &psa_key_mng.handle, sizeof(psa_key_mng.handle)); + } + break; + } + + case PSA_CREATE_KEY: { + psa_key_id_t id = 0; + size_t max_bits = 0; + + bytes_read = psa_read(msg.handle, 1, &id, msg.in_size[1]); + if (bytes_read != msg.in_size[1]) { + SPM_PANIC("SPM read length mismatch"); + } + bytes_read = psa_read(msg.handle, 2, &max_bits, msg.in_size[2]); + if (bytes_read != msg.in_size[2]) { + SPM_PANIC("SPM read length mismatch"); + } + + status = psa_create_key(psa_key_mng.lifetime, id, &psa_key_mng.handle); + if (status == PSA_SUCCESS) { + psa_write(msg.handle, 0, &psa_key_mng.handle, sizeof(psa_key_mng.handle)); + } + break; + } + + case PSA_OPEN_KEY: { + psa_key_id_t id = 0; + + bytes_read = psa_read(msg.handle, 1, &id, msg.in_size[1]); + if (bytes_read != msg.in_size[1]) { + SPM_PANIC("SPM read length mismatch"); + } + + status = psa_open_key(psa_key_mng.lifetime, id, &psa_key_mng.handle); + if (status == PSA_SUCCESS) { + psa_write(msg.handle, 0, &psa_key_mng.handle, sizeof(psa_key_mng.handle)); + } + break; + } + + case PSA_CLOSE_KEY: { + status = psa_close_key(psa_key_mng.handle); + break; + } + default: { status = PSA_ERROR_NOT_SUPPORTED; break; @@ -1242,7 +1443,7 @@ void psa_crypto_generator_operations(void) SPM_PANIC("SPM read length mismatch"); } - status = psa_generator_import_key(psa_crypto_ipc.key, type, + status = psa_generator_import_key(psa_crypto_ipc.handle, type, bits, msg.rhandle); break; } @@ -1278,7 +1479,7 @@ void psa_crypto_generator_operations(void) SPM_PANIC("SPM read length mismatch"); } - status = psa_key_derivation(msg.rhandle, psa_crypto_ipc.key, + status = psa_key_derivation(msg.rhandle, psa_crypto_ipc.handle, psa_crypto_ipc.alg, salt, msg.in_size[1],//salt length @@ -1303,7 +1504,7 @@ void psa_crypto_generator_operations(void) SPM_PANIC("SPM read length mismatch"); } - status = psa_key_agreement(msg.rhandle, psa_crypto_ipc.key, + status = psa_key_agreement(msg.rhandle, psa_crypto_ipc.handle, private_key, msg.in_size[1],//private_key length psa_crypto_ipc.alg); @@ -1334,14 +1535,19 @@ void psa_crypto_generator_operations(void) } } - psa_reply(msg.handle, (psa_error_t) status); + psa_reply(msg.handle, (psa_status_t) status); } void crypto_main(void *ptr) { while (1) { - uint32_t signals = psa_wait_any(PSA_BLOCK); + uint32_t signals = 0; +#if defined(TARGET_MBED_SPM) + signals = psa_wait_any(PSA_BLOCK); +#else + signals = psa_wait(CRYPTO_SRV_WAIT_ANY_SID_MSK, PSA_BLOCK); +#endif if (signals & PSA_CRYPTO_INIT) { psa_crypto_init_operation(); } diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.h b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.h index d60aeccf4f7..8072bf547e5 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.h +++ b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_srv_partition.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/components/TARGET_PSA/services/crypto/psa_crypto_srv_ifs.h b/components/TARGET_PSA/services/crypto/psa_crypto_srv_ifs.h index 0a5cd17d5ae..9e123921b0b 100644 --- a/components/TARGET_PSA/services/crypto/psa_crypto_srv_ifs.h +++ b/components/TARGET_PSA/services/crypto/psa_crypto_srv_ifs.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * diff --git a/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_EMUL/platform_emul.c b/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_EMUL/platform_emul.c new file mode 100644 index 00000000000..1aab3be718d --- /dev/null +++ b/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_EMUL/platform_emul.c @@ -0,0 +1,40 @@ +/* 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. + */ + +#include "psa/lifecycle.h" +#include "platform_srv_impl.h" + +uint32_t psa_security_lifecycle_state(void) +{ + uint32_t lc_state = 0; + psa_status_t status = PSA_LIFECYCLE_SUCCESS; + status = psa_platfrom_lifecycle_get_impl(&lc_state); + if (status != PSA_LIFECYCLE_SUCCESS) { + lc_state = PSA_LIFECYCLE_UNKNOWN; + } + return lc_state; +} + +psa_status_t mbed_psa_reboot_and_request_new_security_state(uint32_t new_state) +{ + return psa_platfrom_lifecycle_change_request_impl(new_state); +} + +void psa_system_reset(void) +{ + psa_system_reset_impl(); +} diff --git a/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.c b/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.c new file mode 100644 index 00000000000..6dfd51fd24c --- /dev/null +++ b/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.c @@ -0,0 +1,48 @@ +/* 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. + */ + +#include "psa/lifecycle.h" +#include "psa/internal_trusted_storage.h" +#include "platform_srv_impl.h" +#include "mbed_toolchain.h" +#include "cmsis.h" + +#ifndef MBED_CONF_LIFECYCLE_STATE +#define MBED_CONF_LIFECYCLE_STATE PSA_LIFECYCLE_ASSEMBLY_AND_TEST +#endif + +psa_status_t psa_platfrom_lifecycle_get_impl(uint32_t *lc_state) +{ + *lc_state = MBED_CONF_LIFECYCLE_STATE; + return PSA_LIFECYCLE_SUCCESS; +} + +psa_status_t psa_its_reset(); + +psa_status_t psa_platfrom_lifecycle_change_request_impl(uint32_t state) +{ + if (PSA_LIFECYCLE_ASSEMBLY_AND_TEST == state) { + return psa_its_reset(); + } + return PSA_LIFECYCLE_ERROR; +} + +MBED_WEAK void psa_system_reset_impl(void) +{ + /* Reset the system */ + NVIC_SystemReset(); +} diff --git a/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.h b/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.h new file mode 100644 index 00000000000..6e44291fc0b --- /dev/null +++ b/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.h @@ -0,0 +1,27 @@ +/* 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. + */ + +#ifndef __PLATFROM_SRV_IMPL_H__ +#define __PLATFROM_SRV_IMPL_H__ + +#include "psa/client.h" + +psa_status_t psa_platfrom_lifecycle_get_impl(uint32_t *lc_state); +psa_status_t psa_platfrom_lifecycle_change_request_impl(uint32_t lc_state); +void psa_system_reset_impl(void); + +#endif // __PLATFROM_SRV_IMPL_H__ diff --git a/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IPC/platform_ipc.c b/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IPC/platform_ipc.c new file mode 100644 index 00000000000..1444e28defb --- /dev/null +++ b/components/TARGET_PSA/services/platform/COMPONENT_PSA_SRV_IPC/platform_ipc.c @@ -0,0 +1,68 @@ +/* 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. + */ + +#include "psa_platform_ifs.h" +#include "psa/lifecycle.h" +#include "psa/client.h" +#include "mbed_toolchain.h" + +uint32_t psa_security_lifecycle_state(void) +{ + psa_handle_t conn = psa_connect(PSA_PLATFORM_LC_GET, 1); + if (conn <= PSA_NULL_HANDLE) { + return PSA_LIFECYCLE_UNKNOWN; + } + + uint32_t lc_state = 0; + psa_outvec resp[1] = { &lc_state, sizeof(lc_state) }; + + psa_status_t status = psa_call(conn, NULL, 0, resp, 1); + if (status == PSA_DROP_CONNECTION) { + lc_state = PSA_LIFECYCLE_UNKNOWN; + } + + psa_close(conn); + + return lc_state; +} + +psa_status_t mbed_psa_reboot_and_request_new_security_state(uint32_t new_state) +{ + psa_handle_t conn = psa_connect(PSA_PLATFORM_LC_SET, 1); + if (conn <= PSA_NULL_HANDLE) { + return (psa_status_t) conn; + } + + psa_invec msg[1] = { + { &new_state, sizeof(new_state) } + }; + + psa_status_t status = psa_call(conn, msg, 1, NULL, 0); + + psa_close(conn); + return status; +} + +MBED_NORETURN void psa_system_reset(void) +{ + psa_handle_t conn = psa_connect(PSA_PLATFORM_SYSTEM_RESET, 1); + if (conn <= PSA_NULL_HANDLE) { + return; + } + + psa_call(conn, NULL, 0, NULL, 0); +} diff --git a/components/TARGET_PSA/services/platform/COMPONENT_SPE/TARGET_MBED_SPM/psa_platform_partition.c b/components/TARGET_PSA/services/platform/COMPONENT_SPE/TARGET_MBED_SPM/psa_platform_partition.c new file mode 100644 index 00000000000..72986f21620 --- /dev/null +++ b/components/TARGET_PSA/services/platform/COMPONENT_SPE/TARGET_MBED_SPM/psa_platform_partition.c @@ -0,0 +1,131 @@ +/* Copyright (c) 2017-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. + */ + +/*********************************************************************************************************************** + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * 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" +#include "mbed_toolchain.h" /* For using MBED_ALIGN macro */ +#include "rtx_os.h" +#include "spm_panic.h" +#include "spm_internal.h" +#include "psa_platform_partition.h" +#include "psa_platform_ifs.h" +#include "psa_its_ifs.h" + + +/* Threads stacks */ +MBED_ALIGN(8) uint8_t platform_thread_stack[1024] = {0}; + +/* Threads control blocks */ +osRtxThread_t platform_thread_cb = {0}; + +/* Thread attributes - for thread initialization */ +osThreadAttr_t platform_thread_attr = { + .name = "platform", + .attr_bits = 0, + .cb_mem = &platform_thread_cb, + .cb_size = sizeof(platform_thread_cb), + .stack_mem = platform_thread_stack, + .stack_size = 1024, + .priority = osPriorityNormal, + .tz_module = 0, + .reserved = 0 +}; + +spm_rot_service_t platform_rot_services[PLATFORM_ROT_SRV_COUNT] = { + { + .sid = PSA_PLATFORM_LC_GET, + .mask = PSA_PLATFORM_LC_GET_MSK, + .partition = NULL, + .min_version = 1, + .min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED, + .allow_nspe = true, + .queue = { + .head = NULL, + .tail = NULL + } + }, + { + .sid = PSA_PLATFORM_LC_SET, + .mask = PSA_PLATFORM_LC_SET_MSK, + .partition = NULL, + .min_version = 1, + .min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED, + .allow_nspe = true, + .queue = { + .head = NULL, + .tail = NULL + } + }, + { + .sid = PSA_PLATFORM_SYSTEM_RESET, + .mask = PSA_PLATFORM_SYSTEM_RESET_MSK, + .partition = NULL, + .min_version = 1, + .min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED, + .allow_nspe = true, + .queue = { + .head = NULL, + .tail = NULL + } + }, +}; + +/* External SIDs used by PLATFORM */ +const uint32_t platform_external_sids[1] = { + PSA_ITS_RESET, +}; + +static osRtxMutex_t platform_mutex = {0}; +static const osMutexAttr_t platform_mutex_attr = { + .name = "platform_mutex", + .attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust, + .cb_mem = &platform_mutex, + .cb_size = sizeof(platform_mutex), +}; + + +extern void platform_partition_entry(void *ptr); + +void platform_init(spm_partition_t *partition) +{ + if (NULL == partition) { + SPM_PANIC("partition is NULL!\n"); + } + + partition->mutex = osMutexNew(&platform_mutex_attr); + if (NULL == partition->mutex) { + SPM_PANIC("Failed to create mutex for secure partition platform!\n"); + } + + for (uint32_t i = 0; i < PLATFORM_ROT_SRV_COUNT; ++i) { + platform_rot_services[i].partition = partition; + } + partition->rot_services = platform_rot_services; + + partition->thread_id = osThreadNew(platform_partition_entry, NULL, &platform_thread_attr); + if (NULL == partition->thread_id) { + SPM_PANIC("Failed to create start main thread of partition platform!\n"); + } +} + diff --git a/components/TARGET_PSA/services/platform/COMPONENT_SPE/platform_partition.c b/components/TARGET_PSA/services/platform/COMPONENT_SPE/platform_partition.c new file mode 100644 index 00000000000..5943e166c9f --- /dev/null +++ b/components/TARGET_PSA/services/platform/COMPONENT_SPE/platform_partition.c @@ -0,0 +1,112 @@ +/* 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. + */ + +#include "psa_platform_partition.h" +#include "platform_srv_impl.h" +#include "psa/internal_trusted_storage.h" +#include "psa/service.h" + +#if defined(TARGET_TFM) +#define SPM_PANIC(format, ...) \ +{ \ + while(1){}; \ +} +#endif + +typedef psa_status_t (*SignalHandler)(psa_msg_t *); + +static psa_status_t lifecycle_get(psa_msg_t *msg) +{ + uint32_t lc_state; + + if (msg->out_size[0] != sizeof(lc_state)) { + return PSA_DROP_CONNECTION; + } + + psa_status_t status = psa_platfrom_lifecycle_get_impl(&lc_state); + if (status == PSA_SUCCESS) { + psa_write(msg->handle, 0, &lc_state, sizeof(lc_state)); + } + + return status; +} + +static psa_status_t lifecycle_change_request(psa_msg_t *msg) +{ + uint32_t lc_state; + + if (msg->in_size[0] != sizeof(lc_state)) { + return PSA_DROP_CONNECTION; + } + if (psa_read(msg->handle, 0, &lc_state, sizeof(lc_state)) != sizeof(lc_state)) { + return PSA_DROP_CONNECTION; + } + return psa_platfrom_lifecycle_change_request_impl(lc_state); + +} + +static psa_status_t system_reset_request(psa_msg_t *msg) +{ + (void)msg; + psa_system_reset_impl(); +} + +static void message_handler(psa_msg_t *msg, SignalHandler handler) +{ + psa_status_t status = PSA_SUCCESS; + switch (msg->type) { + case PSA_IPC_CONNECT: //fallthrough + case PSA_IPC_DISCONNECT: { + break; + } + case PSA_IPC_CALL: { + status = handler(msg); + break; + } + default: { + SPM_PANIC("Unexpected message type %d!", (int)(msg->type)); + break; + } + } + psa_reply(msg->handle, status); +} + +void platform_partition_entry(void *ptr) +{ + uint32_t signals = 0; + psa_msg_t msg = {0}; + while (1) { +#if defined(TARGET_MBED_SPM) + signals = psa_wait_any(PSA_BLOCK); +#else + signals = psa_wait(PLATFORM_WAIT_ANY_SID_MSK, PSA_BLOCK); +#endif + + if ((signals & PSA_PLATFORM_LC_GET_MSK) != 0) { + psa_get(PSA_PLATFORM_LC_GET_MSK, &msg); + message_handler(&msg, lifecycle_get); + } + if ((signals & PSA_PLATFORM_LC_SET_MSK) != 0) { + psa_get(PSA_PLATFORM_LC_SET_MSK, &msg); + message_handler(&msg, lifecycle_change_request); + } + if ((signals & PSA_PLATFORM_SYSTEM_RESET_MSK) != 0) { + psa_get(PSA_PLATFORM_SYSTEM_RESET_MSK, &msg); + message_handler(&msg, system_reset_request); + } + } +} diff --git a/components/TARGET_PSA/services/platform/COMPONENT_SPE/psa_platform_partition.h b/components/TARGET_PSA/services/platform/COMPONENT_SPE/psa_platform_partition.h new file mode 100644 index 00000000000..02445b8aefb --- /dev/null +++ b/components/TARGET_PSA/services/platform/COMPONENT_SPE/psa_platform_partition.h @@ -0,0 +1,56 @@ +/* Copyright (c) 2017-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. + */ + +/*********************************************************************************************************************** + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * 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_PLATFORM_PARTITION_H +#define PSA_PLATFORM_PARTITION_H + +#define PLATFORM_ID 8 + +#define PLATFORM_ROT_SRV_COUNT (3UL) +#define PLATFORM_EXT_ROT_SRV_COUNT (1UL) + +/* PLATFORM event flags */ +#define PLATFORM_RESERVED1_POS (1UL) +#define PLATFORM_RESERVED1_MSK (1UL << PLATFORM_RESERVED1_POS) + +#define PLATFORM_RESERVED2_POS (2UL) +#define PLATFORM_RESERVED2_MSK (1UL << PLATFORM_RESERVED2_POS) + + + +#define PSA_PLATFORM_LC_GET_MSK_POS (4UL) +#define PSA_PLATFORM_LC_GET_MSK (1UL << PSA_PLATFORM_LC_GET_MSK_POS) +#define PSA_PLATFORM_LC_SET_MSK_POS (5UL) +#define PSA_PLATFORM_LC_SET_MSK (1UL << PSA_PLATFORM_LC_SET_MSK_POS) +#define PSA_PLATFORM_SYSTEM_RESET_MSK_POS (6UL) +#define PSA_PLATFORM_SYSTEM_RESET_MSK (1UL << PSA_PLATFORM_SYSTEM_RESET_MSK_POS) + +#define PLATFORM_WAIT_ANY_SID_MSK (\ + PSA_PLATFORM_LC_GET_MSK | \ + PSA_PLATFORM_LC_SET_MSK | \ + PSA_PLATFORM_SYSTEM_RESET_MSK) + + +#endif // PSA_PLATFORM_PARTITION_H diff --git a/components/TARGET_PSA/services/platform/platform_psa.json b/components/TARGET_PSA/services/platform/platform_psa.json new file mode 100644 index 00000000000..b519504cc5d --- /dev/null +++ b/components/TARGET_PSA/services/platform/platform_psa.json @@ -0,0 +1,40 @@ +{ + "name": "PLATFORM", + "type": "APPLICATION-ROT", + "priority": "NORMAL", + "id": "0x00000008", + "entry_point": "platform_partition_entry", + "stack_size": "0x400", + "heap_size": "0x400", + "services": [{ + "name": "PSA_PLATFORM_LC_GET", + "identifier": "0x00011000", + "signal": "PSA_PLATFORM_LC_GET_MSK", + "non_secure_clients": true, + "minor_version": 1, + "minor_policy": "RELAXED" + }, + { + "name": "PSA_PLATFORM_LC_SET", + "identifier": "0x00011001", + "signal": "PSA_PLATFORM_LC_SET_MSK", + "non_secure_clients": true, + "minor_version": 1, + "minor_policy": "RELAXED" + }, + { + "name": "PSA_PLATFORM_SYSTEM_RESET", + "identifier": "0x00011002", + "signal": "PSA_PLATFORM_SYSTEM_RESET_MSK", + "non_secure_clients": true, + "minor_version": 1, + "minor_policy": "RELAXED" + } + ], + "extern_sids": [ + "PSA_ITS_RESET" + ], + "source_files": [ + "COMPONENT_SPE/platform_partition.c" + ] + } diff --git a/components/TARGET_PSA/services/platform/psa_platform_ifs.h b/components/TARGET_PSA/services/platform/psa_platform_ifs.h new file mode 100644 index 00000000000..6aac5584fc4 --- /dev/null +++ b/components/TARGET_PSA/services/platform/psa_platform_ifs.h @@ -0,0 +1,33 @@ +/* Copyright (c) 2017-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. + */ + +/*********************************************************************************************************************** + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * 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_PLATFORM_PARTITION_ROT_SERVICES_H +#define PSA_PLATFORM_PARTITION_ROT_SERVICES_H + +#define PSA_PLATFORM_LC_GET 0x00011000 +#define PSA_PLATFORM_LC_SET 0x00011001 +#define PSA_PLATFORM_SYSTEM_RESET 0x00011002 + +#endif // PSA_PLATFORM_PARTITION_ROT_SERVICES_H diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_EMUL/psa_prot_internal_storage.cpp b/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_EMUL/psa_prot_internal_storage.cpp deleted file mode 100644 index a7800e78fcd..00000000000 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_EMUL/psa_prot_internal_storage.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* 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. - */ - -#include -#include - -#include "psa_prot_internal_storage.h" -#include "pits_impl.h" -#include "kv_config.h" -#include "mbed_error.h" - -// In EMUL world, there is no real partitioning, which makes the source partition irrelevant. -// So here we set a global pid value to be used for when calling IMPL functions -#define PSA_ITS_EMUL_PID 1 - -psa_its_status_t psa_its_set(uint32_t uid, uint32_t data_length, const void *p_data, psa_its_create_flags_t create_flags) -{ - if (!p_data && data_length) { - return PSA_ITS_ERROR_BAD_POINTER; - } - - // KVStore initiation: - // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. - // - Repeating calls has no effect - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_its_status_t res = psa_its_set_impl(PSA_ITS_EMUL_PID, uid, data_length, p_data, create_flags); - - return res; -} - -psa_its_status_t psa_its_get(uint32_t uid, uint32_t data_offset, uint32_t data_length, void *p_data) -{ - if (!p_data && data_length) { - return PSA_ITS_ERROR_BAD_POINTER; - } - - // KVStore initiation: - // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. - // - Repeating calls has no effect - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - return psa_its_get_impl(PSA_ITS_EMUL_PID, uid, data_offset, data_length, p_data); -} - -psa_its_status_t psa_its_get_info(uint32_t uid, struct psa_its_info_t *p_info) -{ - if (!p_info) { - return PSA_ITS_ERROR_BAD_POINTER; - } - - // KVStore initiation: - // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. - // - Repeating calls has no effect - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - return psa_its_get_info_impl(PSA_ITS_EMUL_PID, uid, p_info); -} - -psa_its_status_t psa_its_remove(uint32_t uid) -{ - // KVStore initiation: - // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. - // - Repeating calls has no effect - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - return psa_its_remove_impl(PSA_ITS_EMUL_PID, uid); -} 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 deleted file mode 100644 index e6c515f93c5..00000000000 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/* 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. - */ - -#include -#include "KVMap.h" -#include "KVStore.h" -#include "TDBStore.h" -#include "psa_prot_internal_storage.h" -#include "pits_impl.h" -#include "mbed_error.h" -#include "mbed_toolchain.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -using namespace mbed; - -#define STR_EXPAND(tok) #tok - -// Maximum length of filename we use for kvstore API. -// uid: 6; delimiter: 1; pid: 6; str terminator: 1 -#define PSA_ITS_FILENAME_MAX_LEN 14 - - -const uint8_t base64_coding_table[] = { - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', - 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', - 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', - 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', '0', '1', '2', '3', - '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(); - - 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; -} - -/* - * \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_filename_size == PSA_ITS_FILENAME_MAX_LEN); - - uint8_t filename_idx = 0; - uint32_t unsigned_pid = (uint32_t)pid; // binary only representation for bitwise operations - - // Iterate on PID; each time convert 6 bits of PID into a character; first iteration must be done - do { - tdb_filename[filename_idx++] = base64_coding_table[unsigned_pid & 0x3F]; - unsigned_pid = lsr(unsigned_pid, 6); - } while (unsigned_pid != 0); - - // Write delimiter - tdb_filename[filename_idx++] = '#'; - - // Iterate on UID; each time convert 6 bits of UID into a character; first iteration must be done - do { - 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); -} - -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(); - MBED_ASSERT(kvstore); - - if ((create_flags != 0) && (create_flags != PSA_ITS_WRITE_ONCE_FLAG)) { - return PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED; - } - - // Generate KVStore key - char kv_key[PSA_ITS_FILENAME_MAX_LEN] = {'\0'}; - generate_fn(kv_key, PSA_ITS_FILENAME_MAX_LEN, uid, pid); - - uint32_t kv_create_flags = 0; - if (create_flags & PSA_ITS_WRITE_ONCE_FLAG) { - kv_create_flags = KVStore::WRITE_ONCE_FLAG; - } - - int status = kvstore->set(kv_key, p_data, data_length, kv_create_flags); - - return convert_status(status); -} - -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(); - 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 status = kvstore->get_info(kv_key, &kv_info); - - if (status == MBED_SUCCESS) { - if (data_offset > kv_info.size) { - return PSA_ITS_ERROR_OFFSET_INVALID; - } - - // Verify (size + offset) does not wrap around - if (data_length + data_offset < data_length) { - return PSA_ITS_ERROR_INCORRECT_SIZE; - } - - if (data_offset + data_length > kv_info.size) { - return PSA_ITS_ERROR_INCORRECT_SIZE; - } - - size_t actual_size = 0; - status = kvstore->get(kv_key, p_data, data_length, &actual_size, data_offset); - - if (status == MBED_SUCCESS) { - if (actual_size < data_length) { - status = PSA_ITS_ERROR_INCORRECT_SIZE; - } - } - } - - return convert_status(status); -} - -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(); - 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 status = kvstore->get_info(kv_key, &kv_info); - - if (status == MBED_SUCCESS) { - p_info->flags = 0; - if (kv_info.flags & KVStore::WRITE_ONCE_FLAG) { - p_info->flags |= PSA_ITS_WRITE_ONCE_FLAG; - } - p_info->size = (uint32_t)(kv_info.size); // kv_info.size is of type size_t - } - - return convert_status(status); -} - -psa_its_status_t psa_its_remove_impl(int32_t pid, uint32_t uid) -{ - KVStore *kvstore = get_kvstore_instance(); - 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 status = kvstore->remove(kv_key); - - return convert_status(status); -} - -#ifdef __cplusplus -} -#endif 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 deleted file mode 100644 index bb41bedbb21..00000000000 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IMPL/pits_impl.h +++ /dev/null @@ -1,40 +0,0 @@ -/* 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 __PITS_IMPL_H__ -#define __PITS_IMPL_H__ - -#include "psa_prot_internal_storage.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - -#define PITS_DATA_PTR_AT_OFFSET(ptr, offset) ((void *)(((uintptr_t)ptr) + ((uintptr_t)offset))) - -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 -} -#endif - -#endif // __PITS_IMPL_H__ diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c b/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c deleted file mode 100644 index af2aed4fd30..00000000000 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c +++ /dev/null @@ -1,116 +0,0 @@ -/* 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. - */ - -#include "spm_client.h" -#include "psa_prot_internal_storage.h" -#include "psa_its_ifs.h" - -psa_its_status_t psa_its_set(uint32_t uid, uint32_t data_length, const void *p_data, psa_its_create_flags_t create_flags) -{ - if (!p_data && data_length) { - return PSA_ITS_ERROR_BAD_POINTER; - } - - psa_invec_t msg[3] = { - { &uid, sizeof(uid) }, - { p_data, data_length }, - { &create_flags, sizeof(create_flags) } - }; - - psa_handle_t conn = psa_connect(PSA_ITS_SET, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_error_t status = psa_call(conn, msg, 3, NULL, 0); - if (status == PSA_DROP_CONNECTION) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} - -psa_its_status_t psa_its_get(uint32_t uid, uint32_t data_offset, uint32_t data_length, void *p_data) -{ - if (!p_data && data_length) { - return PSA_ITS_ERROR_BAD_POINTER; - } - - psa_invec_t msg[2] = { - { &uid, sizeof(uid) }, - { &data_offset, sizeof(data_offset) } - }; - psa_outvec_t resp = { p_data, data_length }; - - psa_handle_t conn = psa_connect(PSA_ITS_GET, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_error_t status = psa_call(conn, msg, 2, &resp, 1); - - if (status == PSA_DROP_CONNECTION) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} - -psa_its_status_t psa_its_get_info(uint32_t uid, struct psa_its_info_t *p_info) -{ - if (!p_info) { - return PSA_ITS_ERROR_BAD_POINTER; - } - - struct psa_its_info_t info = { 0 }; - psa_invec_t msg = { &uid, sizeof(uid) }; - psa_outvec_t resp = { &info, sizeof(info) }; - psa_handle_t conn = psa_connect(PSA_ITS_INFO, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_error_t status = psa_call(conn, &msg, 1, &resp, 1); - - *p_info = info; - - if (status == PSA_DROP_CONNECTION) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} - -psa_its_status_t psa_its_remove(uint32_t uid) -{ - psa_invec_t msg = { &uid, sizeof(uid) }; - psa_handle_t conn = psa_connect(PSA_ITS_REMOVE, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_error_t status = psa_call(conn, &msg, 1, NULL, 0); - if (status == PSA_DROP_CONNECTION) { - status = PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/its_partition.c b/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/its_partition.c deleted file mode 100644 index ab8799f509e..00000000000 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/its_partition.c +++ /dev/null @@ -1,196 +0,0 @@ -/* 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. - */ - -#include -#include "cmsis_os2.h" -#include "spm_server.h" -#include "spm_panic.h" -#include "psa_its_partition.h" -#include "psa_prot_internal_storage.h" -#include "pits_impl.h" -#include "kv_config.h" -#include "mbed_error.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef psa_error_t (*SignalHandler)(psa_msg_t *); - -static psa_error_t storage_set(psa_msg_t *msg) -{ - uint32_t key = 0; - void *data = NULL; - uint32_t alloc_size = msg->in_size[1]; - psa_its_create_flags_t flags = 0; - - if ((msg->in_size[0] != sizeof(key)) || (msg->in_size[2] != sizeof(flags))) { - return PSA_DROP_CONNECTION; - } - - if (psa_read(msg->handle, 0, &key, sizeof(key)) != sizeof(key)) { - return PSA_DROP_CONNECTION; - } - - if (psa_read(msg->handle, 2, &flags, sizeof(flags)) != sizeof(flags)) { - return PSA_DROP_CONNECTION; - } - - data = malloc(alloc_size); - if (data == NULL) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - if (psa_read(msg->handle, 1, data, msg->in_size[1]) != msg->in_size[1]) { - free(data); - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_its_status_t status = psa_its_set_impl(psa_identity(msg->handle), key, alloc_size, data, flags); - - memset(data, 0, alloc_size); - free(data); - return status; -} - -static psa_error_t storage_get(psa_msg_t *msg) -{ - uint32_t key = 0; - uint32_t offset = 0; - - if ((msg->in_size[0] != sizeof(key)) || (msg->in_size[1] != sizeof(offset))) { - return PSA_DROP_CONNECTION; - } - - if (psa_read(msg->handle, 0, &key, sizeof(key)) != sizeof(key)) { - return PSA_DROP_CONNECTION; - } - - if (psa_read(msg->handle, 1, &offset, sizeof(offset)) != sizeof(offset)) { - return PSA_DROP_CONNECTION; - } - - uint8_t *data = (uint8_t *)malloc(msg->out_size[0]); - if (data == NULL) { - return PSA_ITS_ERROR_STORAGE_FAILURE; - } - - psa_its_status_t status = psa_its_get_impl(psa_identity(msg->handle), key, offset, msg->out_size[0], data); - if (status == PSA_ITS_SUCCESS) { - psa_write(msg->handle, 0, data, msg->out_size[0]); - } - - memset(data, 0, msg->out_size[0]); - free(data); - return status; -} - -static psa_error_t storage_info(psa_msg_t *msg) -{ - struct psa_its_info_t info = { 0 }; - uint32_t key = 0; - - if ((msg->in_size[0] != sizeof(key)) || (msg->out_size[0] != sizeof(info))) { - return PSA_DROP_CONNECTION; - } - - if (psa_read(msg->handle, 0, &key, sizeof(key)) != sizeof(key)) { - return PSA_DROP_CONNECTION; - } - - psa_its_status_t status = psa_its_get_info_impl(psa_identity(msg->handle), key, &info); - if (status == PSA_ITS_SUCCESS) { - psa_write(msg->handle, 0, &info, msg->out_size[0]); - } - - return status; -} - -static psa_error_t storage_remove(psa_msg_t *msg) -{ - uint32_t key = 0; - - if (msg->in_size[0] != sizeof(key)) { - return PSA_DROP_CONNECTION; - } - - if (psa_read(msg->handle, 0, &key, sizeof(key)) != sizeof(key)) { - return PSA_DROP_CONNECTION; - } - - return psa_its_remove_impl(psa_identity(msg->handle), key); -} - -static void message_handler(psa_msg_t *msg, SignalHandler handler) -{ - psa_error_t status = PSA_SUCCESS; - switch (msg->type) { - case PSA_IPC_CONNECT: //fallthrough - case PSA_IPC_DISCONNECT: { - break; - } - case PSA_IPC_CALL: { - status = handler(msg); - break; - } - default: { - SPM_PANIC("Unexpected message type %d!", (int)(msg->type)); - break; - } - } - psa_reply(msg->handle, status); -} - -void pits_entry(void *ptr) -{ - uint32_t signals = 0; - psa_msg_t msg = {0}; - - while (1) { - signals = psa_wait_any(PSA_BLOCK); - - // KVStore initiation: - // - Must be done after the psa_wait_any() call since only now we know OS initialization is done - // - Repeating calls has no effect - int kv_status = kv_init_storage_config(); - if (kv_status != MBED_SUCCESS) { - SPM_PANIC("KVStore initiation failed with status %d!", kv_status); - } - - if ((signals & PSA_ITS_SET_MSK) != 0) { - psa_get(PSA_ITS_SET_MSK, &msg); - message_handler(&msg, storage_set); - } - if ((signals & PSA_ITS_GET_MSK) != 0) { - psa_get(PSA_ITS_GET_MSK, &msg); - message_handler(&msg, storage_get); - } - if ((signals & PSA_ITS_INFO_MSK) != 0) { - psa_get(PSA_ITS_INFO_MSK, &msg); - message_handler(&msg, storage_info); - } - if ((signals & PSA_ITS_REMOVE_MSK) != 0) { - psa_get(PSA_ITS_REMOVE_MSK, &msg); - message_handler(&msg, storage_remove); - } - } -} - -#ifdef __cplusplus -} -#endif 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 deleted file mode 100644 index 26766ad5337..00000000000 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/psa_prot_internal_storage.h +++ /dev/null @@ -1,140 +0,0 @@ -/* 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 __INTERNAL_TRUSTED_STORAGE_H__ -#define __INTERNAL_TRUSTED_STORAGE_H__ - -/** @file -@brief This file describes the PSA Internal Trusted Storage API -*/ - -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** \brief Flags used when creating a key - */ -typedef uint32_t psa_its_create_flags_t; - -#define PSA_ITS_WRITE_ONCE_FLAG (1 << 0) /**< The data associated with the key will not be able to be modified or deleted. Intended to be used to set bits in `psa_its_create_flags_t` */ - -/** - * \brief A container for metadata associated with a specific key - */ -struct psa_its_info_t { - uint32_t size; /**< The size of the data associated with a key **/ - psa_its_create_flags_t flags; /**< The flags set when the key was created **/ -}; -/** - * \brief The return status type for the PSA Trusted Storage functions - */ -typedef uint32_t psa_its_status_t; - -#define PSA_ITS_SUCCESS 0 /**< The operation completed successfully */ -#define PSA_ITS_ERROR_WRITE_ONCE 1 /**< The operation failed because the provided key value was already created with PSA_ITS_WRITE_ONCE_FLAG */ -#define PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED 2 /**< The operation failed because one or more of the flags provided in `create_flags` is not supported or is not valid */ -#define PSA_ITS_ERROR_INSUFFICIENT_SPACE 3 /**< The operation failed because there was insufficient space on the storage medium */ -#define PSA_ITS_ERROR_INVALID_KEY 4 /**< The operation failed because the key value provided was invalid */ -#define PSA_ITS_ERROR_STORAGE_FAILURE 5 /**< The operation failed because the physical storage has failed (Fatal error) */ -#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_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 */ - -/** - * \brief create a new or modify an existing uid/value pair - * - * \param[in] uid the identifier for the data - * \param[in] data_length The size in bytes of the data in `p_data` - * \param[in] p_data A buffer containing the data - * \param[in] create_flags The flags that the data will be stored with - * - * \return A status indicating the success/failure of the operation - - * \retval PSA_ITS_SUCCESS The operation completed successfully - * \retval PSA_ITS_ERROR_WRITE_ONCE The operation failed because the provided `uid` value was already created with PSA_ITS_WRITE_ONCE_FLAG - * \retval PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED The operation failed because one or more of the flags provided in `create_flags` is not supported or is not valid - * \retval PSA_ITS_ERROR_INSUFFICIENT_SPACE The operation failed because there was insufficient space on the storage medium - * \retval PSA_ITS_ERROR_INVALID_KEY The operation failed because the value provided in `uid` was invalid - * \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`) - * is invalid, for example is `NULL` or references memory the caller cannot access - */ -psa_its_status_t psa_its_set(uint32_t uid, uint32_t data_length, const void *p_data, psa_its_create_flags_t create_flags); - -/** - * \brief Retrieve the value associated with a provided uid - * - * \param[in] uid The uid value - * \param[in] data_offset The starting offset of the data requested - * \param[in] data_length the amount of data requested (and the minimum allocated size of the `p_data` buffer) - * \param[out] p_data The buffer where the data will be placed upon successful completion - - * - * \return A status indicating the success/failure of the operation - * - * \retval PSA_ITS_SUCCESS The operation completed successfully - * \retval PSA_ITS_ERROR_KEY_NOT_FOUND The operation failed because the provided `uid` value was not found in the storage - * \retval PSA_ITS_ERROR_INCORRECT_SIZE The operation failed because the data associated with provided `uid` is not the same size as `data_size` - * \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_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); - -/** - * \brief Retrieve the metadata about the provided uid - * - * \param[in] uid The uid value - * \param[out] p_info A pointer to the `psa_its_info_t` struct that will be populated with the metadata - * - * \return A status indicating the success/failure of the operation - * - * \retval PSA_ITS_ERROR_SUCCESS The operation completed successfully - * \retval PSA_ITS_ERROR_KEY_NOT_FOUND The operation failed because the provided uid value was not found in the storage - * \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_info`) - * is invalid, for example is `NULL` or references memory the caller cannot access - */ -psa_its_status_t psa_its_get_info(uint32_t uid, struct psa_its_info_t *p_info); - -/** - * \brief Remove the provided key and its associated data from the storage - * - * \param[in] uid The uid value - * - * \return A status indicating the success/failure of the operation - * - * \retval PSA_ITS_SUCCESS The operation completed successfully - * \retval PSA_ITS_ERROR_KEY_NOT_FOUND The operation failed because the provided key value was not found in the storage - * \retval PSA_ITS_ERROR_WRITE_ONCE The operation failed because the provided key value was created with psa_its_WRITE_ONCE_FLAG - * \retval PSA_ITS_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) - */ -psa_its_status_t psa_its_remove(uint32_t uid); - -#ifdef __cplusplus -} -#endif - -#endif // __INTERNAL_TRUSTED_STORAGE_H__ diff --git a/components/TARGET_PSA/services/storage/common/psa_storage_common_impl.cpp b/components/TARGET_PSA/services/storage/common/psa_storage_common_impl.cpp new file mode 100644 index 00000000000..c39995e13a5 --- /dev/null +++ b/components/TARGET_PSA/services/storage/common/psa_storage_common_impl.cpp @@ -0,0 +1,282 @@ +/* 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. + */ + +#include +#include "TDBStore.h" +#include "psa_storage_common_impl.h" +#include "mbed_error.h" +#include "mbed_assert.h" +#include "mbed_toolchain.h" + +using namespace mbed; + +#ifdef __cplusplus +extern "C" +{ +#endif + +// Maximum length of filename we use for kvstore API. +// pid: 6; delimiter: 1; uid: 11; str terminator: 1 +#define PSA_STORAGE_FILE_NAME_MAX 19 + +#define FLAGS_MSK PSA_STORAGE_FLAG_WRITE_ONCE + +#define STR_EXPAND(tok) #tok + +const uint8_t base64_coding_table[] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', + 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', + 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', + '4', '5', '6', '7', '8', '9', '+', '-' +}; + +void psa_storage_handle_version(KVStore *kvstore, const char *version_key, const psa_storage_version_t *curr_version, + migrate_func_t migrate_func) +{ + psa_storage_version_t read_version = {0, 0}; + size_t actual_size = 0; + bool write_version = false; + int status = kvstore->get(version_key, &read_version, sizeof(read_version), &actual_size, 0); + if (status == MBED_SUCCESS) { + if (actual_size != sizeof(read_version)) { + error("PSA storage version data is corrupt"); + } + } else if (status == MBED_ERROR_ITEM_NOT_FOUND) { + write_version = true; + } else { + error("Could not read PSA storage version data"); + } + + if ((read_version.major > curr_version->major) || + ((read_version.major == curr_version->major) && (read_version.minor > curr_version->minor))) { + error("Downgrading PSA storage version is not allowed"); + } + + if ((read_version.major < curr_version->major) || + ((read_version.major == curr_version->major) && (read_version.minor < curr_version->minor))) { + psa_status_t migration_status = migrate_func(kvstore, &read_version, curr_version); + if (migration_status != PSA_SUCCESS) { + error("PSA storage migration failed"); + } + + write_version = true; + } + + if (write_version) { + if (kvstore->set(version_key, curr_version, sizeof(psa_storage_version_t), 0) != MBED_SUCCESS) { + error("Could not write PSA storage version"); + } + } +} + +/* + * \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_status_t convert_status(int status) +{ + switch (status) { + case MBED_SUCCESS: + return PSA_SUCCESS; + case MBED_ERROR_WRITE_PROTECTED: + return PSA_ERROR_NOT_PERMITTED; + case MBED_ERROR_MEDIA_FULL: + return PSA_ERROR_INSUFFICIENT_STORAGE; + case MBED_ERROR_ITEM_NOT_FOUND: + return PSA_ERROR_DOES_NOT_EXIST; + case MBED_ERROR_INVALID_DATA_DETECTED: + return PSA_ERROR_DATA_CORRUPT; + case MBED_ERROR_INVALID_ARGUMENT: + return PSA_ERROR_INVALID_ARGUMENT; + case MBED_ERROR_READ_FAILED: // fallthrough + case MBED_ERROR_WRITE_FAILED: + return PSA_ERROR_STORAGE_FAILURE; + case MBED_ERROR_AUTHENTICATION_FAILED: // fallthrough + case MBED_ERROR_RBP_AUTHENTICATION_FAILED: + return PSA_ERROR_INVALID_SIGNATURE; + default: + return PSA_ERROR_GENERIC_ERROR; + } +} + +/* + * \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 lsr32(uint32_t x, uint32_t n) +{ + return x >> n; +} + +/* + * \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 uint64_t lsr64(uint64_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, psa_storage_uid_t uid, int32_t pid) +{ + MBED_ASSERT(tdb_filename != NULL); + MBED_ASSERT(tdb_filename_size == PSA_STORAGE_FILE_NAME_MAX); + + uint8_t filename_idx = 0; + uint32_t unsigned_pid = (uint32_t)pid; // binary only representation for bitwise operations + + // Iterate on PID; each time convert 6 bits of PID into a character; first iteration must be done + do { + tdb_filename[filename_idx++] = base64_coding_table[unsigned_pid & 0x3F]; + unsigned_pid = lsr32(unsigned_pid, 6); + } while (unsigned_pid != 0); + + // Write delimiter + tdb_filename[filename_idx++] = '#'; + + // Iterate on UID; each time convert 6 bits of UID into a character; first iteration must be done + do { + tdb_filename[filename_idx++] = base64_coding_table[uid & 0x3F]; + uid = lsr64(uid, 6); + } while (uid != 0); + + tdb_filename[filename_idx++] = '\0'; + MBED_ASSERT(filename_idx <= PSA_STORAGE_FILE_NAME_MAX); +} + +psa_status_t psa_storage_set_impl(KVStore *kvstore, int32_t pid, psa_storage_uid_t uid, + uint32_t data_length, const void *p_data, + psa_storage_create_flags_t create_flags) +{ + if ((create_flags & (~FLAGS_MSK)) != 0) { + return PSA_ERROR_NOT_SUPPORTED; + } + + // Generate KVStore key + char kv_key[PSA_STORAGE_FILE_NAME_MAX] = {'\0'}; + generate_fn(kv_key, PSA_STORAGE_FILE_NAME_MAX, uid, pid); + + uint32_t kv_create_flags = 0; + if (create_flags & PSA_STORAGE_FLAG_WRITE_ONCE) { + kv_create_flags = KVStore::WRITE_ONCE_FLAG; + } + + int status = kvstore->set(kv_key, p_data, data_length, kv_create_flags); + + return convert_status(status); +} + +psa_status_t psa_storage_get_impl(KVStore *kvstore, int32_t pid, psa_storage_uid_t uid, + uint32_t data_offset, uint32_t data_length, void *p_data) +{ + // Generate KVStore key + char kv_key[PSA_STORAGE_FILE_NAME_MAX] = {'\0'}; + generate_fn(kv_key, PSA_STORAGE_FILE_NAME_MAX, uid, pid); + + KVStore::info_t kv_info; + int status = kvstore->get_info(kv_key, &kv_info); + + if (status == MBED_SUCCESS) { + if (data_offset > kv_info.size) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + // Verify (size + offset) does not wrap around + if (data_length + data_offset < data_length) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + if (data_offset + data_length > kv_info.size) { + return PSA_ERROR_BUFFER_TOO_SMALL; + } + + size_t actual_size = 0; + status = kvstore->get(kv_key, p_data, data_length, &actual_size, data_offset); + if ((status == MBED_SUCCESS) && (actual_size < data_length)) { + return PSA_ERROR_BUFFER_TOO_SMALL; + } + } + + return convert_status(status); +} + +psa_status_t psa_storage_get_info_impl(KVStore *kvstore, int32_t pid, psa_storage_uid_t uid, + struct psa_storage_info_t *p_info) +{ + // Generate KVStore key + char kv_key[PSA_STORAGE_FILE_NAME_MAX] = {'\0'}; + generate_fn(kv_key, PSA_STORAGE_FILE_NAME_MAX, uid, pid); + + KVStore::info_t kv_info; + int status = kvstore->get_info(kv_key, &kv_info); + + if (status == MBED_SUCCESS) { + p_info->flags = 0; + if (kv_info.flags & KVStore::WRITE_ONCE_FLAG) { + p_info->flags |= PSA_STORAGE_FLAG_WRITE_ONCE; + } + p_info->size = (uint32_t)(kv_info.size); // kv_info.size is of type size_t + } + + return convert_status(status); +} + +psa_status_t psa_storage_remove_impl(KVStore *kvstore, int32_t pid, psa_storage_uid_t uid) +{ + // Generate KVStore key + char kv_key[PSA_STORAGE_FILE_NAME_MAX] = {'\0'}; + generate_fn(kv_key, PSA_STORAGE_FILE_NAME_MAX, uid, pid); + + int status = kvstore->remove(kv_key); + + return convert_status(status); +} + +psa_status_t psa_storage_reset_impl(KVStore *kvstore) +{ + int status = kvstore->reset(); + return convert_status(status); +} + +#ifdef __cplusplus +} +#endif diff --git a/components/TARGET_PSA/services/storage/common/psa_storage_common_impl.h b/components/TARGET_PSA/services/storage/common/psa_storage_common_impl.h new file mode 100644 index 00000000000..b8881ea6ac2 --- /dev/null +++ b/components/TARGET_PSA/services/storage/common/psa_storage_common_impl.h @@ -0,0 +1,50 @@ +/* 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. + */ + +#ifndef __PSA_STORAGE_COMMON_IMPL_H__ +#define __PSA_STORAGE_COMMON_IMPL_H__ + +#include "psa/error.h" +#include "psa/storage_common.h" +#include "KVStore.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef struct { + uint32_t major; + uint32_t minor; +} psa_storage_version_t; + +typedef psa_status_t (*migrate_func_t)(mbed::KVStore *kvstore, const psa_storage_version_t *old_version, const psa_storage_version_t *new_version); + +void psa_storage_handle_version(mbed::KVStore *kvstore, const char *version_key, const psa_storage_version_t *version, + migrate_func_t migrate_func); +psa_status_t psa_storage_set_impl(mbed::KVStore *kvstore, int32_t pid, psa_storage_uid_t uid, uint32_t data_length, const void *p_data, psa_storage_create_flags_t create_flags); +psa_status_t psa_storage_get_impl(mbed::KVStore *kvstore, int32_t pid, psa_storage_uid_t uid, uint32_t data_offset, uint32_t data_length, void *p_data); +psa_status_t psa_storage_get_info_impl(mbed::KVStore *kvstore, int32_t pid, psa_storage_uid_t uid, struct psa_storage_info_t *p_info); +psa_status_t psa_storage_remove_impl(mbed::KVStore *kvstore, int32_t pid, psa_storage_uid_t uid); +psa_status_t psa_storage_reset_impl(mbed::KVStore *kvstore); + +#ifdef __cplusplus +} +#endif + + +#endif // __PSA_STORAGE_COMMON_IMPL_H__ diff --git a/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_EMUL/psa_prot_internal_storage.cpp b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_EMUL/psa_prot_internal_storage.cpp new file mode 100644 index 00000000000..902dc0df289 --- /dev/null +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_EMUL/psa_prot_internal_storage.cpp @@ -0,0 +1,108 @@ +/* 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. + */ + +#include +#include + +#include "psa/internal_trusted_storage.h" +#include "psa/storage_common.h" +#include "pits_impl.h" +#include "kv_config.h" +#include "mbed_error.h" + +// In EMUL world, there is no real partitioning, which makes the source partition irrelevant. +// So here we set a global pid value to be used for when calling IMPL functions +#define PSA_ITS_EMUL_PID 1 + +psa_status_t psa_its_set(psa_storage_uid_t uid, uint32_t data_length, const void *p_data, psa_storage_create_flags_t create_flags) +{ + if (!p_data && data_length) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + // KVStore initiation: + // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. + // - Repeating calls has no effect + int kv_status = kv_init_storage_config(); + if (kv_status != MBED_SUCCESS) { + return PSA_ERROR_STORAGE_FAILURE; + } + + psa_status_t res = psa_its_set_impl(PSA_ITS_EMUL_PID, uid, data_length, p_data, create_flags); + + return res; +} + +psa_status_t psa_its_get(psa_storage_uid_t uid, uint32_t data_offset, uint32_t data_length, void *p_data) +{ + if (!p_data && data_length) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + // KVStore initiation: + // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. + // - Repeating calls has no effect + int kv_status = kv_init_storage_config(); + if (kv_status != MBED_SUCCESS) { + return PSA_ERROR_STORAGE_FAILURE; + } + + return psa_its_get_impl(PSA_ITS_EMUL_PID, uid, data_offset, data_length, p_data); +} + +psa_status_t psa_its_get_info(psa_storage_uid_t uid, struct psa_storage_info_t *p_info) +{ + if (!p_info) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + // KVStore initiation: + // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. + // - Repeating calls has no effect + int kv_status = kv_init_storage_config(); + if (kv_status != MBED_SUCCESS) { + return PSA_ERROR_STORAGE_FAILURE; + } + + return psa_its_get_info_impl(PSA_ITS_EMUL_PID, uid, p_info); +} + +psa_status_t psa_its_remove(psa_storage_uid_t uid) +{ + // KVStore initiation: + // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. + // - Repeating calls has no effect + int kv_status = kv_init_storage_config(); + if (kv_status != MBED_SUCCESS) { + return PSA_ERROR_STORAGE_FAILURE; + } + + return psa_its_remove_impl(PSA_ITS_EMUL_PID, uid); +} + +extern "C" psa_status_t psa_its_reset() +{ + // KVStore initiation: + // - In EMUL (non-secure single core) we do it here since we don't have another context to do it inside. + // - Repeating calls has no effect + int kv_status = kv_init_storage_config(); + if (kv_status != MBED_SUCCESS) { + return PSA_ERROR_STORAGE_FAILURE; + } + + return psa_its_reset_impl(); +} diff --git a/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/TARGET_TFM/its_tfm_impl.cpp b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/TARGET_TFM/its_tfm_impl.cpp new file mode 100644 index 00000000000..46cd1a75028 --- /dev/null +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/TARGET_TFM/its_tfm_impl.cpp @@ -0,0 +1,157 @@ +/* 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. + */ + +#include +#include "KVStore.h" +#include "TDBStore.h" +#include "psa/internal_trusted_storage.h" +#include "pits_impl.h" +#include "mbed_error.h" +#include "mbed_toolchain.h" +#include "FlashIAP.h" +#include "FlashIAPBlockDevice.h" + +using namespace mbed; + +static KVStore *internal_store = NULL; +static bool is_tfm_kv_initialized = false; + +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 BlockDevice *_get_blockdevice(bd_addr_t start_address, bd_size_t size) +{ + int ret = MBED_SUCCESS; + bd_addr_t flash_end_address; + bd_addr_t flash_start_address; + bd_addr_t aligned_start_address; + bd_addr_t aligned_end_address; + bd_addr_t end_address; + FlashIAP flash; + + ret = flash.init(); + if (ret != 0) { + return NULL; + } + + //Get flash parameters before starting + flash_start_address = flash.get_flash_start(); + flash_end_address = flash_start_address + flash.get_flash_size();; + + aligned_start_address = align_down(start_address, flash.get_sector_size(start_address)); + if (start_address != aligned_start_address) { + flash.deinit(); + return NULL; + } + + end_address = start_address + size; + if (end_address > flash_end_address) { + flash.deinit(); + return NULL; + } + + aligned_end_address = align_up(end_address, flash.get_sector_size(end_address - 1)); + if (end_address != aligned_end_address) { + flash.deinit(); + return NULL; + } + + static FlashIAPBlockDevice bd(start_address, size); + flash.deinit(); + return &bd; +} + +static int _calculate_blocksize_match_tdbstore(BlockDevice *bd) +{ + bd_size_t size = bd->size(); + bd_size_t erase_size = bd->get_erase_size(); + bd_size_t number_of_sector = size / erase_size; + + if (number_of_sector < 2) { + return -1; + } + + return 0; +} + +static int tfm_kv_init(void) +{ + int ret = MBED_SUCCESS; + 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; + + //Get internal memory FLASHIAP block device. + BlockDevice *internal_bd = _get_blockdevice(internal_start_address, internal_size); + if (internal_bd == NULL) { + return -1; // TODO: Error code + } + + ret = internal_bd->init(); + if (ret != 0) { + return ret; + } + + //Check that internal flash has 2 or more sectors + if (_calculate_blocksize_match_tdbstore(internal_bd) != 0) { + return -1; // TODO: Error code + } + + //Deinitialize internal block device and TDB will reinitialize and take control on it. + ret = internal_bd->deinit(); + if (ret != 0) { + return ret; + } + + //Create a TDBStore in the internal FLASHIAP block device. + static TDBStore tdb_internal(internal_bd); + internal_store = &tdb_internal; + + ret = internal_store->init(); + + return ret; +} + +/* + * \brief Get default KVStore instance for internal flesh storage + * + * \return valid pointer to KVStore + */ + +KVStore *get_its_kvstore_instance(void) +{ + return internal_store; +} +extern "C" int kv_init_storage_config() +{ + int ret = MBED_SUCCESS; + + if (!is_tfm_kv_initialized) { + ret = tfm_kv_init(); + } + + is_tfm_kv_initialized = (ret == MBED_SUCCESS) ? true : false; + return ret; +} + + diff --git a/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp new file mode 100644 index 00000000000..bba98ff1ab5 --- /dev/null +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp @@ -0,0 +1,140 @@ +/* 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. + */ + +#include +#include "KVStore.h" +#include "TDBStore.h" +#include "psa/internal_trusted_storage.h" +#include "psa_storage_common_impl.h" +#include "pits_impl.h" +#include "mbed_error.h" +#include "mbed_toolchain.h" + +using namespace mbed; + +#if defined(TARGET_TFM) +KVStore *get_its_kvstore_instance(void); +#else +#include "KVMap.h" +#endif + + + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define STR_EXPAND(tok) #tok +#define ITS_VERSION_KEY "PSA_ITS_VERSION" // ITS version entry identifier in TDBStore + +static KVStore *kvstore = NULL; + + + +MBED_WEAK psa_status_t its_version_migrate(KVStore *kvstore, + const psa_storage_version_t *old_version, const psa_storage_version_t *new_version) +{ + (void)kvstore; + (void)old_version; + (void)new_version; + return PSA_SUCCESS; +} + + +static void its_init(void) +{ +#if defined(TARGET_TFM) + kvstore = get_its_kvstore_instance(); +#else + KVMap &kv_map = KVMap::get_instance(); + kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); +#endif + psa_storage_version_t version = {PSA_ITS_API_VERSION_MAJOR, PSA_ITS_API_VERSION_MINOR}; + if (!kvstore) { + // Can only happen due to system misconfiguration. + // Thus considered as unrecoverable error for runtime. + error("Failed getting kvstore instance\n"); + } + + psa_storage_handle_version(kvstore, ITS_VERSION_KEY, &version, its_version_migrate); +} + +// used from test only +void its_deinit(void) +{ + kvstore = NULL; +} + + +psa_status_t psa_its_set_impl(int32_t pid, psa_storage_uid_t uid, uint32_t data_length, const void *p_data, psa_storage_create_flags_t create_flags) +{ + if (!kvstore) { + its_init(); + } + + return psa_storage_set_impl(kvstore, pid, uid, data_length, p_data, create_flags); +} + +psa_status_t psa_its_get_impl(int32_t pid, psa_storage_uid_t uid, uint32_t data_offset, uint32_t data_length, void *p_data) +{ + if (!kvstore) { + its_init(); + } + + return psa_storage_get_impl(kvstore, pid, uid, data_offset, data_length, p_data); +} + +psa_status_t psa_its_get_info_impl(int32_t pid, psa_storage_uid_t uid, struct psa_storage_info_t *p_info) +{ + if (!kvstore) { + its_init(); + } + + return psa_storage_get_info_impl(kvstore, pid, uid, p_info); +} + +psa_status_t psa_its_remove_impl(int32_t pid, psa_storage_uid_t uid) +{ + if (!kvstore) { + its_init(); + } + + return psa_storage_remove_impl(kvstore, pid, uid); +} + +psa_status_t psa_its_reset_impl() +{ + // Do not call its_init here to avoid version check before reset +#if defined(TARGET_TFM) + kvstore = get_its_kvstore_instance(); +#else + KVMap &kv_map = KVMap::get_instance(); + kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV)); +#endif + if (!kvstore) { + // Can only happen due to system misconfiguration. + // Thus considered as unrecoverable error for runtime. + error("Failed getting kvstore instance\n"); + } + + return psa_storage_reset_impl(kvstore); +} + +#ifdef __cplusplus +} +#endif diff --git a/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.h b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.h new file mode 100644 index 00000000000..19a98809fd1 --- /dev/null +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.h @@ -0,0 +1,39 @@ +/* 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 __PITS_IMPL_H__ +#define __PITS_IMPL_H__ + +#include "psa/error.h" +#include "psa/storage_common.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +psa_status_t psa_its_set_impl(int32_t pid, psa_storage_uid_t uid, uint32_t data_length, const void *p_data, psa_storage_create_flags_t create_flags); +psa_status_t psa_its_get_impl(int32_t pid, psa_storage_uid_t uid, uint32_t data_offset, uint32_t data_length, void *p_data); +psa_status_t psa_its_get_info_impl(int32_t pid, psa_storage_uid_t uid, struct psa_storage_info_t *p_info); +psa_status_t psa_its_remove_impl(int32_t pid, psa_storage_uid_t uid); +psa_status_t psa_its_reset_impl(); + +#ifdef __cplusplus +} +#endif + +#endif // __PITS_IMPL_H__ diff --git a/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c new file mode 100644 index 00000000000..b8f0ad993da --- /dev/null +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c @@ -0,0 +1,133 @@ +/* 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. + */ + +#include "psa/client.h" +#include "psa/storage_common.h" +#include "psa/internal_trusted_storage.h" +#include "psa_its_ifs.h" + +psa_status_t psa_its_set(psa_storage_uid_t uid, uint32_t data_length, const void *p_data, psa_storage_create_flags_t create_flags) +{ + if (!p_data && data_length) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + psa_invec msg[3] = { + { &uid, sizeof(uid) }, + { p_data, data_length }, + { &create_flags, sizeof(create_flags) } + }; + + psa_handle_t conn = psa_connect(PSA_ITS_SET, 1); + if (conn <= PSA_NULL_HANDLE) { + return PSA_ERROR_STORAGE_FAILURE; + } + + psa_status_t status = psa_call(conn, msg, 3, NULL, 0); + if (status == PSA_DROP_CONNECTION) { + status = PSA_ERROR_STORAGE_FAILURE; + } + + psa_close(conn); + return status; +} + +psa_status_t psa_its_get(psa_storage_uid_t uid, uint32_t data_offset, uint32_t data_length, void *p_data) +{ + if (!p_data && data_length) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + psa_invec msg[2] = { + { &uid, sizeof(uid) }, + { &data_offset, sizeof(data_offset) } + }; + psa_outvec resp = { p_data, data_length }; + + psa_handle_t conn = psa_connect(PSA_ITS_GET, 1); + if (conn <= PSA_NULL_HANDLE) { + return PSA_ERROR_STORAGE_FAILURE; + } + + psa_status_t status = psa_call(conn, msg, 2, &resp, 1); + + if (status == PSA_DROP_CONNECTION) { + status = PSA_ERROR_STORAGE_FAILURE; + } + + psa_close(conn); + return status; +} + +psa_status_t psa_its_get_info(psa_storage_uid_t uid, struct psa_storage_info_t *p_info) +{ + if (!p_info) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + struct psa_storage_info_t info = { 0, PSA_STORAGE_FLAG_NONE }; + psa_invec msg = { &uid, sizeof(uid) }; + psa_outvec resp = { &info, sizeof(info) }; + psa_handle_t conn = psa_connect(PSA_ITS_INFO, 1); + if (conn <= PSA_NULL_HANDLE) { + return PSA_ERROR_STORAGE_FAILURE; + } + + psa_status_t status = psa_call(conn, &msg, 1, &resp, 1); + + *p_info = info; + + if (status == PSA_DROP_CONNECTION) { + status = PSA_ERROR_STORAGE_FAILURE; + } + + psa_close(conn); + return status; +} + +psa_status_t psa_its_remove(psa_storage_uid_t uid) +{ + psa_invec msg = { &uid, sizeof(uid) }; + psa_handle_t conn = psa_connect(PSA_ITS_REMOVE, 1); + if (conn <= PSA_NULL_HANDLE) { + return PSA_ERROR_STORAGE_FAILURE; + } + + psa_status_t status = psa_call(conn, &msg, 1, NULL, 0); + if (status == PSA_DROP_CONNECTION) { + status = PSA_ERROR_STORAGE_FAILURE; + } + + psa_close(conn); + return status; +} + +psa_status_t psa_its_reset() +{ + psa_handle_t conn = psa_connect(PSA_ITS_RESET, 1); + if (conn <= PSA_NULL_HANDLE) { + return PSA_ERROR_STORAGE_FAILURE; + } + + psa_status_t status = psa_call(conn, NULL, 0, NULL, 0); + if (status == PSA_DROP_CONNECTION) { + status = PSA_ERROR_STORAGE_FAILURE; + } + + psa_close(conn); + return status; +} diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/psa_its_partition.c b/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/TARGET_MBED_SPM/psa_its_partition.c similarity index 87% rename from components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/psa_its_partition.c rename to components/TARGET_PSA/services/storage/its/COMPONENT_SPE/TARGET_MBED_SPM/psa_its_partition.c index 0fcd2952479..c4122edd6bb 100644 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/psa_its_partition.c +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/TARGET_MBED_SPM/psa_its_partition.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -33,7 +33,7 @@ /* Threads stacks */ -MBED_ALIGN(8) uint8_t its_thread_stack[1024] = {0}; +MBED_ALIGN(8) uint8_t its_thread_stack[2048] = {0}; /* Threads control blocks */ osRtxThread_t its_thread_cb = {0}; @@ -45,7 +45,7 @@ osThreadAttr_t its_thread_attr = { .cb_mem = &its_thread_cb, .cb_size = sizeof(its_thread_cb), .stack_mem = its_thread_stack, - .stack_size = 1024, + .stack_size = 2048, .priority = osPriorityNormal, .tz_module = 0, .reserved = 0 @@ -100,6 +100,18 @@ spm_rot_service_t its_rot_services[ITS_ROT_SRV_COUNT] = { .tail = NULL } }, + { + .sid = PSA_ITS_RESET, + .mask = PSA_ITS_RESET_MSK, + .partition = NULL, + .min_version = 1, + .min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED, + .allow_nspe = false, + .queue = { + .head = NULL, + .tail = NULL + } + }, }; @@ -112,7 +124,7 @@ static const osMutexAttr_t its_mutex_attr = { }; -extern void pits_entry(void *ptr); +extern void its_entry(void *ptr); void its_init(spm_partition_t *partition) { @@ -130,8 +142,9 @@ void its_init(spm_partition_t *partition) } partition->rot_services = its_rot_services; - partition->thread_id = osThreadNew(pits_entry, NULL, &its_thread_attr); + partition->thread_id = osThreadNew(its_entry, NULL, &its_thread_attr); if (NULL == partition->thread_id) { SPM_PANIC("Failed to create start main thread of partition its!\n"); } } + diff --git a/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/its_partition.c b/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/its_partition.c new file mode 100644 index 00000000000..ac2a7ddf09a --- /dev/null +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/its_partition.c @@ -0,0 +1,238 @@ +/* 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. + */ + +#include +#include "psa/client.h" +#include "psa/service.h" +#include "psa_its_partition.h" +#include "psa/internal_trusted_storage.h" +#include "pits_impl.h" +#include "mbed_error.h" + +#if defined(TARGET_MBED_SPM) +#include "kv_config.h" + +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#if defined(TARGET_TFM) +#define SPM_PANIC(format, ...) \ +{ \ + while(1){}; \ +} +#endif + +typedef psa_status_t (*SignalHandler)(psa_msg_t *); + +static psa_status_t storage_set(psa_msg_t *msg) +{ + psa_storage_uid_t key = 0; + void *data = NULL; + uint32_t alloc_size = msg->in_size[1]; + psa_storage_create_flags_t flags = 0; + + if ((msg->in_size[0] != sizeof(key)) || (msg->in_size[2] != sizeof(flags))) { + return PSA_DROP_CONNECTION; + } + + if (psa_read(msg->handle, 0, &key, sizeof(key)) != sizeof(key)) { + return PSA_DROP_CONNECTION; + } + + if (psa_read(msg->handle, 2, &flags, sizeof(flags)) != sizeof(flags)) { + return PSA_DROP_CONNECTION; + } + + data = malloc(alloc_size); + if (data == NULL) { + return PSA_ERROR_STORAGE_FAILURE; + } + + if (psa_read(msg->handle, 1, data, msg->in_size[1]) != msg->in_size[1]) { + free(data); + return PSA_ERROR_STORAGE_FAILURE; + } +#if defined(TARGET_MBED_SPM) + psa_status_t status = psa_its_set_impl(psa_identity(msg->handle), key, alloc_size, data, flags); +#else + psa_status_t status = psa_its_set_impl(msg->client_id, key, alloc_size, data, flags); +#endif + memset(data, 0, alloc_size); + free(data); + return status; +} + +static psa_status_t storage_get(psa_msg_t *msg) +{ + psa_storage_uid_t key = 0; + uint32_t offset = 0; + + if ((msg->in_size[0] != sizeof(key)) || (msg->in_size[1] != sizeof(offset))) { + return PSA_DROP_CONNECTION; + } + + if (psa_read(msg->handle, 0, &key, sizeof(key)) != sizeof(key)) { + return PSA_DROP_CONNECTION; + } + + if (psa_read(msg->handle, 1, &offset, sizeof(offset)) != sizeof(offset)) { + return PSA_DROP_CONNECTION; + } + + uint8_t *data = (uint8_t *)malloc(msg->out_size[0]); + if (data == NULL) { + return PSA_ERROR_STORAGE_FAILURE; + } + +#if defined(TARGET_MBED_SPM) + psa_status_t status = psa_its_get_impl(psa_identity(msg->handle), key, offset, msg->out_size[0], data); +#else + psa_status_t status = psa_its_get_impl(msg->client_id, key, offset, msg->out_size[0], data); +#endif + + if (status == PSA_SUCCESS) { + psa_write(msg->handle, 0, data, msg->out_size[0]); + } + + memset(data, 0, msg->out_size[0]); + free(data); + return status; +} + +static psa_status_t storage_info(psa_msg_t *msg) +{ + struct psa_storage_info_t info = { 0 }; + psa_storage_uid_t key = 0; + + if ((msg->in_size[0] != sizeof(key)) || (msg->out_size[0] != sizeof(info))) { + return PSA_DROP_CONNECTION; + } + + if (psa_read(msg->handle, 0, &key, sizeof(key)) != sizeof(key)) { + return PSA_DROP_CONNECTION; + } + +#if defined(TARGET_MBED_SPM) + psa_status_t status = psa_its_get_info_impl(psa_identity(msg->handle), key, &info); +#else + psa_status_t status = psa_its_get_info_impl(msg->client_id, key, &info); +#endif + + if (status == PSA_SUCCESS) { + psa_write(msg->handle, 0, &info, msg->out_size[0]); + } + + return status; +} + +static psa_status_t storage_remove(psa_msg_t *msg) +{ + psa_storage_uid_t key = 0; + + if (msg->in_size[0] != sizeof(key)) { + return PSA_DROP_CONNECTION; + } + + if (psa_read(msg->handle, 0, &key, sizeof(key)) != sizeof(key)) { + return PSA_DROP_CONNECTION; + } + +#if defined(TARGET_MBED_SPM) + return psa_its_remove_impl(psa_identity(msg->handle), key); +#else + return psa_its_remove_impl(msg->client_id, key); +#endif +} +static psa_status_t storage_reset(psa_msg_t *msg) +{ + (void)msg; + return psa_its_reset_impl(); +} + + + +static void message_handler(psa_msg_t *msg, SignalHandler handler) +{ + psa_status_t status = PSA_SUCCESS; + switch (msg->type) { + case PSA_IPC_CONNECT: //fallthrough + case PSA_IPC_DISCONNECT: { + break; + } + case PSA_IPC_CALL: { + status = handler(msg); + break; + } + default: { + SPM_PANIC("Unexpected message type %d!", (int)(msg->type)); + break; + } + } + psa_reply(msg->handle, status); +} + +void its_entry(void *ptr) +{ + uint32_t signals = 0; + psa_msg_t msg = {0}; + + while (1) { +#if defined(TARGET_MBED_SPM) + signals = psa_wait_any(PSA_BLOCK); +#else + signals = psa_wait(ITS_WAIT_ANY_SID_MSK, PSA_BLOCK); +#endif + + // KVStore initiation: + // - Must be done after the psa_wait_any() call since only now we know OS initialization is done + // - Repeating calls has no effect + int kv_status = kv_init_storage_config(); + if (kv_status != MBED_SUCCESS) { + SPM_PANIC("KVStore initiation failed with status %d!", kv_status); + } + + if ((signals & PSA_ITS_SET_MSK) != 0) { + psa_get(PSA_ITS_SET_MSK, &msg); + message_handler(&msg, storage_set); + } + if ((signals & PSA_ITS_GET_MSK) != 0) { + psa_get(PSA_ITS_GET_MSK, &msg); + message_handler(&msg, storage_get); + } + if ((signals & PSA_ITS_INFO_MSK) != 0) { + psa_get(PSA_ITS_INFO_MSK, &msg); + message_handler(&msg, storage_info); + } + if ((signals & PSA_ITS_REMOVE_MSK) != 0) { + psa_get(PSA_ITS_REMOVE_MSK, &msg); + message_handler(&msg, storage_remove); + } + if ((signals & PSA_ITS_RESET_MSK) != 0) { + psa_get(PSA_ITS_RESET_MSK, &msg); + message_handler(&msg, storage_reset); + } + + } +} + +#ifdef __cplusplus +} +#endif diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/psa_its_partition.h b/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/psa_its_partition.h similarity index 89% rename from components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/psa_its_partition.h rename to components/TARGET_PSA/services/storage/its/COMPONENT_SPE/psa_its_partition.h index 6aec72b31e6..d99e57f7290 100644 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/COMPONENT_SPE/psa_its_partition.h +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/psa_its_partition.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -28,7 +28,7 @@ #define ITS_ID 10 -#define ITS_ROT_SRV_COUNT (4UL) +#define ITS_ROT_SRV_COUNT (5UL) #define ITS_EXT_ROT_SRV_COUNT (0UL) /* ITS event flags */ @@ -48,12 +48,15 @@ #define PSA_ITS_INFO_MSK (1UL << PSA_ITS_INFO_MSK_POS) #define PSA_ITS_REMOVE_MSK_POS (7UL) #define PSA_ITS_REMOVE_MSK (1UL << PSA_ITS_REMOVE_MSK_POS) +#define PSA_ITS_RESET_MSK_POS (8UL) +#define PSA_ITS_RESET_MSK (1UL << PSA_ITS_RESET_MSK_POS) #define ITS_WAIT_ANY_SID_MSK (\ PSA_ITS_GET_MSK | \ PSA_ITS_SET_MSK | \ PSA_ITS_INFO_MSK | \ - PSA_ITS_REMOVE_MSK) + PSA_ITS_REMOVE_MSK | \ + PSA_ITS_RESET_MSK) #endif // PSA_ITS_PARTITION_H diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/pits_psa.json b/components/TARGET_PSA/services/storage/its/pits_psa.json similarity index 79% rename from components/TARGET_PSA/services/psa_prot_internal_storage/pits_psa.json rename to components/TARGET_PSA/services/storage/its/pits_psa.json index 61fee6e6f3d..2296e0dccdd 100644 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/pits_psa.json +++ b/components/TARGET_PSA/services/storage/its/pits_psa.json @@ -3,8 +3,8 @@ "type": "APPLICATION-ROT", "priority": "NORMAL", "id": "0x0000000A", - "entry_point": "pits_entry", - "stack_size": "0x400", + "entry_point": "its_entry", + "stack_size": "0x800", "heap_size": "0x400", "services": [{ "name": "PSA_ITS_GET", @@ -37,6 +37,14 @@ "non_secure_clients": true, "minor_version": 1, "minor_policy": "RELAXED" + }, + { + "name": "PSA_ITS_RESET", + "identifier": "0x00011A04", + "signal": "PSA_ITS_RESET_MSK", + "non_secure_clients": false, + "minor_version": 1, + "minor_policy": "RELAXED" } ], "source_files": [ diff --git a/components/TARGET_PSA/services/psa_prot_internal_storage/psa_its_ifs.h b/components/TARGET_PSA/services/storage/its/psa_its_ifs.h similarity index 95% rename from components/TARGET_PSA/services/psa_prot_internal_storage/psa_its_ifs.h rename to components/TARGET_PSA/services/storage/its/psa_its_ifs.h index 99c70ba30be..af4d7bb4dd9 100644 --- a/components/TARGET_PSA/services/psa_prot_internal_storage/psa_its_ifs.h +++ b/components/TARGET_PSA/services/storage/its/psa_its_ifs.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2019 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -30,5 +30,6 @@ #define PSA_ITS_SET 0x00011A01 #define PSA_ITS_INFO 0x00011A02 #define PSA_ITS_REMOVE 0x00011A03 +#define PSA_ITS_RESET 0x00011A04 #endif // PSA_ITS_PARTITION_ROT_SERVICES_H diff --git a/components/TARGET_PSA/services/storage/its/psa_prot_internal_storage.h b/components/TARGET_PSA/services/storage/its/psa_prot_internal_storage.h new file mode 100644 index 00000000000..aeb129dde2d --- /dev/null +++ b/components/TARGET_PSA/services/storage/its/psa_prot_internal_storage.h @@ -0,0 +1,145 @@ +/* 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. + */ +/** @file +@brief This file describes the PSA Internal Trusted Storage API +*/ + +#ifndef __PSA_INTERNAL_TRUSTED_STORAGE_H__ +#define __PSA_INTERNAL_TRUSTED_STORAGE_H__ + +#include +#include + +#include "psa/error.h" +#include "psa/storage_common.h" +#include "mbed_toolchain.h" + +#ifdef __cplusplus +extern "C" { +#endif +#define PSA_ITS_API_VERSION_MAJOR 1 /**< The major version number of the PSA ITS API. It will be incremented on significant updates that may include breaking changes */ +#define PSA_ITS_API_VERSION_MINOR 1 /**< The minor version number of the PSA ITS API. It will be incremented in small updates that are unlikely to include breaking changes */ + +// These deprecated types are still used by our PSA compliance test tools +MBED_DEPRECATED("ITS specific types should not be used") +typedef psa_status_t psa_its_status_t; + +MBED_DEPRECATED("ITS specific types should not be used") +typedef psa_storage_create_flags_t psa_its_create_flags_t; + +MBED_DEPRECATED("ITS specific types should not be used") +typedef psa_storage_uid_t psa_its_uid_t; + +MBED_DEPRECATED("ITS specific types should not be used") +struct psa_its_info_t { + uint32_t size; + psa_its_create_flags_t flags; +}; + +// These defines should also be deprecated +#define PSA_ITS_SUCCESS PSA_SUCCESS +#define PSA_ITS_ERROR_UID_NOT_FOUND PSA_ERROR_DOES_NOT_EXIST +#define PSA_ITS_ERROR_STORAGE_FAILURE PSA_ERROR_STORAGE_FAILURE +#define PSA_ITS_ERROR_INSUFFICIENT_SPACE PSA_ERROR_INSUFFICIENT_STORAGE +#define PSA_ITS_ERROR_OFFSET_INVALID PSA_ERROR_INVALID_ARGUMENT +#define PSA_ITS_ERROR_INCORRECT_SIZE PSA_ERROR_INVALID_ARGUMENT +#define PSA_ITS_ERROR_INVALID_ARGUMENTS PSA_ERROR_INVALID_ARGUMENT +#define PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED PSA_ERROR_NOT_SUPPORTED +#define PSA_ITS_ERROR_WRITE_ONCE PSA_ERROR_ALREADY_EXISTS + + +/** + * \brief create a new or modify an existing uid/value pair + * + * \param[in] uid the identifier for the data + * \param[in] data_length The size in bytes of the data in `p_data` + * \param[in] p_data A buffer containing the data + * \param[in] create_flags The flags that the data will be stored with + * + * \return A status indicating the success/failure of the operation + + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the provided `uid` value was already created with PSA_STORAGE_WRITE_ONCE_FLAG + * \retval PSA_ERROR_NOT_SUPPORTED The operation failed because one or more of the flags provided in `create_flags` is not supported or is not valid + * \retval PSA_ERROR_INSUFFICIENT_STORAGE The operation failed because there was insufficient space on the storage medium + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_INVALID_ARGUMENTS The operation failed because one of the provided pointers(`p_data`) + * is invalid, for example is `NULL` or references memory the caller cannot access + */ +psa_status_t psa_its_set(psa_storage_uid_t uid, + uint32_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags); + +/** + * \brief Retrieve the value associated with a provided uid + * + * \param[in] uid The uid value + * \param[in] data_offset The starting offset of the data requested + * \param[in] data_length the amount of data requested (and the minimum allocated size of the `p_data` buffer) + * \param[out] p_data The buffer where the data will be placed upon successful completion + + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided `uid` value was not found in the storage + * \retval PSA_ERROR_BUFFER_TOO_SMALL The operation failed because the data associated with provided `uid` is not the same size as `data_size` + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_INVALID_ARGUMENT 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 + */ +psa_status_t psa_its_get(psa_storage_uid_t uid, + uint32_t data_offset, + uint32_t data_length, + void *p_data); + +/** + * \brief Retrieve the metadata about the provided uid + * + * \param[in] uid The uid value + * \param[out] p_info A pointer to the `psa_storage_info_t` struct that will be populated with the metadata + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided uid value was not found in the storage + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the provided pointers(`p_info`) + * is invalid, for example is `NULL` or references memory the caller cannot access + */ +psa_status_t psa_its_get_info(psa_storage_uid_t uid, + struct psa_storage_info_t *p_info); + +/** + * \brief Remove the provided key and its associated data from the storage + * + * \param[in] uid The uid value + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided key value was not found in the storage + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the provided key value was created with PSA_STORAGE_WRITE_ONCE_FLAG + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + */ +psa_status_t psa_its_remove(psa_storage_uid_t uid); + +#ifdef __cplusplus +} +#endif + +#endif // __PSA_INTERNAL_TRUSTED_STORAGE_H__ diff --git a/components/TARGET_PSA/services/storage/ps/COMPONENT_NSPE/protected_storage.cpp b/components/TARGET_PSA/services/storage/ps/COMPONENT_NSPE/protected_storage.cpp new file mode 100644 index 00000000000..794e8dd7e9f --- /dev/null +++ b/components/TARGET_PSA/services/storage/ps/COMPONENT_NSPE/protected_storage.cpp @@ -0,0 +1,139 @@ +/* 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. + */ + +#include +#include "KVMap.h" +#include "KVStore.h" +#include "kv_config.h" +#include "TDBStore.h" +#include "psa/protected_storage.h" +#include "psa_storage_common_impl.h" +#include "mbed_error.h" +#include "mbed_toolchain.h" + +using namespace mbed; + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define STR_EXPAND(tok) #tok +#define PS_VERSION_KEY "PSA_PS_VERSION" // PS version entry identifier in TDBStore + +// Global PID for protected storage, used when calling IMPL functions +#define PSA_PS_GLOBAL_PID 1 + +static KVStore *kvstore = NULL; + +MBED_WEAK psa_status_t ps_version_migrate(KVStore *kvstore, + const psa_storage_version_t *old_version, const psa_storage_version_t *new_version) +{ + (void)kvstore; + (void)old_version; + (void)new_version; + return PSA_SUCCESS; +} + + +static void ps_init(void) +{ + int ret = kv_init_storage_config(); + if (ret) { + // Can only happen due to system misconfiguration. + // Thus considered as unrecoverable error for runtime. + error("Failed initializing kvstore configuration\n"); + } + KVMap &kv_map = KVMap::get_instance(); + psa_storage_version_t version = {PSA_PS_API_VERSION_MAJOR, PSA_PS_API_VERSION_MINOR}; + kvstore = kv_map.get_main_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"); + } + + psa_storage_handle_version(kvstore, PS_VERSION_KEY, &version, ps_version_migrate); +} + +// used from test only +void ps_deinit(void) +{ + kvstore = NULL; +} + + +psa_status_t psa_ps_set(psa_storage_uid_t uid, uint32_t data_length, const void *p_data, psa_storage_create_flags_t create_flags) +{ + if (!kvstore) { + ps_init(); + } + + return psa_storage_set_impl(kvstore, PSA_PS_GLOBAL_PID, uid, data_length, p_data, create_flags); +} + +psa_status_t psa_ps_get(psa_storage_uid_t uid, uint32_t data_offset, uint32_t data_length, void *p_data) +{ + if (!kvstore) { + ps_init(); + } + + return psa_storage_get_impl(kvstore, PSA_PS_GLOBAL_PID, uid, data_offset, data_length, p_data); +} + +psa_status_t psa_ps_get_info(psa_storage_uid_t uid, struct psa_storage_info_t *p_info) +{ + if (!kvstore) { + ps_init(); + } + + return psa_storage_get_info_impl(kvstore, PSA_PS_GLOBAL_PID, uid, p_info); +} + +psa_status_t psa_ps_remove(psa_storage_uid_t uid) +{ + if (!kvstore) { + ps_init(); + } + + return psa_storage_remove_impl(kvstore, PSA_PS_GLOBAL_PID, uid); +} + +extern "C" psa_status_t psa_ps_reset() +{ + // Do not call its_init here to avoid version check before reset + int ret = kv_init_storage_config(); + if (ret) { + // Can only happen due to system misconfiguration. + // Thus considered as unrecoverable error for runtime. + error("Failed initializing kvstore configuration\n"); + } + + KVMap &kv_map = KVMap::get_instance(); + kvstore = kv_map.get_main_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 psa_storage_reset_impl(kvstore); +} + +#ifdef __cplusplus +} +#endif diff --git a/components/TARGET_PSA/spm/COMPONENT_SPE/psa_setup.c b/components/TARGET_PSA/spm/COMPONENT_SPE/psa_setup.c deleted file mode 100644 index 6710b1f9ea1..00000000000 --- a/components/TARGET_PSA/spm/COMPONENT_SPE/psa_setup.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright (c) 2017-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. - */ - -/*********************************************************************************************************************** - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * 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" -#include "spm_internal.h" -#include "handles_manager.h" -#include "cmsis.h" -#include "psa_crypto_srv_partition.h" -#include "psa_its_partition.h" - -extern const uint32_t crypto_srv_external_sids[4]; - -__attribute__((weak)) -spm_partition_t g_partitions[2] = { - { - .partition_id = CRYPTO_SRV_ID, - .thread_id = 0, - .flags_rot_srv = CRYPTO_SRV_WAIT_ANY_SID_MSK, - .flags_interrupts = 0, - .rot_services = NULL, - .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 = ITS_ID, - .thread_id = 0, - .flags_rot_srv = ITS_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, - .irq_mapper = NULL, - }, -}; - -/* Check all the defined memory regions for overlapping. */ - -/* A list of all the memory regions. */ -__attribute__((weak)) -const mem_region_t *mem_regions = NULL; - -__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); - -__attribute__((weak)) -uint32_t init_partitions(spm_partition_t **partitions) -{ - if (NULL == partitions) { - SPM_PANIC("partitions is NULL!\n"); - } - - crypto_srv_init(&(g_partitions[0])); - its_init(&(g_partitions[1])); - - *partitions = g_partitions; - return 2; -} - diff --git a/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp b/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp index b4d5dac38df..43e19acc822 100644 --- a/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp +++ b/components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp @@ -18,6 +18,7 @@ #include "FlashIAPBlockDevice.h" #include "mbed_critical.h" +#include "mbed_error.h" using namespace mbed; #include @@ -38,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() 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_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/config/mbed_lib.json b/components/storage/blockdevice/COMPONENT_SD/mbed_lib.json similarity index 100% rename from components/storage/blockdevice/COMPONENT_SD/config/mbed_lib.json rename to components/storage/blockdevice/COMPONENT_SD/mbed_lib.json 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/wifi/esp8266-driver/ESP8266/ESP8266.cpp b/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp index 50f898c4f2a..94470e0b696 100644 --- a/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp +++ b/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp @@ -25,6 +25,7 @@ #include "PinNames.h" #include "platform/Callback.h" #include "platform/mbed_error.h" +#include "rtos/Kernel.h" #define TRACE_GROUP "ESPA" // ESP8266 AT layer @@ -51,6 +52,8 @@ ESP8266::ESP8266(PinName tx, PinName rx, bool debug, PinName rts, PinName cts) _sock_already(false), _closed(false), _busy(false), + _reset_check(_rmutex), + _reset_done(false), _conn_status(NSAPI_STATUS_DISCONNECTED) { _serial.set_baud(ESP8266_DEFAULT_BAUD_RATE); @@ -71,6 +74,7 @@ ESP8266::ESP8266(PinName tx, PinName rx, bool debug, PinName rts, PinName cts) _parser.oob("UNLINK", callback(this, &ESP8266::_oob_socket_close_err)); _parser.oob("ALREADY CONNECTED", callback(this, &ESP8266::_oob_conn_already)); _parser.oob("ERROR", callback(this, &ESP8266::_oob_err)); + _parser.oob("ready", callback(this, &ESP8266::_oob_ready)); // Don't expect to find anything about the watchdog reset in official documentation //https://techtutorialsx.com/2017/01/21/esp8266-watchdog-functions/ _parser.oob("wdt reset", callback(this, &ESP8266::_oob_watchdog_reset)); @@ -183,14 +187,17 @@ bool ESP8266::start_uart_hw_flow_ctrl(void) bool done = true; #if DEVICE_SERIAL_FC + _smutex.lock(); if (_serial_rts != NC && _serial_cts != NC) { - // Start board's flow control - _serial.set_flow_control(SerialBase::RTSCTS, _serial_rts, _serial_cts); - // Start ESP8266's flow control done = _parser.send("AT+UART_CUR=%u,8,1,0,3", ESP8266_DEFAULT_BAUD_RATE) && _parser.recv("OK\n"); + if (done) { + // Start board's flow control + _serial.set_flow_control(SerialBase::RTSCTS, _serial_rts, _serial_cts); + } + } else if (_serial_rts != NC) { _serial.set_flow_control(SerialBase::RTS, _serial_rts, NC); @@ -203,7 +210,14 @@ bool ESP8266::start_uart_hw_flow_ctrl(void) done = _parser.send("AT+UART_CUR=%u,8,1,0,1", ESP8266_DEFAULT_BAUD_RATE) && _parser.recv("OK\n"); - _serial.set_flow_control(SerialBase::CTS, NC, _serial_cts); + if (done) { + _serial.set_flow_control(SerialBase::CTS, NC, _serial_cts); + } + } + _smutex.unlock(); + + if (!done) { + tr_debug("Enable UART HW flow control: FAIL"); } #else if (_serial_rts != NC || _serial_cts != NC) { @@ -234,20 +248,35 @@ bool ESP8266::startup(int mode) bool ESP8266::reset(void) { + static const int ESP8266_BOOTTIME = 10000; // [ms] bool done = false; _smutex.lock(); - set_timeout(ESP8266_CONNECT_TIMEOUT); + unsigned long int start_time = rtos::Kernel::get_ms_count(); + _reset_done = false; + set_timeout(ESP8266_RECV_TIMEOUT); for (int i = 0; i < 2; i++) { - if (_parser.send("AT+RST") - && _parser.recv("OK\n") - && _parser.recv("ready")) { - done = true; + if (!_parser.send("AT+RST") || !_parser.recv("OK\n")) { + tr_debug("reset(): AT+RST failed or no response"); + continue; + } + + _rmutex.lock(); + while ((rtos::Kernel::get_ms_count() - start_time < ESP8266_BOOTTIME) && !_reset_done) { + _process_oob(ESP8266_RECV_TIMEOUT, true); // UART mutex claimed -> need to check for OOBs ourselves + _reset_check.wait_for(100); // Arbitrary relatively short delay + } + + done = _reset_done; + _rmutex.unlock(); + if (done) { break; } } + tr_debug("reset(): done: %s", done ? "OK" : "FAIL"); + _clear_socket_packets(ESP8266_ALL_SOCKET_IDS); set_timeout(); _smutex.unlock(); @@ -959,6 +988,18 @@ bool ESP8266::_recv_ap(nsapi_wifi_ap_t *ap) void ESP8266::_oob_watchdog_reset() { + MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_ETIME), \ + "_oob_watchdog_reset() modem watchdog reset triggered\n"); +} + +void ESP8266::_oob_ready() +{ + + _rmutex.lock(); + _reset_done = true; + _reset_check.notify_all(); + _rmutex.unlock(); + for (int i = 0; i < SOCKET_COUNT; i++) { _sock_i[i].open = false; } @@ -966,6 +1007,8 @@ void ESP8266::_oob_watchdog_reset() // Makes possible to reinitialize _conn_status = NSAPI_STATUS_ERROR_UNSUPPORTED; _conn_stat_cb(); + + tr_debug("_oob_reset(): reset detected"); } void ESP8266::_oob_busy() diff --git a/components/wifi/esp8266-driver/ESP8266/ESP8266.h b/components/wifi/esp8266-driver/ESP8266/ESP8266.h index 68eb5f969f5..68688243bf5 100644 --- a/components/wifi/esp8266-driver/ESP8266/ESP8266.h +++ b/components/wifi/esp8266-driver/ESP8266/ESP8266.h @@ -27,6 +27,7 @@ #include "platform/ATCmdParser.h" #include "platform/Callback.h" #include "platform/mbed_error.h" +#include "rtos/ConditionVariable.h" #include "rtos/Mutex.h" // Various timeouts for different ESP8266 operations @@ -396,6 +397,7 @@ class ESP8266 { PinName _serial_rts; PinName _serial_cts; rtos::Mutex _smutex; // Protect serial port access + rtos::Mutex _rmutex; // Reset protection // AT Command Parser mbed::ATCmdParser _parser; @@ -435,6 +437,7 @@ class ESP8266 { void _oob_watchdog_reset(); void _oob_busy(); void _oob_tcp_data_hdlr(); + void _oob_ready(); // OOB state variables int _connect_error; @@ -444,6 +447,8 @@ class ESP8266 { bool _closed; bool _error; bool _busy; + rtos::ConditionVariable _reset_check; + bool _reset_done; // Modem's address info char _ip_buffer[16]; diff --git a/components/wifi/esp8266-driver/ESP8266Interface.cpp b/components/wifi/esp8266-driver/ESP8266Interface.cpp index eea53d71a43..7370fa6e598 100644 --- a/components/wifi/esp8266-driver/ESP8266Interface.cpp +++ b/components/wifi/esp8266-driver/ESP8266Interface.cpp @@ -26,9 +26,9 @@ #include "features/netsocket/nsapi_types.h" #include "mbed_trace.h" #include "platform/Callback.h" +#include "platform/mbed_critical.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 @@ -58,9 +58,10 @@ ESP8266Interface::ESP8266Interface() _if_blocking(true), _if_connected(_cmutex), _initialized(false), + _connect_retval(NSAPI_ERROR_OK), _conn_stat(NSAPI_STATUS_DISCONNECTED), _conn_stat_cb(NULL), - _global_event_queue(NULL), + _global_event_queue(mbed_event_queue()), // Needs to be set before attaching event() to SIGIO _oob_event_id(0), _connect_event_id(0) { @@ -70,14 +71,12 @@ ESP8266Interface::ESP8266Interface() _esp.sigio(this, &ESP8266Interface::event); _esp.set_timeout(); - _esp.attach(this, &ESP8266Interface::update_conn_state_cb); + _esp.attach(this, &ESP8266Interface::refresh_conn_state_cb); for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) { _sock_i[i].open = false; _sock_i[i].sport = 0; } - - _oob2global_event_queue(); } #endif @@ -91,7 +90,7 @@ ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug, PinName r _initialized(false), _conn_stat(NSAPI_STATUS_DISCONNECTED), _conn_stat_cb(NULL), - _global_event_queue(NULL), + _global_event_queue(mbed_event_queue()), // Needs to be set before attaching event() to SIGIO _oob_event_id(0), _connect_event_id(0) { @@ -101,14 +100,12 @@ ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug, PinName r _esp.sigio(this, &ESP8266Interface::event); _esp.set_timeout(); - _esp.attach(this, &ESP8266Interface::update_conn_state_cb); + _esp.attach(this, &ESP8266Interface::refresh_conn_state_cb); for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) { _sock_i[i].open = false; _sock_i[i].sport = 0; } - - _oob2global_event_queue(); } ESP8266Interface::~ESP8266Interface() @@ -168,17 +165,6 @@ int ESP8266Interface::connect(const char *ssid, const char *pass, nsapi_security return connect(); } -void ESP8266Interface::_oob2global_event_queue() -{ - _global_event_queue = mbed_event_queue(); - _oob_event_id = _global_event_queue->call_every(ESP8266_RECV_TIMEOUT, callback(this, &ESP8266Interface::proc_oob_evnt)); - - if (!_oob_event_id) { - MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_ENOMEM), \ - "ESP8266::_oob2geq: unable to allocate OOB event"); - } -} - void ESP8266Interface::_connect_async() { _cmutex.lock(); @@ -187,8 +173,12 @@ void ESP8266Interface::_connect_async() _cmutex.unlock(); return; } - - if (_esp.connect(ap_ssid, ap_pass) != NSAPI_ERROR_OK) { + _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)); @@ -196,9 +186,6 @@ void ESP8266Interface::_connect_async() MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_ENOMEM), \ "_connect_async(): unable to add event to queue"); } - } else { - _connect_event_id = 0; - _if_connected.notify_all(); } _cmutex.unlock(); } @@ -235,6 +222,7 @@ int ESP8266Interface::connect() _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)); @@ -243,13 +231,18 @@ int ESP8266Interface::connect() "connect(): unable to add event to queue"); } - while (_if_blocking && (_conn_status_to_error() != NSAPI_ERROR_IS_CONNECTED)) { + while (_if_blocking && (_conn_status_to_error() != NSAPI_ERROR_IS_CONNECTED) + && (_connect_retval == NSAPI_ERROR_NO_CONNECTION)) { _if_connected.wait(); } _cmutex.unlock(); - return NSAPI_ERROR_OK; + 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) @@ -400,12 +393,7 @@ 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.reset()) { + if (_reset() != NSAPI_ERROR_OK) { return NSAPI_ERROR_DEVICE_ERROR; } if (!_esp.echo_off()) { @@ -432,7 +420,7 @@ nsapi_error_t ESP8266Interface::_init(void) return NSAPI_ERROR_OK; } -void ESP8266Interface::_hw_reset() +nsapi_error_t ESP8266Interface::_reset() { if (_rst_pin.is_connected()) { _rst_pin.rst_assert(); @@ -441,7 +429,17 @@ void ESP8266Interface::_hw_reset() 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(); + } else { + _esp.flush(); + if (!_esp.at_available()) { + return NSAPI_ERROR_DEVICE_ERROR; + } + if (!_esp.reset()) { + return NSAPI_ERROR_DEVICE_ERROR; + } } + + return _esp.at_available() ? NSAPI_ERROR_OK : NSAPI_ERROR_DEVICE_ERROR; } struct esp8266_socket { @@ -495,6 +493,10 @@ int ESP8266Interface::socket_close(void *handle) err = NSAPI_ERROR_DEVICE_ERROR; } + _cbs[socket->id].callback = NULL; + _cbs[socket->id].data = NULL; + core_util_atomic_store_u8(&_cbs[socket->id].deferred, false); + socket->connected = false; _sock_i[socket->id].open = false; _sock_i[socket->id].sport = 0; @@ -563,25 +565,28 @@ int ESP8266Interface::socket_send(void *handle, const void *data, unsigned size) { nsapi_error_t status; struct esp8266_socket *socket = (struct esp8266_socket *)handle; + uint8_t expect_false = false; if (!socket) { return NSAPI_ERROR_NO_SOCKET; } + if (!_sock_i[socket->id].open) { + return NSAPI_ERROR_CONNECTION_LOST; + } + 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)); + status = _esp.send(socket->id, data, size); - 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)); + if (status == NSAPI_ERROR_WOULD_BLOCK + && socket->proto == NSAPI_TCP + && core_util_atomic_cas_u8(&_cbs[socket->id].deferred, &expect_false, true)) { + tr_debug("Postponing SIGIO from the device"); + _global_event_queue->call_in(50, callback(this, &ESP8266Interface::event_deferred)); } else if (status == NSAPI_ERROR_WOULD_BLOCK && socket->proto == NSAPI_UDP) { status = NSAPI_ERROR_DEVICE_ERROR; } @@ -597,6 +602,10 @@ int ESP8266Interface::socket_recv(void *handle, void *data, unsigned size) return NSAPI_ERROR_NO_SOCKET; } + if (!_sock_i[socket->id].open) { + return NSAPI_ERROR_CONNECTION_LOST; + } + int32_t recv; if (socket->proto == NSAPI_TCP) { recv = _esp.recv_tcp(socket->id, data, size); @@ -724,6 +733,11 @@ nsapi_error_t ESP8266Interface::getsockopt(nsapi_socket_t handle, int level, int void ESP8266Interface::event() { + if (!_oob_event_id) { + // Throttles event creation by using arbitrary small delay + _oob_event_id = _global_event_queue->call_in(50, callback(this, &ESP8266Interface::proc_oob_evnt)); + } + for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) { if (_cbs[i].callback) { _cbs[i].callback(_cbs[i].data); @@ -731,6 +745,16 @@ void ESP8266Interface::event() } } +void ESP8266Interface::event_deferred() +{ + for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) { + uint8_t expect_true = true; + if (core_util_atomic_cas_u8(&_cbs[i].deferred, &expect_true, false) && _cbs[i].callback) { + _cbs[i].callback(_cbs[i].data); + } + } +} + void ESP8266Interface::attach(Callback status_cb) { _conn_stat_cb = status_cb; @@ -751,15 +775,11 @@ WiFiInterface *WiFiInterface::get_default_instance() #endif -void ESP8266Interface::update_conn_state_cb() +void ESP8266Interface::refresh_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: @@ -774,8 +794,18 @@ void ESP8266Interface::update_conn_state_cb() default: _initialized = false; _conn_stat = NSAPI_STATUS_DISCONNECTED; + for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) { + _sock_i[i].open = false; + _sock_i[i].sport = 0; + } } + if (prev_stat == _conn_stat) { + return; + } + + tr_debug("refresh_conn_state_cb(): changed to %d", _conn_stat); + // Inform upper layers if (_conn_stat_cb) { _conn_stat_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, _conn_stat); @@ -784,6 +814,7 @@ void ESP8266Interface::update_conn_state_cb() void ESP8266Interface::proc_oob_evnt() { + _oob_event_id = 0; // Allows creation of a new event _esp.bg_process_oob(ESP8266_RECV_TIMEOUT, true); } diff --git a/components/wifi/esp8266-driver/ESP8266Interface.h b/components/wifi/esp8266-driver/ESP8266Interface.h index f123cf27cd0..e811ec3c6cb 100644 --- a/components/wifi/esp8266-driver/ESP8266Interface.h +++ b/components/wifi/esp8266-driver/ESP8266Interface.h @@ -328,7 +328,7 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { private: // AT layer ESP8266 _esp; - void update_conn_state_cb(); + void refresh_conn_state_cb(); // HW reset pin class ResetPin { @@ -365,16 +365,19 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { // Driver's state int _initialized; + nsapi_error_t _connect_retval; bool _get_firmware_ok(); nsapi_error_t _init(void); - void _hw_reset(); + nsapi_error_t _reset(); //sigio struct { void (*callback)(void *); void *data; + uint8_t deferred; } _cbs[ESP8266_SOCKET_COUNT]; void event(); + void event_deferred(); // Connection state reporting to application nsapi_connection_status_t _conn_stat; @@ -386,7 +389,6 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { 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 diff --git a/docs/design-documents/features/connectivity/EMAC.png b/docs/design-documents/features/connectivity/EMAC.png new file mode 100644 index 00000000000..9601a8228fd Binary files /dev/null and b/docs/design-documents/features/connectivity/EMAC.png differ diff --git a/docs/design-documents/features/connectivity/EmacInterface.png b/docs/design-documents/features/connectivity/EmacInterface.png new file mode 100644 index 00000000000..4a805f7297c Binary files /dev/null and b/docs/design-documents/features/connectivity/EmacInterface.png differ diff --git a/docs/design-documents/features/connectivity/EmacInterface_simple.png b/docs/design-documents/features/connectivity/EmacInterface_simple.png new file mode 100644 index 00000000000..29db4f758e3 Binary files /dev/null and b/docs/design-documents/features/connectivity/EmacInterface_simple.png differ diff --git a/docs/design-documents/features/connectivity/L3IP.png b/docs/design-documents/features/connectivity/L3IP.png new file mode 100644 index 00000000000..93802f75aac Binary files /dev/null and b/docs/design-documents/features/connectivity/L3IP.png differ diff --git a/docs/design-documents/features/connectivity/L3IPInterface.png b/docs/design-documents/features/connectivity/L3IPInterface.png new file mode 100644 index 00000000000..10cfad47eb1 Binary files /dev/null and b/docs/design-documents/features/connectivity/L3IPInterface.png differ diff --git a/docs/design-documents/features/connectivity/Multihoming - Design document.md b/docs/design-documents/features/connectivity/Multihoming - Design document.md new file mode 100644 index 00000000000..17c0f3ebc6e --- /dev/null +++ b/docs/design-documents/features/connectivity/Multihoming - Design document.md @@ -0,0 +1,707 @@ +# Multihoming in MbedOS + +## Table of contents + +1. [Revision history](#revision-history). +1. [Introduction](#introduction). + 1. [Overview and background](#overview-and-background). + 1. [Requirements and assumptions](#requirements-and-assumptions). +1. [System architecture and high-level design](#system-architecture-and-high-level-design). + 1. [Architecture](#architecture). + 1. [Component interaction](#component-interaction). +1. [Detailed design](#detailed-design). + 1. [MbedOS networking class diagram extension proposal](#mbedos-networking-class-diagram-extension-proposal). + 2. [Simplified LWIP and EMAC](#simplified-lwip-and-emac). + 1. [LWIPInterface changes](#lwipinterface-changes). + 1. [EMACInterface and EMAC driver](#emacinterface-and-emac-driver). + 1. [L3IPInterface and L3IP driver](#l3ipinterface-and-l3ip-driver). + 1. [Memory manager](#memory-manager). + 1. [Network default interface construction](#network-default-interface-construction). + 1. [Adding interface](#adding-interface). + 1. [Removing interface](#removing-interface). + 1. [Connecting Ethernet or Wifi](#connecting-ethernet-or-Wifi). + 1. [Disconnecting Ethernet or Wifi](#disconnecting-ethernet-or-Wifi). + 1. [Connecting Cellular](#connecting-cellular). + 1. [Disconnecting Cellular](#disconnecting-cellular). + 1. [Addressing](#addressing). + 1. [LWIP IP core](#lwip-ip-core). + 1. [EMAC based outgoing traffic for ethernet and wifi](#emac-based-outgoing-traffic-for-ethernet-and-wifi). + 1. [PPP based outgoing traffic for cellular](#ppp-based-outgoing-traffic-for-cellular). + 1. [EMAC based incoming traffic for ethernet and wifi](#emac-based-incoming-traffic-for-ethernet-and-wifi). + 1. [PPP based incoming traffic for cellular](#ppp-based-incoming-traffic-for-cellular). + 1. [IP Route changes](#IP-Route-changes). + 1. [Network stack interface](#network-stack-interface). + 1. [Sockets changes](#sockets-changes). + 1. [DNS changes](#dns-changes). +1. [Usage scenario](#usage-scenario). + + +## Revision history + +| Revision | Date | Authors | Mbed OS version | Comments | + +| 1.0 | 25 September 2018 | Tymoteusz Bloch | 5.11 | Initial revision | + +# Introduction + +## Overview and background + +This document refers to mutlihoming for MbedOS ARM CortexM based embedded devices. +Multihoming is the way of connecting device to more than one network interface. This can be done in order to increase reliability or performance. + +Under normal operating condition embedded ip stack is connected to only one network driver. In many situations , it can be useful to connect an embedded device to multiple networks, to increase reliability (if a one network link fails, data can still be routed through the remaining networks) and to improve performance (depending on the destination, it is more efficient to route through multiple networks ). + +## Requirements and assumptions +To use multihoming embedded device board must be equipped with more than one network interface, driver and physical medium device. It can be a combination of ethernet, wifi, cellular modules as well as the same type multiple devices eg. two ethernet physical devices. + +# System architecture and high-level design + + +## Architecture + +Mbed OS network functionality is implemented inside **features** module. + +High level view is on picture below + +![high_level_architecture] + +For connectivity MbedOS uses Netsocket module. It contains : + +- sockets +- DNS +- TCP/UDP +- network interfaces +- IP stacks +- glue logic between IP stacks and network interfaces + +MbedOS support following IP stacks : + +- LWIP +- Nanostack + +This design refers to only LWIP multihoming support so Nanostack will be omitted. + +## Component interaction + + + +![components] + + +# Detailed design + +## MbedOS networking class diagram extension proposal +![class_diagram] + +## Simplified LWIP and EMAC + +![simply_emac] + +![simply_lwip] + + NetworkInterface *net; + net = NetworkInterface::get_default_instance(); + net->connect(); + +**EMACInterface::connect** will call: + + - Stack -> add interface. + - Stack::Interface ->bringup. + +## LWIPInterface changes + +LWIP and is a top class responsible for LWIP network stack implementation in Mbed OS. +**LWIP/inner Interface** class view is shown below. +For better readability view is simplified. + +![lwip_class] + +It's existing **EMAC only** version. + +For clear view all members from **LWIP/inner Interface** are removed except **EMAC** related ones which are important from multi interface point of view. + +![lwip_changes_old] + +Those members are defined in **LWIPInterfaceEMAC.cpp** module. + +To use **non EMAC** drivers for cellular new members must be add. **Lwip/Interface** after extension is shown below. + + +![lwip_changes_new] + +New **L3IP** related members will be defined in **LWIPInterfaceL3IP.cpp** module. + +## EMACInterface and EMAC driver +![EMACInterface] + +**EMAC driver** class should be used to abstract low level access to networking hardware +All operations receive a `void *` hw pointer which an EMAC device provides when +it is registered with a stack. + +Existing **EMAC** class pure virtual definitions are shown below and must be overrided by target HW dedicated class driver derived from it. + +![EMAC] + +## L3IPInterface and L3IP driver +**L3IPInterface** is new helper class dedicated to cellular connection. It based on existing +**EMACInterface** and looks similar to it. However class methods have different implementation eg connect calls **lwip::add\_l3ip\_interface(**) to add the interface instead of **lwip::add\_ethernet\_interface**. +Currently the existing interface does not support destruct and remove drivers. +So **remove/destruct** functionality is proposed to implement. + + +![L3IPInterface] + +**L3IP** driver abstract class ia also based on **EMAC** class it also looks similar but is bound to cellular driver. +![L3IP] + +## Memory manager +Currently there is memory manager dedicated to ethernet. +It does not require changes however should be renamed from **EMACMemoryManager** to non confusing generic name like **NetStackMemoryManager**. Also memory buffer **emac\_mem\_buf\_t** should folow this change to just **net\_stack\_mem\_buf\_t**. + +## Network default interface construction + + + +Mbed OS support automated factories for default interface. + +It depends on JSON configuration customized for particular target HW. + +To instantiate it **::get\_default\_instance** must be invoked on user desired interface type. + +The top-level NetworkInterface use the following parameter + + +**MBED\_CONF\_TARGET\_NETWORK\_DEFAULT\_INTERFACE\_TYPE** for creating proper one : + +- (ETHERNET ) EthInterface ::get\_default\_instance() +- (CELLULAR ) CellularBase ::get\_default\_instance() +- (WIFI ) WiFiInterface::get\_default\_instance() +- (MESH ) MeshInterface::get\_default\_instance() + + +Code for automated construction is in **NetwokInterfaceDefaults.cpp** module. + + + +## Adding interface + +Since automated factory suport creation only one **default interface**, others must be constructed and added to LWIP manually. + +For **ethernet/wifi** first new interface, **EMACInterface** helper and **EMAC** driver must be instantiated. For this connection types constructors are already implemented + + EthernetInterface(EMAC &emac = EMAC::get_default_instance(), + OnboardNetworkStack &stack = OnboardNetworkStack::get_default_instance()) : EMACInterface(emac, stack) { } + +or + + OdinWiFiInterface(OdinWiFiEMAC &emac = OdinWiFiEMAC::get_instance(), OnboardNetworkStack &stack = OnboardNetworkStack::get_default_instance()); + + +For cellular the situation is a little bit different due no support any ethernet like interfaces (ethernet,wlan). +In this case constructor looks like below and is not yet implemented. This is new code proposal for new clases L3IPInterface and L3IP. + + + L3IPInterface(L3IP &l3ip = L3IP::get_default_instance(),OnboardNetworkStack &stack = OnboardNetworkStack::get_default_instance()); + + +Regardless of interface type LWIP must be informed about new low level interface. +This can be done by calling **connect()** method on proper helper class( **EMACInterface** or **L3IPInterface**). Connect adds new network interface and then sets up a connection on LWIP stack with **bringup()** method. + +First it registers a network interface with the IP stack. Connects **EMAC/L3IP** layer with the IP stack and initializes all the required infrastructure. This function should be called only once for each available interface. + +For **ethernet/wifi** its already implemented as: + + LWIP::add_ethernet_interface(EMAC &emac, bool default_if, OnboardNetworkStack::Interface **interface_out) + +Cellular connection doesn't support it yet. This is new feature. Proposal is shown below + + LWIP::add_l3ip_interface(L3IP &l3ip, bool default_if, OnboardNetworkStack::Interface **interface_out) + + +Both methods have the same purpose but must differ in implementation due to cellular handles layer 2 differently and doesn't support any ethernet like interfaces (ethernet,wlan) and ARP. + + +Important part of addition new network interface is configuring LWIP struct called **netif**. +This is the core part of LWIP. +Simplifed more readable form (removed comments and preprocesors directives) is shown below. + +**netif** is a generic data structure used for all lwIP network interfaces. + + struct netif { + struct netif *next; + ip_addr_t ip_addr; + ip_addr_t netmask; + ip_addr_t gw; + ip_addr_t ip6_addr[LWIP_IPV6_NUM_ADDRESSES]; + u8_t ip6_addr_state[LWIP_IPV6_NUM_ADDRESSES]; + u32_t ip6_addr_valid_life[LWIP_IPV6_NUM_ADDRESSES]; + u32_t ip6_addr_pref_life[LWIP_IPV6_NUM_ADDRESSES]; + netif_input_fn input; + netif_output_fn output; + netif_linkoutput_fn linkoutput; + netif_output_ip6_fn output_ip6; + netif_status_callback_fn status_callback; + netif_status_callback_fn link_callback; + netif_status_callback_fn remove_callback; + void *state; + u8_t ip6_autoconfig_enabled; + + const char* hostname; + u16_t chksum_flags; + u16_t mtu; + u8_t hwaddr_len; + u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; + u8_t flags; + char name[2]; + u8_t num; + netif_igmp_mac_filter_fn igmp_mac_filter; + netif_mld_mac_filter_fn mld_mac_filter; + u8_t *addr_hint; + u16_t loop_cnt_current; + }; + + +Existing member **name[2]** can be used to bind **netif** to socket. +It is get with **EMAC** class member **get_ifname** from hw driver and have unique 2 char in length name. + +Currently following names exists: + + "en" ethernet + "wl" wifi + "l6" mesh + "lo" loopback + "pp" ppp +etc. +For cellular it can be "cl" + +Two character name string is concatenated with 8 bit value containing index which is incremented on each netif addition eg **"wl0"**. +If no multiple interfaces of one type **"en0", "en1","en2"** ... exists, **name[2]** member is sufficient to distinguish between different interface types like** wifi, ethernet** and **cellular**. + +This **netif** struct uses handlers passed by + + - (emac/l3ip)_low_level_output + - (emac/l3ip)_input + - (emac/l3ip)_state_change + - (emac/l3ip)_igmp_mac_filter + - (emac/l3ip)_mld_mac_filter + - (emac/l3ip)_if_init + +for bounding + + -received data from driver to LWIP input handler + -LWIP outgoing data to driver for tramsmiting + -status callback from device driver + -filters settings + + +From our point of view important function pointers are: + + -netif_output_fn output + -netif_linkoutput_fn linkoutput + +From LWIP documentation we can read. + +**"output"** is called by the IP module when it wants to send a packet on the interface. It firts resolves the hardware address, then sends the packet. For ethernet physical layer, this is usually **etharp_output()**. + + +**"linkoutput"** is called by **ethernet_output()** when it wants to send a packet on the interface. This function outputs the pbuf as-is on the link medium. + + +ARP in used in ethernet and wifi but for Cellular modem **output** must be bound to low level write handler. In case of cellular this is done by PPP over serial module (**PPPOS**) and currently is bound to **pppos\_netif\_output** with proper IP4/IP6 flag. This writes data to cellular modem UART based file handler. Due to different implementation of **PPPOS** **"linkoutput"** is not used for cellular. + +To add all params to **new netif** following function must be called. This is the part of LWIP stack. + + + struct netif * netif_add(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input) + + + +## Removing interface + +To remove interface proper method must be called + + + LWIP::remove_L3IP_interface(OnboardNetworkStack::Interface *interface) + +Currently the **EMACInterface** does not support remove and **EMAC** drivers do not support destruct however implementation of remove/destruct functionality is considered for EMAC interface/drivers. + + +## Connecting Ethernet or Wifi + + +**EMACInterface** is constructed with **EMAC** driver and (default) onboard network stack. + + + +When **EMACInterface::connect()** is called it calls the LWIP::**add\_ethernet\_interface()** from lwip and after that lwip **bringup()** which activates the interface on lwip. + +## Disconnecting Ethernet or Wifi + +EMACInterface::**disconnect()** will bring the interface down. + +## Connecting Cellular + + +**L3IPInterface** is constructed with **L3IP** driver and (default) onboard network stack. + + + +When **L3IPInterface::connect()** is called it will call the LWIP::**add\_l3ip\_interface()** from lwip and after that lwip **bringup()** which activates the interface on lwip as in EMACInterface. + +## Disconnecting Cellular + +**L3IPInterface::disconnect()** will bring the interface down. + + Its destructor will call the LWIP::**L3IP\_remove\_interface()** and remove itself from lwip/lwip **netif*. + +## Addressing + +IP address can provided as **LWIP::Interface::bringup()** parameter as a static IP or DHCP. If DHCP flag is true than address is set ansynchronously as negotiation finish. Currently static address change after **LWIP::Interface::bringup()** is not used but there is proper setting member implemented for DHCP so it can be used for static IP change. This is open issue. + +For **L3IPInterface** IPv6 unique identifier for construction link local address can be used similarly as in PPP. Both SLAAC and DHCP can be used. This is also open issue. + + +## LWIP IP core + +All outgoing packets regardles of TCP,UDP or RAW are procesed by +**ip(4\6)\_output\_if\_opt\_src** in LWIP IP module. + + +### EMAC based outgoing traffic for ethernet and wifi +For this interface **\ip_output\_if\_opt\_src** calls **netif->output** bound for low level ARP (ethernet) and proceed **netif->linkoutput** bound for ethernet output driver function. + +![outgoing_eth] + +### PPP based outgoing traffic for cellular +For cellular **\ip_output\_if\_opt\_src** calls **netif->output** bound for low level ARP (ethernet) or PPP (cellular). +![outgoing_ppp] + +### EMAC based incoming traffic for ethernet and wifi +![incoming_emac] + +### PPP based incoming traffic for cellular +![incoming_ppp] + + +### IP Route changes +This LWIP IP netif selection must be extended for routing to a specific **netif** instead **default one**. + + +Original **ip4\_route** finds the appropriate network interface for a given IP address. +It searches the list of network interfaces linearly. A match is found +if the masked IP address of the network interface equals the masked +IP address given to the function. + +Passed param dest is the destination IP address for which to find the route +New paremeter **interface\_name** will be add to origin **ip4\_route** for improved selection of desired **netif**. + +Function returns the proper **netif** responsible for sending data to reach dest + + struct netif * ip4_route(const ip4_addr_t *dest) + { + struct netif *netif; + + #if LWIP_MULTICAST_TX_OPTIONS + /* Use administratively selected interface for multicast by default */ + if (ip4_addr_ismulticast(dest) && ip4_default_multicast_netif) { + return ip4_default_multicast_netif; + } + #endif /* LWIP_MULTICAST_TX_OPTIONS */ + + /* iterate through netifs */ + for (netif = netif_list; netif != NULL; netif = netif->next) { + /* is the netif up, does it have a link and a valid address? */ + if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) { + /* network mask matches? */ + if (ip4_addr_netcmp(dest, netif_ip4_addr(netif), netif_ip4_netmask(netif))) { + /* return netif on which to forward IP packet */ + return netif; + } + /* gateway matches on a non broadcast interface? (i.e. peer in a point to point interface) */ + if (((netif->flags & NETIF_FLAG_BROADCAST) == 0) && ip4_addr_cmp(dest, netif_ip4_gw(netif))) { + /* return netif on which to forward IP packet */ + return netif; + } + } + } + + #if LWIP_NETIF_LOOPBACK && !LWIP_HAVE_LOOPIF + /* loopif is disabled, looopback traffic is passed through any netif */ + if (ip4_addr_isloopback(dest)) { + /* don't check for link on loopback traffic */ + if (netif_default != NULL && netif_is_up(netif_default)) { + return netif_default; + } + /* default netif is not up, just use any netif for loopback traffic */ + for (netif = netif_list; netif != NULL; netif = netif->next) { + if (netif_is_up(netif)) { + return netif; + } + } + return NULL; + } + #endif /* LWIP_NETIF_LOOPBACK && !LWIP_HAVE_LOOPIF */ + + #ifdef LWIP_HOOK_IP4_ROUTE_SRC + netif = LWIP_HOOK_IP4_ROUTE_SRC(dest, NULL); + if (netif != NULL) { + return netif; + } + #elif defined(LWIP_HOOK_IP4_ROUTE) + netif = LWIP_HOOK_IP4_ROUTE(dest); + if (netif != NULL) { + return netif; + } + #endif + + if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default) || + ip4_addr_isany_val(*netif_ip4_addr(netif_default))) { + /* No matching netif found and default netif is not usable. + If this is not good enough for you, use LWIP_HOOK_IP4_ROUTE() */ + LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip4_route: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", + ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest))); + IP_STATS_INC(ip.rterr); + MIB2_STATS_INC(mib2.ipoutnoroutes); + return NULL; + } + + return netif_default; + } + + +## Network stack interface + +For multiple **netif's** there is need to get DNS and IP addresses for an **interface\_name** + +Currently LWIP class members has no such parameter + + get_ip_address() + get_dns_server(int index, SocketAddress *address) + +Also there is only pointer to one **netif**. + + const struct netif *netif + +So single netif should be replaced with array of netif pointers and members above must support to get IP and DNS from proper netif instance. +Therefore new parameter "interface_name" should be added to **get\_dns\_server** and new member **get\_ip\_address\_if** must be implemented to the **NetworkInterface** class. + + + get_ip_address_if(const char *interface_name) + get_dns_server(int index, SocketAddress *address, const char *interface_name) + +From multihoming point of view it is desirable to get interface name and select any interface to default one at runtime. Therefore following new members need to be implemented + + get_interface_name(char *interface_name) + set_as_default() + +Netif **interface\_name** should be added also to + + dns_setserver(u8_t numdns, const ip_addr_t *dnsserver,const char *interface_name); + + + +# Sockets changes + +For multihoming its needed to bind socket to desired network interface. To perform this new socket option must be add for socket class. + +Member for LWIP stack specific socket option settings already exist in LWIP class. +New option for socket binding to netif must be implemented inside: + + + nsapi_error_t LWIP::setsockopt(nsapi_socket_t handle, int level, int optname, const void *optval, unsigned optlen) + + +New socket option enum **NSAPI\_BIND\_NETIF** must be added. + +Socket options after changes. + + typedef enum nsapi_socket_option { + NSAPI_REUSEADDR, /*!< Allow bind to reuse local addresses */ + NSAPI_KEEPALIVE, /*!< Enables sending of keepalive messages */ + NSAPI_KEEPIDLE, /*!< Sets timeout value to initiate keepalive */ + NSAPI_KEEPINTVL, /*!< Sets timeout value for keepalive */ + NSAPI_LINGER, /*!< Keeps close from returning until queues empty */ + NSAPI_SNDBUF, /*!< Sets send buffer size */ + NSAPI_RCVBUF, /*!< Sets recv buffer size */ + NSAPI_ADD_MEMBERSHIP, /*!< Add membership to multicast address */ + NSAPI_DROP_MEMBERSHIP, /*!< Drop membership to multicast address */ + NSAPI_BIND_NETIF, /*!< Biid nefit to socket */ + } nsapi_socket_option_t; + +LWIP specific socket is shown below + + struct mbed_lwip_socket { + bool in_use; + + struct netconn *conn; + struct netbuf *buf; + u16_t offset; + + void (*cb)(void *); + void *data; + + // Track multicast addresses subscribed to by this socket + nsapi_ip_mreq_t *multicast_memberships; + uint32_t multicast_memberships_count; + uint32_t multicast_memberships_registry; + }; + +New binding option should be placed into **netconn** struct. +Descriptor for **netconn** is shown below. + + + struct netconn { + enum netconn_type type; + enum netconn_state state; + union { + struct ip_pcb *ip; + struct tcp_pcb *tcp; + struct udp_pcb *udp; + struct raw_pcb *raw; + } pcb; + err_t last_err; + sys_sem_t op_completed; + sys_mbox_t recvmbox; + sys_mbox_t acceptmbox; + int socket; + s32_t send_timeout; + int recv_timeout; + int recv_bufsize; + int recv_avail; + s16_t linger; + u8_t flags; + size_t write_offset; + struct api_msg *current_msg; + netconn_callback callback; + }; + + + +LWIP selects the proper netif on IP layer using **ip\_route**. + +Currently it uses only ip adress as input parameter so choice is based on ip adress only. To extend choice ctiteria also to interface index **ip\_route** must be modified and must take desired **interface\_name** as second argument. +Therefore new member with information about **netif interface\_name** bound to current socket should be placed in the common part of all PCB types. + + + + #define IP_PCB \ + ip_addr_t local_ip; \ + ip_addr_t remote_ip; \ + u8_t so_options; \ + u8_t tos; \ + u8_t ttl \ + IP_PCB_ADDRHINT \ + const char* interface_name -new member + +New member **char* interface\_name** should be add for binding socket to netif. + + +## DNS changes + +Currently in Nsapi_dns module there is only one array for 5 DNS server adresses. + + static nsapi_addr_t dns_servers[DNS_SERVERS_SIZE] = { + {NSAPI_IPv4, {8, 8, 8, 8}}, // Google + {NSAPI_IPv4, {209, 244, 0, 3}}, // Level 3 + {NSAPI_IPv4, {84, 200, 69, 80}}, // DNS.WATCH + {NSAPI_IPv6, {0x20,0x01, 0x48,0x60, 0x48,0x60, 0,0, // Google + 0,0, 0,0, 0,0, 0x88,0x88}}, + {NSAPI_IPv6, {0x20,0x01, 0x16,0x08, 0,0x10, 0,0x25, // DNS.WATCH + 0,0, 0,0, 0x1c,0x04, 0xb1,0x2f}}, + }; +It would be desirable to add storage for interface specific DNS server addresses. + +It can be done as below. + + static nsapi_addr_t dns_servers[NETIF_INDEX][DNS_SERVERS_SIZE] + +Add interface name as option to DNS query + +To resolve IP adress Netsocket module uses following functions + + gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version) + nsapi_dns_query(NetworkStack *stack, const char *host, SocketAddress *address, nsapi_version_t version) + +Query above uses only single dns_servers array described before. So it is also desired to add interface_name. + + gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version) + nsapi_dns_query(NetworkStack *stack, const char *host, SocketAddress *address, nsapi_version_t version) + + +Second one **nsapi\_dns\_query** finally calls **get\_dns\_server** descirbed before. It has new parameter **interface\_name** for proper **netif** selecting. So it would be logical to add also **interface\_name** also to: + + + DNS::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version,const char* interface_name) + nsapi_dns_query(NetworkStack *stack, const char *host, SocketAddress *address, nsapi_version_t version, const char* interface_name) + + + +If async DNS query is used therefore UDP socket created for this purpose must be assigned for proper interface. + +To perform this following UDPSocket base class member + + InternetSocket::setsockopt(int level, int optname, const void *optval, unsigned optlen) + +is used with parameters: + + - optname NSAPI_BIND_NETIF + - optval netif name + +It finally calls stack specific implementation for socket option setting. + + +# Usage scenario + + +Currently Mbed OS can construct only one **default** interface. + +Its type depends on configuration file and **MBED\_CONF\_TARGET_NETWORK\_DEFAULT\_INTERFACE\_TYPE** value. + +Example of default network init code is shown below + + NetworkInterface *net; + net = NetworkInterface::get_default_instance(); + net->connect(); + +If it's set to ETHERNET following code constructs **EthInterface** for ethernet EMAC. + +If is set to WIFI **WiFiInterface** instance is constructed. + +Similarly if type is CELLULAR **EasyCellularConnection** instance is created. + +Second or third interface can be added manually + + NetworkInterface *wifi_net; + wifi_net = WiFiInterface::get_target_default_instance(); + wifi_net->connect(); + +or + + NetworkInterface *cellular_net; + cellular_net = EasyCellularConnection::get_target_default_instance(); + cellular_net->connect(); + +To construct network instance both Ethernet and WiFi uses EMAC and EMACInterface internally. + + IP layer 3 interface can be created following way: + + NetworkInterface *l3interface; + l3interface =new L3IPInterface(L3IP::get_default_instance(), OnboardNetworkStack::get_default_instance()); + l3interface->connect(); + +[high_level_architecture]: hi_level.png +[components]: components.png +[class_diagram]:class_diagram.png +[lwip_class]: lwip_class.png +[lwip_changes_old]:lwip_changes_old.png +[lwip_changes_new]:lwip_changes_new.png +[EMACInterface]:EMACInterface.png +[EMAC]:EMAC.png +[L3IPInterface]:L3IPInterface.png +[L3IP]:L3IP.png +[outgoing_eth]:outgoing_eth.png +[outgoing_ppp]:outgoing_ppp.png +[incoming_emac]:incoming_emac.png +[incoming_ppp]:incoming_ppp.png +[simply_emac]:EmacInterface_simple.png +[simply_lwip]:lwip_simply.png \ No newline at end of file diff --git a/docs/design-documents/features/connectivity/class_diagram.png b/docs/design-documents/features/connectivity/class_diagram.png new file mode 100644 index 00000000000..ccd4627436b Binary files /dev/null and b/docs/design-documents/features/connectivity/class_diagram.png differ diff --git a/docs/design-documents/features/connectivity/components.png b/docs/design-documents/features/connectivity/components.png new file mode 100644 index 00000000000..25a4bb4dd74 Binary files /dev/null and b/docs/design-documents/features/connectivity/components.png differ diff --git a/docs/design-documents/features/connectivity/hi_level.png b/docs/design-documents/features/connectivity/hi_level.png new file mode 100644 index 00000000000..3f7828f4299 Binary files /dev/null and b/docs/design-documents/features/connectivity/hi_level.png differ diff --git a/docs/design-documents/features/connectivity/incoming_emac.png b/docs/design-documents/features/connectivity/incoming_emac.png new file mode 100644 index 00000000000..a8cad2f5c71 Binary files /dev/null and b/docs/design-documents/features/connectivity/incoming_emac.png differ diff --git a/docs/design-documents/features/connectivity/incoming_ppp.png b/docs/design-documents/features/connectivity/incoming_ppp.png new file mode 100644 index 00000000000..e56986d05d6 Binary files /dev/null and b/docs/design-documents/features/connectivity/incoming_ppp.png differ diff --git a/docs/design-documents/features/connectivity/lwip_changes_new.png b/docs/design-documents/features/connectivity/lwip_changes_new.png new file mode 100644 index 00000000000..6ab686bb1eb Binary files /dev/null and b/docs/design-documents/features/connectivity/lwip_changes_new.png differ diff --git a/docs/design-documents/features/connectivity/lwip_changes_old.png b/docs/design-documents/features/connectivity/lwip_changes_old.png new file mode 100644 index 00000000000..78a8d8d60f1 Binary files /dev/null and b/docs/design-documents/features/connectivity/lwip_changes_old.png differ diff --git a/docs/design-documents/features/connectivity/lwip_class.png b/docs/design-documents/features/connectivity/lwip_class.png new file mode 100644 index 00000000000..32838612214 Binary files /dev/null and b/docs/design-documents/features/connectivity/lwip_class.png differ diff --git a/docs/design-documents/features/connectivity/lwip_simply.png b/docs/design-documents/features/connectivity/lwip_simply.png new file mode 100644 index 00000000000..394188d0e62 Binary files /dev/null and b/docs/design-documents/features/connectivity/lwip_simply.png differ diff --git a/docs/design-documents/features/connectivity/outgoing_eth.png b/docs/design-documents/features/connectivity/outgoing_eth.png new file mode 100644 index 00000000000..258e505f23d Binary files /dev/null and b/docs/design-documents/features/connectivity/outgoing_eth.png differ diff --git a/docs/design-documents/features/connectivity/outgoing_ppp.png b/docs/design-documents/features/connectivity/outgoing_ppp.png new file mode 100644 index 00000000000..df8c13dcd97 Binary files /dev/null and b/docs/design-documents/features/connectivity/outgoing_ppp.png differ diff --git a/docs/design-documents/hal/0002-pinmap-extension.md b/docs/design-documents/hal/0002-pinmap-extension.md new file mode 100644 index 00000000000..5df0eed15f3 --- /dev/null +++ b/docs/design-documents/hal/0002-pinmap-extension.md @@ -0,0 +1,85 @@ +# HAL PinMap design document + +# Table of contents + +1. [HAL PinMap design document](#hal-pinmap-design-document). +1. [Table of contents](#table-of-contents). +1. [Introduction](#introduction). + 1. [Overview and background](#overview-and-background). + 1. [Requirements and assumptions](#requirements-and-assumptions). +1. [System architecture and high-level design](#system-architecture-and-high-level-design). + 1. [Pinmap](#pinmap). + 1. [Form Factor](#form-factor). + 1. [Restricted Pins](#restricted-pins). + +# Introduction + +Adds board introspection capabilities and tools. +These tools will help designing better tests for the HAL. + +### Overview and background + +At the time being, drivers are only tested on a single "default" peripheral. However, some targets feature the same peripheral through different blocks' implementations for example the SPI may be provided on a single MCU by its USART, QSPI and SSP peripherals. +To ensure that the driver's implementation is valid for all these peripherals we want the CI to run the test set on each peripheral using at least one set of pin determined at run time (pin may eventually picked randomly). + +### Requirements and assumptions + +1. We want to list all pins for a function on a peripheral. + For instance, all pins that can be configured as MOSI for SPI1. +2. We want to list all functions a pin can provide. +3. We want to list all pins for a form-factor regardless of the function they can provide. +4. We want a printable name for each form factor pin and a method to get that name. +5. We want a list of the reserved pins that cannot be tested. + +Any of the list mentioned above may be empty if none match the criteria. + +# System architecture and high-level design + +### Pinmap + +All HAL APIs which use pins have functions to get the corresponding pin maps. These functions return a `PinMap` array with each entry containing a pin name, a peripheral and a function. The end of the pin map array is indicated by the presence of a NC pin. Below is an example implementation of the function to get the serial tx pinmap: + +```C +const PinMap PinMap_UART_TX[] = { + {P0_19, UART_0, 1}, + {P1_13, UART_0, 3}, + {P1_27, UART_0, 2}, + { NC , NC , 0} +}; +const PinMap *serial_tx_pinmap() +{ + return PinMap_UART_TX; +} +``` + +Targets which don't make use of a pinmap, such as ones with peripherals that can be connected to any pin, must still define pinmaps as these are needed for testing. For these devices the pinmap does not need to be comprehensive. Instead it should list a representative sample of pins and peripherals so they can be tested appropriately. + +### Form Factor + +A boards form factor determines what can be tested automatically. A board can have one or more form factors, each listed in the `supported_form_factors` entry in targets.json: + +``` +"supported_form_factors": ["ARDUINO"], +``` + +The Mbed pinamp code has built in support for common form factors, such as `ARDUINO`. When a known form factor is present in the `supported_form_factors` list then it will be used automatically for testing. Use the target configuration value `default-form-factor` to test a custom form factor or to force the tools to use a given form factor. + +Use the function `const PinList *pinmap_ff_default_pins(void)` to get the pins of a form factor for testing. Additionally the name of a given form factor pin can be found with the function `const char *pinmap_ff_default_pin_to_string(PinName pin)`. + +### Restricted Pins + +Some boards have pins which cannot be tested without causing problems elsewhere. One example of this is the serial TX and RX pins used for communication during testing. If these pins are used during a test then communication with the host PC will be lost. To prevent pins like this from being used a target can override the weak function `pinmap_restricted_pins()` to return a pin list containing all target pins which should be skipped during testing. By default this function only includes the TX and RX pins used for communication during testing: + +```c +MBED_WEAK const PinList *pinmap_restricted_pins() +{ + static const PinName pins[] = { + USBTX, USBRX + }; + static const PinList pin_list = { + sizeof(pins) / sizeof(pins[0]), + pins + }; + return &pin_list; +} +``` diff --git a/doxyfile_options b/doxyfile_options index 550a6bc930f..01949af8dde 100644 --- a/doxyfile_options +++ b/doxyfile_options @@ -2091,6 +2091,7 @@ PREDEFINED = DOXYGEN_ONLY \ DEVICE_PORTINOUT \ DEVICE_PORTOUT \ DEVICE_PWMOUT \ + DEVICE_RESET_REASON \ DEVICE_RTC \ DEVICE_TRNG \ DEVICE_SERIAL \ @@ -2102,8 +2103,10 @@ PREDEFINED = DOXYGEN_ONLY \ DEVICE_SPISLAVE \ DEVICE_QSPI \ DEVICE_STORAGE \ + DEVICE_WATCHDOG \ COMPONENT_SPE \ COMPONENT_SPM_MAILBOX \ + DEVICE_WATCHDOG \ "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 0e884b9a43f..c738d59b9ba 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 COMPONENT_SPE COMPONENT_SPM_MAILBOX \"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_RESET_REASON 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 DEVICE_WATCHDOG 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/ResetReason.cpp b/drivers/ResetReason.cpp new file mode 100644 index 00000000000..9614fb82627 --- /dev/null +++ b/drivers/ResetReason.cpp @@ -0,0 +1,47 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 "ResetReason.h" + +#ifdef DEVICE_RESET_REASON + +namespace mbed { + +reset_reason_t ResetReason::get() +{ + // Store the reason statically so it can be accessed after the first call to + // this function resets it. + const static reset_reason_t reason = hal_reset_reason_get(); + + // Call get raw to cache the reset reason before clearing the registers. + ResetReason::get_raw(); + + hal_reset_reason_clear(); + + return reason; +} + +uint32_t ResetReason::get_raw() +{ + const static uint32_t reason = hal_reset_reason_get_raw(); + + return reason; +} + +} // namespace mbed + +#endif // DEVICE_RESET_REASON diff --git a/drivers/ResetReason.h b/drivers/ResetReason.h new file mode 100644 index 00000000000..7bc74255b34 --- /dev/null +++ b/drivers/ResetReason.h @@ -0,0 +1,69 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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_RESET_REASON_H +#define MBED_RESET_REASON_H + +#ifdef DEVICE_RESET_REASON + +#include "reset_reason_api.h" + +namespace mbed { +/** \addtogroup drivers */ +/** ResetReason API. When the system is restarted, the reason for the restart is + * contained in the system registers at boot time in a platform specific manner, + * this API provides a generic method of fetching the reason for the restart. + * + * @ingroup drivers + */ +class ResetReason { +public: + /** Get the platform-independent reason code for the last system reset. + * + * Example: + * @code + * const reset_reason_t reason = ResetReason::get(); + * + * if (reason == RESET_REASON_WATCHDOG) { + * printf("Watchdog reset\n"); + * rollback(); + * } + * @endcode + */ + static reset_reason_t get(); + + /** Get the platform specific reason code for the last system reset. + * + * Platform specific reasons that are not covered by the reset_reason_t enum + * will cause the ResetReason::get() function to return + * RESET_REASON_PLATFORM. In order to get the actual reason the register + * value must be fetched directly using this function and interpreted in a + * platform specific manner. + * + * Example: + * @code + * if (ResetReason::get() == RESET_REASON_PLATFORM) { + * const uint32_t platform_reason = ResetReason::get_raw(); + * } + * @endcode + */ + static uint32_t get_raw(); +}; + +} // namespace mbed + +#endif // DEVICE_RESET_REASON +#endif // MBED_RESET_REASON_H diff --git a/drivers/Watchdog.cpp b/drivers/Watchdog.cpp new file mode 100644 index 00000000000..6be0e0f7d0d --- /dev/null +++ b/drivers/Watchdog.cpp @@ -0,0 +1,110 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 DEVICE_WATCHDOG + +#include "Watchdog.h" + +namespace mbed { + +Watchdog *Watchdog::_first = NULL; + +Watchdog::Watchdog(uint32_t timeout, const char *const str): _name(str) +{ + _current_count = 0; + _is_initialized = false; + _next = NULL; + _max_timeout = timeout; +} + +void Watchdog::add_to_list() +{ + this->_next = _first; + _first = this; + _is_initialized = true; +} + +void Watchdog::start() +{ + MBED_ASSERT(!_is_initialized); + core_util_critical_section_enter(); + add_to_list(); + core_util_critical_section_exit(); +} + + +void Watchdog::kick() +{ + MBED_ASSERT(_is_initialized); + core_util_critical_section_enter(); + _current_count = 0; + core_util_critical_section_exit(); +} + +void Watchdog::stop() +{ + MBED_ASSERT(_is_initialized); + core_util_critical_section_enter(); + remove_from_list(); + core_util_critical_section_exit(); +} + +void Watchdog::remove_from_list() +{ + Watchdog *cur_ptr = _first, + *prev_ptr = NULL; + while (cur_ptr != NULL) { + if (cur_ptr == this) { + if (cur_ptr == _first) { + prev_ptr = _first; + _first = cur_ptr->_next; + prev_ptr->_next = NULL; + } else { + prev_ptr->_next = cur_ptr->_next; + cur_ptr->_next = NULL; + } + _is_initialized = false; + break; + } else { + prev_ptr = cur_ptr; + cur_ptr = cur_ptr->_next; + } + } +} + +void Watchdog::process(uint32_t elapsed_ms) +{ + Watchdog *cur_ptr = _first; + while (cur_ptr != NULL) { + if (cur_ptr->_current_count > cur_ptr->_max_timeout) { + system_reset(); + } else { + cur_ptr->_current_count += elapsed_ms; + } + cur_ptr = cur_ptr->_next; + } +} + +Watchdog::~Watchdog() +{ + if (_is_initialized) { + stop(); + } +} + +} // namespace mbed + +#endif // DEVICE_WATCHDOG diff --git a/drivers/Watchdog.h b/drivers/Watchdog.h new file mode 100644 index 00000000000..f78fd086b10 --- /dev/null +++ b/drivers/Watchdog.h @@ -0,0 +1,113 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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_WATCHDOG_H +#define MBED_WATCHDOG_H + +#ifdef DEVICE_WATCHDOG + +#include +#include "mbed_error.h" +#include "rtos/ThisThread.h" +#include "platform/mbed_critical.h" +#include "platform/mbed_power_mgmt.h" +namespace mbed { + +/** \addtogroup drivers */ +/** A system timer that will reset the system in the case of system failures or + * malfunctions. + * + * Example: + * @code + * + * Watchdog watchdog(300,"Software Watchdog"); + * watchdog.start(); + * + * while (true) { + * watchdog.kick(); + * + * // Application code + * } + * @endcode + * @ingroup drivers + */ +class Watchdog { +public: + Watchdog(uint32_t timeout = 1, const char *const str = NULL); + ~Watchdog(); +public: + + /** Start an independent watchdog timer with specified parameters + * + * Assert for multiple calls of start + */ + void start(); + + /** Stops the watchdog timer + * + * Calling this function will attempt to disable any currently running + * watchdog timers if supported by the current platform. + * + * Assert with out called start + */ + void stop(); + + /** Refreshes the watchdog timer. + * + * This function should be called periodically before the watchdog times out. + * Otherwise, the system is reset. + * + * If the watchdog timer is not currently running this function does nothing + */ + void kick(); + + /** mbed_watchdog_manager(runs by periodic call from ticker) used this API interface + * to go through all the registered user/threads of watchdog. + * + * @param elapsed_ms completed ticker callback elapsed milliseconds + * + * This function should be called from mbed_watchdog_manager_kick to monitor all the + * user/threads alive state. + * + * Otherwise, the system is reset. + */ + void process(uint32_t elapsed_ms); +protected : + + /** add_to_list is used to store the registered user into List. + * This API is only used to call from start. + */ + void add_to_list(); + + /** Remove from list is uesed to remove the entry from the list. + * This API is only used to call from stop. + * + */ + void remove_from_list(); +private: + uint32_t _max_timeout; //_max_timeout initialized via constructor while creating instance of this class + const char *_name;//To store the details of user + uint32_t _current_count;//this parameter is used to reset everytime threads/user calls kick + bool _is_initialized;//To control start and stop functionality + static Watchdog *_first;//List to store the user/threads who called start + Watchdog *_next; +}; + +} // namespace mbed + +#endif // DEVICE_WATCHDOG +#endif // MBED_WATCHDOG_H diff --git a/features/FEATURE_BLE/ble/GattClient.h b/features/FEATURE_BLE/ble/GattClient.h index fc60e5c8405..828536ffbd3 100644 --- a/features/FEATURE_BLE/ble/GattClient.h +++ b/features/FEATURE_BLE/ble/GattClient.h @@ -83,6 +83,38 @@ */ class GattClient { public: + + /** + * Definition of the general handler of GattClient related events. + */ + struct EventHandler { + /** + * Function invoked when the connections changes the ATT_MTU which controls + * the maximum size of an attribute that can be read in a single L2CAP packet + * which might be fragmented across multiple packets. + * + * @param connectionHandle The handle of the connection that changed the size. + * @param attMtuSize + */ + virtual void onAttMtuChange( + ble::connection_handle_t connectionHandle, + uint16_t attMtuSize + ) + { + } + }; + + /** + * Assign the event handler implementation that will be used by the + * module to signal events back to the application. + * + * @param handler Application implementation of an EventHandler. + */ + void setEventHandler(EventHandler *handler) + { + eventHandler = handler; + } + /** * Attribute read event handler. * @@ -635,6 +667,27 @@ class GattClient { (void) characteristic; } + /** + * Trigger MTU negotiation. This might result in a Gap event onAttMtuChange + * being called if MTU changes. + * + * @note This does not guarantee a change in MTU size. If size remains + * unchanged no event will be generated. + * + * @param connection Connection on which the MTU is to be negotiated. + * + * @return BLE_ERROR_NONE if the procedure has been launched successfully + * otherwise an appropriate error. + */ + virtual ble_error_t negotiateAttMtu( + ble::connection_handle_t connection + ) { + /* Requesting action from porter(s): override this API if this + capability is supported. */ + (void) connection; + return BLE_ERROR_NOT_IMPLEMENTED; + } + /** * Register an handler for Handle Value Notification/Indication events. * @@ -742,7 +795,7 @@ class GattClient { } protected: - GattClient() + GattClient() : eventHandler(NULL) { /* Empty */ } @@ -794,6 +847,11 @@ class GattClient { } protected: + /** + * Event handler provided by the application. + */ + EventHandler *eventHandler; + /** * Callchain containing all registered event handlers for data read * events. diff --git a/features/FEATURE_BLE/ble/GattServer.h b/features/FEATURE_BLE/ble/GattServer.h index 3b0d140392d..dfa9fa3c3e4 100644 --- a/features/FEATURE_BLE/ble/GattServer.h +++ b/features/FEATURE_BLE/ble/GattServer.h @@ -87,6 +87,38 @@ */ class GattServer { public: + + /** + * Definition of the general handler of GattServer related events. + */ + struct EventHandler { + /** + * Function invoked when the connections changes the ATT_MTU which controls + * the maximum size of an attribute that can be read in a single L2CAP packet + * which might be fragmented across multiple packets. + * + * @param connectionHandle The handle of the connection that changed the size. + * @param attMtuSize + */ + virtual void onAttMtuChange( + ble::connection_handle_t connectionHandle, + uint16_t attMtuSize + ) + { + } + }; + + /** + * Assign the event handler implementation that will be used by the + * module to signal events back to the application. + * + * @param handler Application implementation of an EventHandler. + */ + void setEventHandler(EventHandler *handler) + { + eventHandler = handler; + } + /** * Event handler invoked when the server has sent data to a client. * @@ -164,6 +196,7 @@ class GattServer { * Construct a GattServer instance. */ GattServer() : + eventHandler(NULL), serviceCount(0), characteristicCount(0), dataSentCallChain(), @@ -778,6 +811,11 @@ class GattServer { } protected: + /** + * Event handler provided by the application. + */ + EventHandler *eventHandler; + /** * The total number of services added to the ATT table. */ 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/Gap.h b/features/FEATURE_BLE/ble/gap/Gap.h index 98f60f45961..93d1957709f 100644 --- a/features/FEATURE_BLE/ble/gap/Gap.h +++ b/features/FEATURE_BLE/ble/gap/Gap.h @@ -492,6 +492,26 @@ class Gap { { } + /** + * Function invoked when the connections changes the maximum number of octets + * that can be sent or received by the controller in a single packet. A single + * L2CAP packet can be fragmented across many such packets. + * + * @note This only triggers if controller supports data length extension and + * negotiated data length is longer than the default 23. + * + * @param connectionHandle The handle of the connection that changed the size. + * @param txSize Number of octets we can send on this connection in a single packet. + * @param rxSize Number of octets we can receive on this connection in a single packet. + */ + virtual void onDataLengthChange( + connection_handle_t connectionHandle, + uint16_t txSize, + uint16_t rxSize + ) + { + } + protected: /** * Prevent polymorphic deletion and avoid unnecessary virtual destructor diff --git a/features/FEATURE_BLE/ble/generic/GenericGap.h b/features/FEATURE_BLE/ble/generic/GenericGap.h index b46bcb67160..be0903edc12 100644 --- a/features/FEATURE_BLE/ble/generic/GenericGap.h +++ b/features/FEATURE_BLE/ble/generic/GenericGap.h @@ -627,6 +627,12 @@ class GenericGap : phy_t rx_phy ); + virtual void on_data_length_change( + connection_handle_t connection_handle, + uint16_t tx_size, + uint16_t rx_size + ); + virtual void on_phy_update_complete( pal::hci_error_code_t hci_status, Handle_t connection_handle, diff --git a/features/FEATURE_BLE/ble/generic/GenericGattClient.h b/features/FEATURE_BLE/ble/generic/GenericGattClient.h index b135535d93f..3759e8f1bd3 100644 --- a/features/FEATURE_BLE/ble/generic/GenericGattClient.h +++ b/features/FEATURE_BLE/ble/generic/GenericGattClient.h @@ -33,8 +33,23 @@ namespace generic { * @attention: Not part of the public interface of BLE API. */ class GenericGattClient : public GattClient, - public pal::SigningEventMonitor { + public pal::SigningEventMonitor, + public pal::GattClient::EventHandler { public: + + /** + * @see pal::GattClient::EventHandler::on_att_mtu_change + */ + virtual void on_att_mtu_change( + ble::connection_handle_t connection_handle, + uint16_t att_mtu_size + ) + { + if (eventHandler) { + eventHandler->onAttMtuChange(connection_handle, att_mtu_size); + } + } + /** * Create a GenericGattClient from a pal::GattClient */ @@ -111,6 +126,13 @@ class GenericGattClient : public GattClient, const DiscoveredCharacteristic& characteristic ); + /** + * @see GattClient::negotiateAttMtu + */ + virtual ble_error_t negotiateAttMtu( + connection_handle_t connection + ); + /** * @see GattClient::reset */ @@ -121,6 +143,14 @@ class GenericGattClient : public GattClient, */ virtual void set_signing_event_handler(pal::SigningEventMonitor::EventHandler *signing_event_handler); + /** + * Return the user registered event handler. + * @return User registered event handler or NULL if none is present. + */ + ::GattClient::EventHandler* getEventHandler() { + return eventHandler; + } + private: struct ProcedureControlBlock; struct DiscoveryControlBlock; diff --git a/features/FEATURE_BLE/ble/pal/PalGap.h b/features/FEATURE_BLE/ble/pal/PalGap.h index 39e06f2622c..3598fdace2c 100644 --- a/features/FEATURE_BLE/ble/pal/PalGap.h +++ b/features/FEATURE_BLE/ble/pal/PalGap.h @@ -44,6 +44,15 @@ struct Gap { ble::phy_t rx_phy ) = 0; + /** + * @copydoc Gap::EventHandler::onDataLengthChange + */ + virtual void on_data_length_change( + connection_handle_t connection_handle, + uint16_t tx_size, + uint16_t rx_size + ) = 0; + /** * @copydoc Gap::EventHandler::onPhyUpdateComplete */ diff --git a/features/FEATURE_BLE/ble/pal/PalGattClient.h b/features/FEATURE_BLE/ble/pal/PalGattClient.h index 2152c428f43..56d72f2b9f0 100644 --- a/features/FEATURE_BLE/ble/pal/PalGattClient.h +++ b/features/FEATURE_BLE/ble/pal/PalGattClient.h @@ -55,8 +55,25 @@ namespace pal { * the class AttClientToGattClientAdapter */ class GattClient { - public: + /** + * Definition of the general handler of GattClient related events. + */ + struct EventHandler { + /** + * Function invoked when the connections changes the ATT_MTU which controls + * the maximum size of an attribute that can be read in a single L2CAP packet + * which might be fragmented across multiple packets. + * + * @param connectionHandle The handle of the connection that changed the size. + * @param attMtuSize + */ + virtual void on_att_mtu_change( + ble::connection_handle_t connection_handle, + uint16_t att_mtu_size + ) = 0; + }; + /** * Initialisation of the instance. An implementation can use this function * to initialise the subsystems needed to realize the operations of this @@ -582,8 +599,27 @@ class GattClient { _transaction_timeout_cb = cb; } + /** + * Sets the event handler that us called by the PAL porters to notify the stack of events + * which will in turn be passed onto the user application when appropriate. + * + * @param event_handler The new event handler interface implementation. + */ + void set_event_handler(EventHandler* event_handler) { + _event_handler = event_handler; + } + + /** + * Get the currently registered event handler. + * + * @return Currently registered event handler. NULL if no event handler is present. + */ + EventHandler* get_event_handler() { + return _event_handler; + } + protected: - GattClient() { } + GattClient() : _event_handler(NULL) { } virtual ~GattClient() { } @@ -621,6 +657,8 @@ class GattClient { } private: + EventHandler* _event_handler; + /** * Callback called when the client receive a message from the server. */ diff --git a/features/FEATURE_BLE/source/generic/GenericGap.cpp b/features/FEATURE_BLE/source/generic/GenericGap.cpp index 6a115c2df43..26a1cbcb010 100644 --- a/features/FEATURE_BLE/source/generic/GenericGap.cpp +++ b/features/FEATURE_BLE/source/generic/GenericGap.cpp @@ -851,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; } @@ -860,6 +860,17 @@ void GenericGap::on_read_phy( } } +void GenericGap::on_data_length_change( + Handle_t connection_handle, + uint16_t tx_size, + uint16_t rx_size +) +{ + if (_eventHandler) { + _eventHandler->onDataLengthChange(connection_handle, tx_size, rx_size); + } +} + void GenericGap::on_phy_update_complete( pal::hci_error_code_t hci_status, Handle_t connection_handle, @@ -868,7 +879,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; } diff --git a/features/FEATURE_BLE/source/generic/GenericGattClient.cpp b/features/FEATURE_BLE/source/generic/GenericGattClient.cpp index c89577d9880..4ca3616fff4 100644 --- a/features/FEATURE_BLE/source/generic/GenericGattClient.cpp +++ b/features/FEATURE_BLE/source/generic/GenericGattClient.cpp @@ -1259,6 +1259,12 @@ void GenericGattClient::terminateCharacteristicDescriptorDiscovery( } +ble_error_t GenericGattClient::negotiateAttMtu( + connection_handle_t connection +) { + return _pal_client->exchange_mtu(connection); +} + ble_error_t GenericGattClient::reset(void) { // _is_reseting prevent executions of new procedure while the instance resets. @@ -1274,7 +1280,7 @@ ble_error_t GenericGattClient::reset(void) { } void GenericGattClient::set_signing_event_handler( - EventHandler *signing_event_handler + pal::SigningEventMonitor::EventHandler *signing_event_handler ) { _signing_event_handler = signing_event_handler; } diff --git a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmBLE.h b/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmBLE.h deleted file mode 100644 index 5ccc436f8fe..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmBLE.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#ifndef _ARMBLE_H_ -#define _ARMBLE_H_ - -#include "BLE.h" -#include "blecommon.h" -#include "BLEInstanceBase.h" - -#include "ArmGap.h" -#include "ArmGattServer.h" -#include "ArmGattClient.h" -#include "ArmSecurityManager.h" - -class ArmBLE : public BLEInstanceBase -{ -public: - ArmBLE(void); - virtual ~ArmBLE(void); - - virtual ble_error_t init(BLE::InstanceID_t instanceID, FunctionPointerWithContext initCallback); - virtual bool hasInitialized(void) const { - return initialized; - } - virtual ble_error_t shutdown(void); - virtual const char *getVersion(void); - - virtual Gap &getGap() { - return ArmGap::getInstance(); - }; - virtual const Gap &getGap() const { - return ArmGap::getInstance(); - }; - virtual GattServer &getGattServer() { - return ArmGattServer::getInstance(); - }; - virtual const GattServer &getGattServer() const { - return ArmGattServer::getInstance(); - }; - virtual GattClient &getGattClient() { - return ArmGattClient::getInstance(); - }; - virtual SecurityManager &getSecurityManager() { - return ArmSecurityManager::getInstance(); - }; - virtual const SecurityManager &getSecurityManager() const { - return ArmSecurityManager::getInstance(); - }; - - virtual void waitForEvent(void); - - virtual void processEvents(); - -private: - bool initialized; - BLE::InstanceID_t instanceID; - - static void timeoutCallback(void); - void callDispatcher(void); -}; - -#endif /* _ARMBLE_H_ */ diff --git a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGap.h b/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGap.h deleted file mode 100644 index 8dcf9843235..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGap.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#ifndef _ARM_GAP_H_ -#define _ARM_GAP_H_ - -#include "mbed.h" -#include "blecommon.h" -#include "GapAdvertisingParams.h" -#include "GapAdvertisingData.h" -#include "Gap.h" -#include "GapScanningParams.h" -#include "dm_api.h" -#include "att_api.h" - -/**************************************************************************/ -/*! - \brief - -*/ -/**************************************************************************/ -class ArmGap : public Gap -{ -public: - static ArmGap &getInstance(); - - /* Functions that must be implemented from Gap */ - virtual ble_error_t setAddress(AddressType_t type, const Address_t address); - virtual ble_error_t getAddress(AddressType_t *typeP, Address_t address); - virtual ble_error_t setAdvertisingData(const GapAdvertisingData &, const GapAdvertisingData &); - - #define BLE_GAP_ADV_INTERVAL_MIN 0x0020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ - #define BLE_GAP_ADV_NONCON_INTERVAL_MIN 0x00A0 /**< Minimum Advertising interval in 625 us units for non connectable mode, i.e. 100 ms. */ - #define BLE_GAP_ADV_INTERVAL_MAX 0x4000 /**< Armum Advertising interval in 625 us units, i.e. 10.24 s. */ - - virtual uint16_t getMinAdvertisingInterval(void) const { return BLE_GAP_ADV_INTERVAL_MIN; } - virtual uint16_t getMinNonConnectableAdvertisingInterval(void) const { return BLE_GAP_ADV_NONCON_INTERVAL_MIN; } - virtual uint16_t getMaxAdvertisingInterval(void) const { return BLE_GAP_ADV_INTERVAL_MAX; } - - virtual ble_error_t startAdvertising(const GapAdvertisingParams &); - virtual ble_error_t stopAdvertising(void); - virtual ble_error_t disconnect(Handle_t connectionHandle, DisconnectionReason_t reason); - virtual ble_error_t disconnect(DisconnectionReason_t reason); - - virtual ble_error_t setDeviceName(const uint8_t *deviceName); - virtual ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP); - virtual ble_error_t setAppearance(GapAdvertisingData::Appearance appearance); - virtual ble_error_t getAppearance(GapAdvertisingData::Appearance *appearanceP); - - virtual ble_error_t setTxPower(int8_t txPower); - virtual void getPermittedTxPowerValues(const int8_t **valueArrayPP, size_t *countP); - - void setConnectionHandle(uint16_t m_connectionHandle); - uint16_t getConnectionHandle(void); - - virtual ble_error_t getPreferredConnectionParams(ConnectionParams_t *params); - virtual ble_error_t setPreferredConnectionParams(const ConnectionParams_t *params); - virtual ble_error_t updateConnectionParams(Handle_t handle, const ConnectionParams_t *params); - - virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams); - virtual ble_error_t stopScan(void); - - void advertisingStopped(void); - -private: - uint16_t m_connectionHandle; - addr_type_t m_type; - ArmGap() { - m_connectionHandle = DM_CONN_ID_NONE; - m_type = BLEProtocol::AddressType::RANDOM_STATIC; - } - - ArmGap(ArmGap const &); - void operator=(ArmGap const &); -}; - -#endif /* _ARM_GAP_H_ */ diff --git a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGattClient.h b/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGattClient.h deleted file mode 100644 index 7b0b0e6e3d3..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGattClient.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#ifndef _ARM_GATT_CLIENT_H_ -#define _ARM_GATT_CLIENT_H_ - -#include - -#include "GattClient.h" - -class ArmGattClient : public GattClient -{ -public: - static ArmGattClient &getInstance() { - static ArmGattClient m_instance; - return m_instance; - } - -public: - ArmGattClient() { - /* empty */ - } - -private: - -}; - -#endif /* _ARM_GATT_CLIENT_H_ */ diff --git a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGattServer.h b/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGattServer.h deleted file mode 100644 index 409d3ea73e8..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmGattServer.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#ifndef _ARM_GATT_SERVER_H_ -#define _ARM_GATT_SERVER_H_ - -#include - -#include "blecommon.h" -#include "GattServer.h" -#include "generic/wsf_types.h" -#include "att_api.h" - -class ArmGattServer : public GattServer -{ -public: - static ArmGattServer &getInstance(); - - /* Functions that must be implemented from GattServer */ - virtual ble_error_t addService(GattService &); - - virtual ble_error_t read(GattAttribute::Handle_t attributeHandle, uint8_t buffer[], uint16_t *lengthP); - virtual ble_error_t read(Gap::Handle_t connectionHandle, GattAttribute::Handle_t attributeHandle, uint8_t buffer[], uint16_t *lengthP); - virtual ble_error_t write(GattAttribute::Handle_t, const uint8_t[], uint16_t, bool localOnly = false); - virtual ble_error_t write(Gap::Handle_t connectionHandle, GattAttribute::Handle_t, const uint8_t[], uint16_t, bool localOnly = false); - - virtual ble_error_t areUpdatesEnabled(const GattCharacteristic &characteristic, bool *enabledP); - virtual ble_error_t areUpdatesEnabled(Gap::Handle_t connectionHandle, const GattCharacteristic &characteristic, bool *enabledP); - - virtual bool isOnDataReadAvailable() const { return true; } - -private: - static void cccCback(attsCccEvt_t *pEvt); - static void attCback(attEvt_t *pEvt); - static uint8_t attsReadCback(dmConnId_t connId, uint16_t handle, uint8_t operation, uint16_t offset, attsAttr_t *pAttr); - static uint8_t attsWriteCback(dmConnId_t connId, uint16_t handle, uint8_t operation, uint16_t offset, uint16_t len, uint8_t *pValue, attsAttr_t *pAttr); - - /*! client characteristic configuration descriptors settings */ - #define MAX_CCC_CNT 20 - attsCccSet_t cccSet[MAX_CCC_CNT]; - uint16_t cccValues[MAX_CCC_CNT]; - uint16_t cccHandles[MAX_CCC_CNT]; - uint8_t cccCnt; - -private: - ArmGattServer() : GattServer(), cccSet(), cccValues(), cccHandles(), cccCnt(0) { - /* empty */ - } - - ArmGattServer(const ArmGattServer &); - const ArmGattServer& operator=(const ArmGattServer &); -}; - -#endif /* _ARM_GATT_SERVER_H_ */ diff --git a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmSecurityManager.h b/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmSecurityManager.h deleted file mode 100644 index f7c40ad4234..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/arm-ble/ArmSecurityManager.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#ifndef _ARM_SECURITY_MANAGER_H_ -#define _ARM_SECURITY_MANAGER_H_ - -#include - -#include "SecurityManager.h" - -class ArmSecurityManager : public SecurityManager -{ -public: - static ArmSecurityManager &getInstance() { - static ArmSecurityManager m_instance; - return m_instance; - } - -public: - ArmSecurityManager() { - /* empty */ - } -}; - -#endif /* _ARM_SECURITY_MANAGER_H_ */ diff --git a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmBLE.cpp b/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmBLE.cpp deleted file mode 100644 index bf530464214..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmBLE.cpp +++ /dev/null @@ -1,569 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#include "mbed.h" -#include "ArmBLE.h" - -extern "C" { -#include "cordio_sdk_version.h" -#include "chip.h" -#include "board.h" -#include "utils.h" - -#include "hpal_blep.h" -#include "hpal_hci.h" - -#include "ble_init.h" -#include "main_board.h" - -#include "wsf_assert.h" -#include "wsf_buf.h" -#include "wsf_math.h" -#include "wsf_msg.h" -#include "wsf_os.h" -#include "wsf_mbed_os.h" -#include "wsf_sec.h" -#include "wsf_timer.h" -#include "wsf_types.h" -#include "wsf_trace.h" -#include "bstream.h" - -#include "hci_handler.h" -#include "hci_tr.h" -#include "dm_handler.h" -#include "l2c_handler.h" -#include "att_handler.h" -#include "smp_handler.h" -#include "l2c_api.h" -#include "att_api.h" -#include "smp_api.h" -#include "hci_core.h" -#include "hci_drv.h" -} - -/* Number of WSF buffer pools. */ -#define WSF_BUF_POOLS 4 - -/* Buffer size. */ -#define ACL_BUF_SIZE 256 - -/* Total number of buffers. */ -#define NUM_BUFS 8 - -/* Total size in bytes for buffer memory. */ -#define BUF_MEM_SIZE (1024 * 4) - -/*! Free memory for pool buffers. */ -static uint32_t mainBufMem[BUF_MEM_SIZE/sizeof(uint32_t)]; - -/*! Default pool descriptor. */ -static wsfBufPoolDesc_t mainPoolDesc[WSF_BUF_POOLS] = -{ - { 16, 8 }, - { 32, 8 }, - { 64, 8 }, - { ACL_BUF_SIZE + 16, NUM_BUFS } -}; - -/* Store the Event signalling */ -bool isEventsSignaled = false; - -/*! WSF handler ID */ -wsfHandlerId_t armHandlerId; -wsfHandlerId_t BleHandlerId; -static volatile int reset_complete; - -/* Beetle Internal Functions */ - -/* HCI callback prototypes. */ -static uint8_t *mainHciBufAlloc(uint16_t len); -static void mainHciBufFree(uint8_t *buf); -static void mainHciReadDone(uint8_t type, uint8_t *pData, uint16_t len); -static void mainHciWriteDone(uint8_t type, uint8_t *pData, int32_t err, void *pContext); - -/*! \brief HCI callbacks. */ -static const hpalHciCbacks_t mainHciCbacks = -{ - mainHciBufAlloc, - mainHciBufFree, - mainHciReadDone, - mainHciWriteDone -}; - -/************************************************************************************************** - Stack HCI -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \brief Allocate a buffer for a received message. - * - * This function is called from an interrupt context. - * - * \param len Length of buffer - * -** \return Pointer to buffer or NULL if buffer could not be allocated - */ -/*************************************************************************************************/ -static uint8_t *mainHciBufAlloc(uint16_t len) -{ - return (uint8_t*)WsfMsgAlloc(len); -} - -/*************************************************************************************************/ -/*! - * \brief Free a buffer previously allocated with `BufAlloc()`. - * - * \param pData Pointer to buffer - */ -/*************************************************************************************************/ -static void mainHciBufFree(uint8_t *pData) -{ - WsfMsgFree(pData); -} - -/*************************************************************************************************/ -/*! - * \brief Handle read completion. - * - * This function is called from an interrupt context. - * - * \param type Packet type - * \param pData Packet data, which was allocated with `BufAlloc()`. The caller must free - * this buffer - * \param len Length of packet data, in bytes - * - * \return None. - */ -/*************************************************************************************************/ -static void mainHciReadDone(uint8_t type, uint8_t *pData, uint16_t len) -{ - WSF_ASSERT(align == 0); - - switch (type) - { - /* Route standard types to stack. */ - case HCI_CMD_TYPE: - case HCI_ACL_TYPE: - case HCI_EVT_TYPE: - { - hciCoreRecv(type, pData); - break; - } - - /* We should not get anything else. */ - default: - { - WsfMsgFree(pData); - break; - } - } -} - -/*************************************************************************************************/ -/*! - * \brief Handle write completion. - * - * This function is called from an interrupt context. - * - * \param type Packet type. - * \param pData Pointer to buffer that held written data, which was passed to - * `HpalHciWrite()` - * \param err Indicates success (0) or error (one of the `HPAL_HCI_ERROR_####` codes) - * \param pContext Context pointer passed to `HpalHciWrite()` - * - * \return None. - */ -/*************************************************************************************************/ -static void mainHciWriteDone(uint8_t type, uint8_t *pData, int32_t err, void *pContext) -{ - switch (type) - { - case HCI_CMD_TYPE: - { - WsfMsgFree(pData); - break; - } - - case HCI_ACL_TYPE: - { - hciCoreTxAclComplete((hciCoreConn_t *)pContext, pData); - break; - } - } -} - -/*************************************************************************************************/ -/*! - * \fn hciTrSendAclData - * - * \brief Send a complete HCI ACL packet to the transport. - * - * \param pContext Connection context. - * \param pData WSF msg buffer containing an ACL packet. - * - * \return None. - */ -/*************************************************************************************************/ -void hciTrSendAclData(void *pContext, uint8_t *pData) -{ - uint16_t len; - - /* get 16-bit length */ - BYTES_TO_UINT16(len, &pData[2]); - len += HCI_ACL_HDR_LEN; - - /* transmit ACL header and data */ - HpalHciWrite(HCI_ACL_TYPE, pData, len, pContext); -} - -/*************************************************************************************************/ -/*! - * \fn hciTrSendCmd - * - * \brief Send a complete HCI command to the transport. - * - * \param pData WSF msg buffer containing an HCI command. - * - * \return None. - */ -/*************************************************************************************************/ -void hciTrSendCmd(uint8_t *pData) -{ - uint8_t len; - - /* get length */ - len = pData[2] + HCI_CMD_HDR_LEN; - - /* dump event for protocol analysis */ - HCI_PDUMP_CMD(len, pData); - - /* transmit ACL header and data */ - HpalHciWrite(HCI_CMD_TYPE, pData, len, NULL); -} - -void beetleCordioReset(void) -{ - CORDIO_LLCCTRL_LLC_RESET_ASSERT(); - CORDIO_LLCCTRL_RESETX_ASSERT(); - CORDIO_LLCCTRL_VMEM_ON_ASSERT(); - wait_ms(2); - CORDIO_LLCCTRL_RESETX_NEGATE(); - CORDIO_LLCCTRL_LLC_RESET_NEGATE(); -} - -/* End Beetle Internal Functions */ - -/** - * The singleton which represents the ArmBLE transport for the BLE. - */ -static ArmBLE deviceInstance; - -/** - * BLE-API requires an implementation of the following function in order to - * obtain its transport handle. - */ -BLEInstanceBase *createBLEInstance(void) -{ - return (&deviceInstance); -} - -ArmBLE::ArmBLE(void) : initialized(false), instanceID(BLE::DEFAULT_INSTANCE) -{ -} - -ArmBLE::~ArmBLE(void) -{ -} - -const char *ArmBLE::getVersion(void) -{ - static char versionString[32]; - - strncpy(versionString, "unknown", sizeof(versionString)); - - return versionString; -} - -static void DmCback(dmEvt_t *pDmEvt) -{ - dmEvt_t *pMsg; - - if ((pMsg = (dmEvt_t*)WsfMsgAlloc(sizeof(dmEvt_t))) != NULL) - { - memcpy(pMsg, pDmEvt, sizeof(dmEvt_t)); - WsfMsgSend(armHandlerId, pMsg); - } -} - -static void armHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg) -{ - if (pMsg != NULL) - { - switch(pMsg->event) - { - case DM_RESET_CMPL_IND: - reset_complete = 1; - break; - case DM_ADV_START_IND: - break; - case DM_ADV_STOP_IND: - ArmGap::getInstance().advertisingStopped(); - break; - case DM_SCAN_REPORT_IND: - { - dmEvt_t *scan = (dmEvt_t*)pMsg; - ArmGap::getInstance().processAdvertisementReport( scan->scanReport.addr, - scan->scanReport.rssi, - (scan->scanReport.eventType == DM_ADV_SCAN_RESPONSE) ? true : false, - (GapAdvertisingParams::AdvertisingType_t)scan->scanReport.eventType, - scan->scanReport.len, - scan->scanReport.pData, - (BLEProtocol::AddressType_t) scan->scanReport.addrType); - } - break; - case DM_CONN_OPEN_IND: - { - dmEvt_t *conn = (dmEvt_t*)pMsg; - ArmGap::getInstance().setConnectionHandle(conn->hdr.param); - Gap::ConnectionParams_t params = { conn->connOpen.connInterval, conn->connOpen.connInterval, conn->connOpen.connLatency, conn->connOpen.supTimeout }; - Gap::AddressType_t ownAddrType; - Gap::Address_t ownAddr; - ArmGap::getInstance().getAddress(&ownAddrType, ownAddr); - ArmGap::getInstance().processConnectionEvent(conn->hdr.param, - Gap::PERIPHERAL, - (Gap::AddressType_t)conn->connOpen.addrType, - conn->connOpen.peerAddr, - ownAddrType, - ownAddr, - ¶ms); - } - break; - case DM_CONN_CLOSE_IND: - { - dmEvt_t *conn = (dmEvt_t*)pMsg; - ArmGap::getInstance().setConnectionHandle(DM_CONN_ID_NONE); - ArmGap::getInstance().processDisconnectionEvent(conn->hdr.param, (Gap::DisconnectionReason_t)conn->connClose.reason); - } - break; - default: - break; - } - } -} - -/* - * AttServerInitDeInitCback callback is used to Initialize/Deinitialize - * the CCC Table of the ATT Server when a remote peer requests to Open - * or Close the connection. - */ -static void AttServerInitDeInitCback(dmEvt_t *pDmEvt) -{ - dmConnId_t connId = (dmConnId_t)pDmEvt->hdr.param; - - switch (pDmEvt->hdr.event) - { - case DM_CONN_OPEN_IND: - /* set up CCC table with uninitialized (all zero) values */ - AttsCccInitTable(connId, NULL); - break; - case DM_CONN_CLOSE_IND: - /* clear CCC table on connection close */ - AttsCccClearTable(connId); - break; - default: - break; - } -} - -/* - * This function will signal to the user code by calling signalEventsToProcess. - * It is registered and called into the Wsf Stack. - */ - static uint32_t signalEvent() - { - if(isEventsSignaled == false) { - isEventsSignaled = true; - deviceInstance.signalEventsToProcess(BLE::DEFAULT_INSTANCE); - } - return BLE_ERROR_NONE; - } - -static void ArmBLEInit(wsfEventMask_t event, wsfMsgHdr_t *pMsg) -{ - wsfHandlerId_t handlerId; - - /* - * The init sequence is taken from the Cordio Stack Porting Guide version - * 1.1 Chapter 2.6. - */ - - /* init OS subsystems */ - /* initialize WSF services */ - WsfSecInit(); - /* Disabled WsfSecAesInit(); */ - - /* initialize HCI */ - handlerId = WsfOsSetNextHandler(HciHandler); - HciHandlerInit(handlerId); - - /* initialize DM */ - handlerId = WsfOsSetNextHandler(DmHandler); - DmAdvInit(); - DmConnInit(); - DmConnSlaveInit(); - DmSecInit(); - DmHandlerInit(handlerId); - - /* initialize L2CAP */ - handlerId = WsfOsSetNextHandler(L2cSlaveHandler); - L2cSlaveHandlerInit(handlerId); - L2cInit(); - L2cSlaveInit(); - - /* initialize ATT */ - handlerId = WsfOsSetNextHandler(AttHandler); - AttHandlerInit(handlerId); - AttsInit(); - AttsIndInit(); - - /* initialize SMP */ - handlerId = WsfOsSetNextHandler(SmpHandler); - SmpHandlerInit(handlerId); - SmprInit(); - - /* store handler ID */ - armHandlerId = WsfOsSetNextHandler(armHandler); - - /* Register for stack callbacks */ - HpalHciSetCbacks(&mainHciCbacks); - HpalHciSetLoggingLevel(HPAL_HCI_LOGGING_LEVEL_VERBOSE); - HpalHciTakeUp(); - - DmRegister(DmCback); - DmConnRegister(DM_CLIENT_ID_APP, DmCback); - AttConnRegister(AttServerInitDeInitCback); - - /* Register MBED OS Signal Event */ - mbedOSRegisterSignalEventCallback(&signalEvent); - - /* Reset the device */ - reset_complete = 0; - DmDevReset(); -} - -static void ArmBLEStartCallback(bool_t ok) -{ - if (ok) - { - /* If started up, allow remaining application to run. */ - WsfSetEvent(BleHandlerId, 1); - } -} - -ble_error_t ArmBLE::init(BLE::InstanceID_t instanceID, FunctionPointerWithContext initCallback) -{ - wsfHandlerId_t handlerId; - - beetleCordioReset(); - Main_BoardInit(); - - /* init OS subsystems */ - WsfTimerInit(); - WsfBufInit(sizeof(mainBufMem), (uint8_t*)mainBufMem, WSF_BUF_POOLS, mainPoolDesc); - - /* init stack */ - handlerId = WsfOsSetNextHandler(HpalBlepHandler); - HpalBlepInit(handlerId); - - BleHandlerId = WsfOsSetNextHandler(ArmBLEInit); - HpalBlepSetStartupCback(ArmBLEStartCallback); - - /* - * Initialize BLE: - * - Download the Cordio FW - * - Initialize the lower layers - */ - BleInitStart(); - - /* Wait for BLE device to boot */ - while (!reset_complete) { - callDispatcher(); - } - - initialized = true; - BLE::InitializationCompleteCallbackContext context = { - BLE::Instance(instanceID), - BLE_ERROR_NONE - }; - initCallback.call(&context); - return BLE_ERROR_NONE; -} - -ble_error_t ArmBLE::shutdown(void) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -void ArmBLE::waitForEvent(void) -{ - timestamp_t nextTimestamp; - bool_t pTimerRunning; - - processEvents(); - - if (wsfOsReadyToSleep()) { - // setup an mbed timer for the next Wicentric timeout - nextTimestamp = (timestamp_t)WsfTimerNextExpiration(&pTimerRunning) * 1000; - if (pTimerRunning) { - /* - * go to sleep to nextTimestamp: The ble stack here has to inform - * the system that is ready and not really go to sleep. - * TO BE DONE - */ - } - } -} - -void ArmBLE::processEvents() -{ - if (isEventsSignaled) { - isEventsSignaled = false; - callDispatcher(); - } -} - -void ArmBLE::timeoutCallback(void) -{ - // do nothing. just an interrupt for wake up. -} - -void ArmBLE::callDispatcher(void) -{ - static uint32_t lastTimeUs = us_ticker_read(); - uint32_t currTimeUs, deltaTimeMs; - - // Update the current Wicentric time - currTimeUs = us_ticker_read(); - deltaTimeMs = (currTimeUs - lastTimeUs) / 1000; - if (deltaTimeMs > 0) { - WsfTimerUpdate(deltaTimeMs); - lastTimeUs += deltaTimeMs * 1000; - } - - wsfOsDispatcher(); -} diff --git a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmGap.cpp b/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmGap.cpp deleted file mode 100644 index f745ab50eb7..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmGap.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#include "ArmGap.h" -#include "mbed.h" - -ArmGap &ArmGap::getInstance() { - static ArmGap m_instance; - return m_instance; -} - -ble_error_t ArmGap::setAdvertisingData(const GapAdvertisingData &advData, const GapAdvertisingData &scanResponse) -{ - /* Make sure we don't exceed the advertising payload length */ - if (advData.getPayloadLen() > GAP_ADVERTISING_DATA_MAX_PAYLOAD) { - return BLE_ERROR_BUFFER_OVERFLOW; - } - - /* Make sure we have a payload! */ - if (advData.getPayloadLen() == 0) { - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - - /* set advertising and scan response data for discoverable mode */ - DmAdvSetData(DM_DATA_LOC_ADV, advData.getPayloadLen(), (uint8_t*)advData.getPayload()); - DmAdvSetData(DM_DATA_LOC_SCAN, scanResponse.getPayloadLen(), (uint8_t*)scanResponse.getPayload()); - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGap::startAdvertising(const GapAdvertisingParams ¶ms) -{ - /* Make sure we support the advertising type */ - if (params.getAdvertisingType() == GapAdvertisingParams::ADV_CONNECTABLE_DIRECTED) { - /* ToDo: This requires a proper security implementation, etc. */ - return BLE_ERROR_NOT_IMPLEMENTED; - } - - /* Check interval range */ - if (params.getAdvertisingType() == GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED) { - /* Min delay is slightly longer for unconnectable devices */ - if ((params.getInterval() < GapAdvertisingParams::GAP_ADV_PARAMS_INTERVAL_MIN_NONCON) || - (params.getInterval() > GapAdvertisingParams::GAP_ADV_PARAMS_INTERVAL_MAX)) { - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - } else { - if ((params.getInterval() < GapAdvertisingParams::GAP_ADV_PARAMS_INTERVAL_MIN) || - (params.getInterval() > GapAdvertisingParams::GAP_ADV_PARAMS_INTERVAL_MAX)) { - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - } - - /* Check timeout is zero for Connectable Directed */ - if ((params.getAdvertisingType() == GapAdvertisingParams::ADV_CONNECTABLE_DIRECTED) && (params.getTimeout() != 0)) { - /* Timeout must be 0 with this type, although we'll never get here */ - /* since this isn't implemented yet anyway */ - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - - /* Check timeout for other advertising types */ - if ((params.getAdvertisingType() != GapAdvertisingParams::ADV_CONNECTABLE_DIRECTED) && - (params.getTimeout() > GapAdvertisingParams::GAP_ADV_PARAMS_TIMEOUT_MAX)) { - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - - /* Peer Addr Type 0 = Public */ - uint8_t peerAddrType = 0; - uint8_t peerAddr[6]; - memset(peerAddr, 0, 6); - - DmAdvSetInterval(params.getInterval(), params.getInterval()); - DmAdvStart(params.getAdvertisingType(), params.getTimeout(), peerAddrType, peerAddr); - - state.advertising = 1; - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGap::stopAdvertising(void) -{ - DmAdvStop(); - - state.advertising = 0; - - return BLE_ERROR_NONE; -} - -void ArmGap::advertisingStopped(void) -{ - /* If advertising stopped due to a call to stopAdvertising(), state.advertising will - * be '0.' Otherwise, advertising must have stopped due to a timeout - */ - if (state.advertising) { - processTimeoutEvent(Gap::TIMEOUT_SRC_ADVERTISING); - } -} - -ble_error_t ArmGap::disconnect(DisconnectionReason_t reason) -{ - DmConnClose(DM_CLIENT_ID_APP, m_connectionHandle, reason); - - state.advertising = 0; - state.connected = 0; - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGap::disconnect(Handle_t connectionHandle, DisconnectionReason_t reason) -{ - DmConnClose(DM_CLIENT_ID_APP, connectionHandle, reason); - - state.advertising = 0; - state.connected = 0; - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGap::getPreferredConnectionParams(ConnectionParams_t *params) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -ble_error_t ArmGap::setPreferredConnectionParams(const ConnectionParams_t *params) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -ble_error_t ArmGap::updateConnectionParams(Handle_t handle, const ConnectionParams_t *newParams) -{ - if (DmConnCheckIdle(handle) != 0) { - return BLE_STACK_BUSY; - } - - hciConnSpec_t connSpec; - connSpec.connIntervalMin = newParams->minConnectionInterval; - connSpec.connIntervalMax = newParams->maxConnectionInterval; - connSpec.connLatency = newParams->slaveLatency; - connSpec.supTimeout = newParams->connectionSupervisionTimeout; - DmConnUpdate(handle, &connSpec); - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGap::startRadioScan(const GapScanningParams &scanningParams) -{ - DmScanSetInterval(scanningParams.getInterval(), scanningParams.getWindow()); - - uint8_t scanType = scanningParams.getActiveScanning() ? DM_SCAN_TYPE_ACTIVE : DM_SCAN_TYPE_PASSIVE; - uint32_t duration = (uint32_t)scanningParams.getTimeout() * 1000; - if (duration > 0xFFFF) { - // saturate to 16-bits - duration = 0xFFFF; - } - - DmScanStart(DM_DISC_MODE_NONE, scanType, TRUE, duration); - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGap::stopScan(void) -{ - DmScanStop(); - return BLE_ERROR_NONE; -} - -void ArmGap::setConnectionHandle(uint16_t connectionHandle) -{ - m_connectionHandle = connectionHandle; -} - -uint16_t ArmGap::getConnectionHandle(void) -{ - return m_connectionHandle; -} - -ble_error_t ArmGap::setAddress(AddressType_t type, const Address_t address) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -ble_error_t ArmGap::getAddress(AddressType_t *typeP, Address_t address) -{ - *typeP = m_type; - BdaCpy(address, HciGetBdAddr()); - return BLE_ERROR_NONE; -} - -ble_error_t ArmGap::setDeviceName(const uint8_t *deviceName) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -ble_error_t ArmGap::getDeviceName(uint8_t *deviceName, unsigned *lengthP) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -ble_error_t ArmGap::setAppearance(GapAdvertisingData::Appearance appearance) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -ble_error_t ArmGap::getAppearance(GapAdvertisingData::Appearance *appearanceP) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -ble_error_t ArmGap::setTxPower(int8_t txPower) -{ - return BLE_ERROR_NOT_IMPLEMENTED; -} - -void ArmGap::getPermittedTxPowerValues(const int8_t **valueArrayPP, size_t *countP) -{ - static const int8_t permittedTxValues[] = { - -18, -15, -12, -9, -6, -3, 0, 3 - }; - - *valueArrayPP = permittedTxValues; - *countP = sizeof(permittedTxValues) / sizeof(int8_t); -} diff --git a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmGattServer.cpp b/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmGattServer.cpp deleted file mode 100644 index c2445472990..00000000000 --- a/features/FEATURE_BLE/targets/TARGET_ARM_SSG/TARGET_BEETLE/source/ArmGattServer.cpp +++ /dev/null @@ -1,426 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#include "ArmGattServer.h" -#include "mbed.h" -#include "ArmGap.h" -#include "wsf_types.h" -#include "att_api.h" - -typedef struct armChar_s { - uint16_t descLen; - armChar_s() {} -} armChar_t; - -typedef struct armService_s armService_t; -struct armService_s { - uint16_t uuidLen; - armChar_t *chars; - attsGroup_t *attGroup; - armService_t *next; - armService_s() {} -}; - -static uint16_t currentHandle = 0x20; - -static UUID cccUUID(BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG); -static const uint16_t cccSize = sizeof(uint16_t); - -ArmGattServer &ArmGattServer::getInstance() { - static ArmGattServer m_instance; - return m_instance; -} - -ble_error_t ArmGattServer::addService(GattService &service) -{ - currentHandle = (currentHandle + 0xF) & ~0xF; - uint16_t startHandle = currentHandle; - - armService_t *armSvc = new armService_t; - - // Create WiCentric attribute group - armSvc->attGroup = new attsGroup_t; - - // Determine the attribute list length - unsigned int attListLen = 1; - for (int i = 0; i < service.getCharacteristicCount(); i++) { - attListLen += 2; - GattCharacteristic *p_char = service.getCharacteristic(i); - - if (p_char->getProperties() & (GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE)) { - // add a CCCD - attListLen++; - } - } - - // Create WiCentric attribute list - armSvc->attGroup->pAttr = (attsAttr_t*)malloc(attListLen * sizeof(attsAttr_t));; - if (armSvc->attGroup->pAttr == NULL) { - return BLE_ERROR_BUFFER_OVERFLOW; - } - - // Create characteristics - armSvc->chars = new armChar_t [service.getCharacteristicCount()]; - - attsAttr_t *currAtt = armSvc->attGroup->pAttr; - - /* Service */ - currAtt->pUuid = attPrimSvcUuid; - if (service.getUUID().shortOrLong() == UUID::UUID_TYPE_LONG) { - armSvc->uuidLen = UUID::LENGTH_OF_LONG_UUID; - } else { - armSvc->uuidLen = sizeof(UUID::ShortUUIDBytes_t); - } - currAtt->pValue = (uint8_t*)malloc(armSvc->uuidLen); - memcpy(currAtt->pValue, service.getUUID().getBaseUUID(), armSvc->uuidLen); - currAtt->maxLen = armSvc->uuidLen; - currAtt->pLen = &armSvc->uuidLen; - currAtt->settings = 0; - currAtt->permissions = ATTS_PERMIT_READ; - - currAtt++; - - /* Add characteristics to the service */ - for (int i = 0; i < service.getCharacteristicCount(); i++) { - GattCharacteristic *p_char = service.getCharacteristic(i); - - /* Skip any incompletely defined, read-only characteristics. */ - if ((p_char->getValueAttribute().getValuePtr() == NULL) && - (p_char->getValueAttribute().getLength() == 0) && - (p_char->getProperties() == GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ)) { - continue; - } - - // Create Characteristic Attribute - currentHandle += 2; - currAtt->pUuid = attChUuid; - - p_char->getValueAttribute().setHandle(currentHandle); - armSvc->chars[i].descLen = 1 + sizeof(currentHandle) + p_char->getValueAttribute().getUUID().getLen(); - currAtt->pValue = (uint8_t*)malloc(armSvc->chars[i].descLen); - uint8_t *pValue = currAtt->pValue; - *pValue++ = p_char->getProperties(); - memcpy(pValue, ¤tHandle, sizeof(currentHandle)); - pValue += sizeof(currentHandle); - memcpy(pValue, p_char->getValueAttribute().getUUID().getBaseUUID(), p_char->getValueAttribute().getUUID().getLen()); - - currAtt->pLen = &armSvc->chars[i].descLen; - currAtt->maxLen = armSvc->chars[i].descLen; - currAtt->settings = 0; - currAtt->permissions = ATTS_PERMIT_READ; - currAtt++; - - // Create Value Attribute - currAtt->pUuid = p_char->getValueAttribute().getUUID().getBaseUUID(); - currAtt->pValue = p_char->getValueAttribute().getValuePtr(); - currAtt->pLen = p_char->getValueAttribute().getLengthPtr(); - currAtt->maxLen = p_char->getValueAttribute().getMaxLength(); - currAtt->settings = ATTS_SET_WRITE_CBACK | ATTS_SET_READ_CBACK; - if (p_char->getValueAttribute().hasVariableLength()) { - currAtt->settings |= ATTS_SET_VARIABLE_LEN; - } - if (p_char->getValueAttribute().getUUID().shortOrLong() == UUID::UUID_TYPE_LONG) { - currAtt->settings |= ATTS_SET_UUID_128; - } - currAtt->permissions = 0; - if (p_char->getProperties() & GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ) { currAtt->permissions |= ATTS_PERMIT_READ; } - if (p_char->getProperties() & GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE) { currAtt->permissions |= ATTS_PERMIT_WRITE; } - currAtt++; - - bool cccCreated = false; - - for (int i = 0; i < p_char->getDescriptorCount(); i++) { - GattAttribute *p_att = p_char->getDescriptor(i); - - currentHandle++; - - currAtt->pUuid = p_att->getUUID().getBaseUUID(); - currAtt->pValue = p_att->getValuePtr(); - currAtt->pLen = p_att->getLengthPtr(); - currAtt->maxLen = p_att->getMaxLength(); - currAtt->settings = 0; - currAtt->permissions = 0; - if (p_att->getUUID().shortOrLong() == UUID::UUID_TYPE_LONG) { - currAtt->settings |= ATTS_SET_UUID_128; - } - if (p_att->getUUID() == UUID(BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG)) { - cccCreated = true; - currAtt->settings |= ATTS_SET_CCC; - currAtt->permissions |= ATTS_PERMIT_READ; - currAtt->permissions |= ATTS_PERMIT_WRITE; - - if (cccCnt < MAX_CCC_CNT) { - cccSet[cccCnt].handle = currentHandle; - cccSet[cccCnt].valueRange = 0; - if (p_char->getProperties() & GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) { - cccSet[cccCnt].valueRange |= ATT_CLIENT_CFG_NOTIFY; - } - if (p_char->getProperties() & GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE) { - cccSet[cccCnt].valueRange |= ATT_CLIENT_CFG_INDICATE; - } - cccSet[cccCnt].secLevel = DM_SEC_LEVEL_NONE; - cccHandles[cccCnt] = p_char->getValueAttribute().getHandle(); - cccCnt++; - } else { - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - } - currAtt++; - } - - if (!cccCreated && (p_char->getProperties() & (GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE))) { - /* There was not a CCCD included in the descriptors, but this - * characteristic is notifiable and/or indicatable. A CCCD is - * required so create one now. - */ - if (cccCnt >= MAX_CCC_CNT) { - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - - currentHandle++; - - currAtt->pUuid = cccUUID.getBaseUUID(); - currAtt->pValue = (uint8_t*)&cccValues[cccCnt]; - currAtt->pLen = (uint16_t*)&cccSize; - currAtt->maxLen = sizeof(uint16_t); - currAtt->settings = ATTS_SET_CCC; - currAtt->permissions = (ATTS_PERMIT_READ | ATTS_PERMIT_WRITE); - - cccSet[cccCnt].handle = currentHandle; - cccSet[cccCnt].valueRange = 0; - if (p_char->getProperties() & GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) { - cccSet[cccCnt].valueRange |= ATT_CLIENT_CFG_NOTIFY; - } - if (p_char->getProperties() & GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE) { - cccSet[cccCnt].valueRange |= ATT_CLIENT_CFG_INDICATE; - } - cccSet[cccCnt].secLevel = DM_SEC_LEVEL_NONE; - cccHandles[cccCnt] = p_char->getValueAttribute().getHandle(); - - cccCnt++; - currAtt++; - } - } - - armSvc->attGroup->pNext = NULL; - armSvc->attGroup->readCback = attsReadCback; - armSvc->attGroup->writeCback = attsWriteCback; - armSvc->attGroup->startHandle = startHandle; - armSvc->attGroup->endHandle = currentHandle; - AttsAddGroup(armSvc->attGroup); - - AttRegister(attCback); - AttsCccRegister(cccCnt, (attsCccSet_t*)cccSet, cccCback); - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGattServer::read(GattAttribute::Handle_t attributeHandle, uint8_t buffer[], uint16_t *const lengthP) -{ - if (AttsGetAttr(attributeHandle, lengthP, &buffer) != ATT_SUCCESS) { - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGattServer::read(Gap::Handle_t connectionHandle, GattAttribute::Handle_t attributeHandle, uint8_t buffer[], uint16_t *lengthP) -{ - // Check to see if this is a CCCD - uint8_t idx; - for (idx = 0; idx < cccCnt; idx++) { - if (attributeHandle == cccSet[idx].handle) { - if (connectionHandle == DM_CONN_ID_NONE) { // CCCDs are always 16 bits - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - *((uint16_t*)buffer) = AttsCccGet(connectionHandle, idx); - *lengthP = 2; // CCCDs are always 16 bits - return BLE_ERROR_NONE; - } - } - - // This is not a CCCD. Use the non-connection specific update method. - return read(attributeHandle, buffer, lengthP); -} - -ble_error_t ArmGattServer::write(GattAttribute::Handle_t attributeHandle, const uint8_t buffer[], uint16_t len, bool localOnly) -{ - uint16_t connectionHandle = ArmGap::getInstance().getConnectionHandle(); - - if (AttsSetAttr(attributeHandle, len, (uint8_t*)buffer) != ATT_SUCCESS) { - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - - if (!localOnly) { - if (connectionHandle != DM_CONN_ID_NONE) { - - // Check to see if this characteristic has a CCCD attribute - uint8_t idx; - for (idx = 0; idx < cccCnt; idx++) { - if (attributeHandle == cccHandles[idx]) { - break; - } - } - if (idx < cccCnt) { - // This characteristic has a CCCD attribute. Handle notifications and indications. - uint16_t cccEnabled = AttsCccEnabled(connectionHandle, idx); - if (cccEnabled & ATT_CLIENT_CFG_NOTIFY) { - AttsHandleValueNtf(connectionHandle, attributeHandle, len, (uint8_t*)buffer); - } - if (cccEnabled & ATT_CLIENT_CFG_INDICATE) { - AttsHandleValueInd(connectionHandle, attributeHandle, len, (uint8_t*)buffer); - } - } - } - } - - return BLE_ERROR_NONE; -} - -ble_error_t ArmGattServer::write(Gap::Handle_t connectionHandle, GattAttribute::Handle_t attributeHandle, const uint8_t buffer[], uint16_t len, bool localOnly) -{ - // Check to see if this is a CCCD - uint8_t idx; - for (idx = 0; idx < cccCnt; idx++) { - if (attributeHandle == cccSet[idx].handle) { - if ((connectionHandle == DM_CONN_ID_NONE) || (len != 2)) { // CCCDs are always 16 bits - return BLE_ERROR_PARAM_OUT_OF_RANGE; - } - AttsCccSet(connectionHandle, idx, *((uint16_t*)buffer)); - return BLE_ERROR_NONE; - } - } - - // This is not a CCCD. Use the non-connection specific update method. - return write(attributeHandle, buffer, len, localOnly); -} - -ble_error_t ArmGattServer::areUpdatesEnabled(const GattCharacteristic &characteristic, bool *enabledP) -{ - uint16_t connectionHandle = ArmGap::getInstance().getConnectionHandle(); - - if (connectionHandle != DM_CONN_ID_NONE) { - uint8_t idx; - for (idx = 0; idx < cccCnt; idx++) { - if (characteristic.getValueHandle() == cccHandles[idx]) { - uint16_t cccValue = AttsCccGet(connectionHandle, idx); - if (cccValue & ATT_CLIENT_CFG_NOTIFY) { - *enabledP = true; - } else { - *enabledP = false; - } - return BLE_ERROR_NONE; - } - } - } - - return BLE_ERROR_PARAM_OUT_OF_RANGE; -} - -ble_error_t ArmGattServer::areUpdatesEnabled(Gap::Handle_t connectionHandle, const GattCharacteristic &characteristic, bool *enabledP) -{ - if (connectionHandle != DM_CONN_ID_NONE) { - uint8_t idx; - for (idx = 0; idx < cccCnt; idx++) { - if (characteristic.getValueHandle() == cccHandles[idx]) { - uint16_t cccValue = AttsCccGet(connectionHandle, idx); - if (cccValue & ATT_CLIENT_CFG_NOTIFY) { - *enabledP = true; - } else { - *enabledP = false; - } - return BLE_ERROR_NONE; - } - } - } - - return BLE_ERROR_PARAM_OUT_OF_RANGE; -} - -void ArmGattServer::cccCback(attsCccEvt_t *pEvt) -{ - if (pEvt->value & (ATT_CLIENT_CFG_NOTIFY | ATT_CLIENT_CFG_INDICATE)) { - getInstance().handleEvent(GattServerEvents::GATT_EVENT_UPDATES_ENABLED, pEvt->handle); - } else { - getInstance().handleEvent(GattServerEvents::GATT_EVENT_UPDATES_DISABLED, pEvt->handle); - } -} - -void ArmGattServer::attCback(attEvt_t *pEvt) -{ - if (pEvt->hdr.status == ATT_SUCCESS) { - getInstance().handleEvent(GattServerEvents::GATT_EVENT_DATA_SENT, pEvt->handle); - } -} - -uint8_t ArmGattServer::attsReadCback(dmConnId_t connId, uint16_t handle, uint8_t operation, uint16_t offset, attsAttr_t *pAttr) -{ - GattReadCallbackParams cbParams = { - /* .connHandle = */ connId, - /* .handle = */ handle, - /* .offset = */ offset, - /* .len = */ *pAttr->pLen, - /* .data = */ pAttr->pValue - }; - getInstance().handleDataReadEvent(&cbParams); - - return ATT_SUCCESS; -} - -uint8_t ArmGattServer::attsWriteCback(dmConnId_t connId, uint16_t handle, uint8_t operation, uint16_t offset, uint16_t len, uint8_t *pValue, attsAttr_t *pAttr) -{ - uint8_t err; - - /* TODO: offset is not handled properly */ - if ((err = AttsSetAttr(handle, len, pValue)) != ATT_SUCCESS) { - return err; - } - - GattWriteCallbackParams::WriteOp_t writeOp; - switch (operation) { - case ATT_PDU_WRITE_REQ: - writeOp = GattWriteCallbackParams::OP_WRITE_REQ; - break; - case ATT_PDU_WRITE_CMD: - writeOp = GattWriteCallbackParams::OP_WRITE_CMD; - break; - case ATT_PDU_SIGNED_WRITE_CMD: - writeOp = GattWriteCallbackParams::OP_SIGN_WRITE_CMD; - break; - case ATT_PDU_PREP_WRITE_REQ: - writeOp = GattWriteCallbackParams::OP_PREP_WRITE_REQ; - break; - case ATT_PDU_EXEC_WRITE_REQ: - writeOp = GattWriteCallbackParams::OP_EXEC_WRITE_REQ_NOW; - break; - default: - writeOp = GattWriteCallbackParams::OP_INVALID; - break; - } - - GattWriteCallbackParams cbParams = { - /* .connHandle = */ connId, - /* .handle = */ handle, - /* .writeOp = */ writeOp, - /* .offset = */ offset, - /* .len = */ len, - /* .data = */ pValue - }; - getInstance().handleDataWrittenEvent(&cbParams); - - return ATT_SUCCESS; -} diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioBLE.h b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioBLE.h index a8083c3bbe7..57596f121a0 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioBLE.h +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioBLE.h @@ -107,6 +107,13 @@ class BLE : public ::BLEInstanceBase { */ virtual generic::GenericGattClient &getGattClient(); + /** + * Get the PAL Gatt Client. + * + * @return PAL Gatt Client. + */ + pal::AttClientToGattClientAdapter &getPalGattClient(); + /** * @see BLEInstanceBase::getSecurityManager */ diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioGattServer.h b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioGattServer.h index bb9da0dbe50..4979ce62499 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioGattServer.h +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioGattServer.h @@ -62,6 +62,10 @@ class GattServer : public ::GattServer, */ static GattServer &getInstance(); + ::GattServer::EventHandler* getEventHandler() { + return eventHandler; + } + /** * Initialize the GattServer and add mandatory services (generic access and * generic attribute service). diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioPalAttClient.h b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioPalAttClient.h index cff00fceea8..f6463022838 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioPalAttClient.h +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioPalAttClient.h @@ -22,6 +22,10 @@ #include "ble/pal/SimpleAttServerMessage.h" #include "att_api.h" #include "att_defs.h" +#include "ble/pal/PalGap.h" +#include "CordioPalGap.h" +#include "PalGattClient.h" +#include "CordioBLE.h" namespace ble { namespace pal { @@ -316,44 +320,7 @@ class CordioAttClient : public ::ble::pal::AttClient { /** * Callback which handle attEvt_t and forward them to on_server_event. */ - static void att_client_handler(const attEvt_t* event) - { - // all handlers are stored in a static array - static const event_handler_t handlers[] = { - &timeout_event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler, - &event_handler - }; - - // event->hdr.param: connection handle - // event->header.event: opcode from the request - // event->header.status: success or error code ... - // event->pValue: starting after opcode for response; starting after opcode + handle for server initiated responses. - // event->handle: handle for server initiated responses - - // traverse all handlers and execute them with the event in input. - // exit if an handler has handled the event. - for(size_t i = 0; i < (sizeof(handlers)/sizeof(handlers[0])); ++i) { - if (handlers[i](event)) { - return; - } - } - - // pass events not handled to the server side - ble::vendor::cordio::GattServer::getInstance().att_cb(event); - } + static void att_client_handler(const attEvt_t* event); private: /** @@ -433,25 +400,6 @@ class CordioAttClient : public ::ble::pal::AttClient { } }; - /** - * Converter for an AttExchangeMTUResponse. - */ - struct ExchangeMtuResponseConverter { - static bool can_convert(const attEvt_t* event) - { - if(event->hdr.status == ATT_SUCCESS && - event->hdr.event == ATT_MTU_UPDATE_IND) { - return true; - } - return false; - } - - static AttExchangeMTUResponse convert(const attEvt_t* event) - { - return AttExchangeMTUResponse(event->mtu); - } - }; - /** * Converter for a SimpleAttFindInformationResponse. */ diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/README.md b/features/FEATURE_BLE/targets/TARGET_CORDIO/README.md index 82a93bdf7bf..1f1c8a8bed8 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/README.md +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/README.md @@ -21,6 +21,11 @@ implementation. * `cordio_stack`: Headers and sources of the cordio stack * `mbed_os_adaptation`: Headers of the interface responsible for the bridge between BLE API and the Cordio stack. + +## Build time configuration + +Build time configuration may be controlled through options set in: +`features\FEATURE_BLE\targets\TARGET_CORDIO\mbed_lib.json` ## Documentation diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/mbed_lib.json b/features/FEATURE_BLE/targets/TARGET_CORDIO/mbed_lib.json new file mode 100644 index 00000000000..cd868d130ab --- /dev/null +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/mbed_lib.json @@ -0,0 +1,58 @@ +{ + "name": "cordio", + "config": { + "max-connections": { + "help": "Maximum number of connections", + "value": 3, + "macro_name": "DM_CONN_MAX" + }, + "max-syncs": { + "help": "Maximum number of periodic advertising synchronizations", + "value": 1, + "macro_name": "DM_SYNC_MAX" + }, + "max-advertising-sets": { + "help": "Number of supported advertising sets: must be set to 1 for legacy advertising", + "value": 3, + "macro_name": "DM_NUM_ADV_SETS" + }, + "max-phys": { + "help": "Number of scanner and initiator PHYs (LE 1M, LE 2M and LE Coded): must be set to 1 for legacy scanner and initiator", + "value": 3, + "macro_name": "DM_NUM_PHYS" + }, + "max-l2cap-channels": { + "help": "Maximum number of connection oriented channels", + "value": 8, + "macro_name": "L2C_COC_CHAN_MAX" + }, + "max-l2cap-clients": { + "help": "Maximum number of connection oriented channel registered clients", + "value": 4, + "macro_name": "L2C_COC_REG_MAX" + }, + "max-att-writes": { + "help": "Maximum number of simultaneous ATT write commands", + "value": 1, + "macro_name": "ATT_NUM_SIMUL_WRITE_CMD" + }, + "max-att-notifications": { + "help": "Maximum number of simultaneous ATT notifications", + "value": 1, + "macro_name": "ATT_NUM_SIMUL_NTF" + }, + "max-smp-devices": { + "help": "Max number of devices in the security database", + "value": 3, + "macro_name": "SMP_DB_MAX_DEVICES" + }, + "desired-att-mtu": { + "help": "Desired ATT_MTU, this needs to be between 23 and 517 (inclusive).", + "value": 23 + }, + "max-prepared-writes": { + "help": "Number of queued prepare writes supported by server.", + "value": 4 + } + } +} \ No newline at end of file diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioBLE.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioBLE.cpp index ba57e6bb969..de6dd0bd824 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioBLE.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioBLE.cpp @@ -199,13 +199,19 @@ const GattServer& BLE::getGattServer() const } generic::GenericGattClient& BLE::getGattClient() +{ + static generic::GenericGattClient gatt_client(&getPalGattClient()); + + return gatt_client; +} + +pal::AttClientToGattClientAdapter& BLE::getPalGattClient() { static pal::AttClientToGattClientAdapter pal_client( pal::vendor::cordio::CordioAttClient::get_client() ); - static generic::GenericGattClient client(&pal_client); - return client; + return pal_client; } SecurityManager& BLE::getSecurityManager() @@ -286,6 +292,20 @@ void BLE::processEvents() void BLE::device_manager_cb(dmEvt_t* dm_event) { + if (dm_event->hdr.status == HCI_SUCCESS && dm_event->hdr.event == DM_CONN_DATA_LEN_CHANGE_IND) { + // this event can only happen after a connection has been established therefore gap is present + ble::pal::Gap::EventHandler *handler; + handler = ble::pal::vendor::cordio::Gap::get_gap().get_event_handler(); + if (handler) { + handler->on_data_length_change( + dm_event->hdr.param, + dm_event->dataLenChange.maxTxOctets, + dm_event->dataLenChange.maxRxOctets + ); + } + return; + } + BLE::deviceInstance().stack_handler(0, &dm_event->hdr); } diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioGattServer.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioGattServer.cpp index 8a096aab268..eac480d07f9 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; @@ -849,7 +849,12 @@ void GattServer::cccd_cb(attsCccEvt_t *evt) void GattServer::att_cb(const attEvt_t *evt) { - if (evt->hdr.status == ATT_SUCCESS && evt->hdr.event == ATTS_HANDLE_VALUE_CNF) { + if (evt->hdr.status == ATT_SUCCESS && evt->hdr.event == ATT_MTU_UPDATE_IND) { + ::GattServer::EventHandler *handler = getInstance().getEventHandler(); + if (handler) { + handler->onAttMtuChange(evt->hdr.param, evt->mtu); + } + } else if (evt->hdr.status == ATT_SUCCESS && evt->hdr.event == ATTS_HANDLE_VALUE_CNF) { getInstance().handleEvent(GattServerEvents::GATT_EVENT_DATA_SENT, evt->handle); } } diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalAttClient.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalAttClient.cpp new file mode 100644 index 00000000000..aa0786dec1b --- /dev/null +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalAttClient.cpp @@ -0,0 +1,75 @@ +/* mbed Microcontroller Library + * 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. + */ + +#include "CordioPalAttClient.h" +#include "CordioBLE.h" + +namespace ble { +namespace pal { +namespace vendor { +namespace cordio { + +void CordioAttClient::att_client_handler(const attEvt_t* event) +{ + if (event->hdr.status == ATT_SUCCESS && event->hdr.event == ATT_MTU_UPDATE_IND) { + ble::vendor::cordio::BLE& ble = ble::vendor::cordio::BLE::deviceInstance(); + ble::pal::GattClient::EventHandler *handler = ble.getPalGattClient().get_event_handler(); + if (handler) { + handler->on_att_mtu_change(event->hdr.param, event->mtu); + } + } else { + // all handlers are stored in a static array + static const event_handler_t handlers[] = { + &timeout_event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler, + &event_handler + }; + + // event->hdr.param: connection handle + // event->header.event: opcode from the request + // event->header.status: success or error code ... + // event->pValue: starting after opcode for response; starting after opcode + handle for server initiated responses. + // event->handle: handle for server initiated responses + + // traverse all handlers and execute them with the event in input. + // exit if an handler has handled the event. + for(size_t i = 0; i < (sizeof(handlers)/sizeof(handlers[0])); ++i) { + if (handlers[i](event)) { + return; + } + } + } + + // pass events not handled to the server side + ble::vendor::cordio::GattServer::getInstance().att_cb(event); +} + +} // cordio +} // vendor +} // pal +} // ble 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.c b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/cfg/cfg_stack.c index 78a756b753c..572405d0a9d 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/cfg/cfg_stack.c +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/stack/cordio_stack/ble-host/sources/stack/cfg/cfg_stack.c @@ -62,13 +62,17 @@ l2cCfg_t *pL2cCfg = &l2cCfg; ATT **************************************************************************************************/ +#if MBED_CONF_CORDIO_DESIRED_ATT_MTU < ATT_DEFAULT_MTU || MBED_CONF_CORDIO_DESIRED_ATT_MTU > ATT_MAX_MTU +#error "CORDIO_CFG_DESIRED_ATT_MTU value is outside valid range" +#endif + /* Configuration structure */ attCfg_t attCfg = { - 15, /* ATT server service discovery connection idle timeout in seconds */ - ATT_DEFAULT_MTU, /* desired ATT MTU */ - ATT_MAX_TRANS_TIMEOUT, /* transcation timeout in seconds */ - 4 /* number of queued prepare writes supported by server */ + 15, /* ATT server service discovery connection idle timeout in seconds */ + MBED_CONF_CORDIO_DESIRED_ATT_MTU, /* desired ATT MTU */ + ATT_MAX_TRANS_TIMEOUT, /* transaction timeout in seconds */ + MBED_CONF_CORDIO_MAX_PREPARED_WRITES /* number of queued prepare writes supported by server */ }; /* Configuration pointer */ 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_Cypress/TARGET_CYW43XXX/HCIDriver.cpp b/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CYW43XXX/HCIDriver.cpp new file mode 100644 index 00000000000..c5539aa4da9 --- /dev/null +++ b/features/FEATURE_BLE/targets/TARGET_Cypress/TARGET_CYW43XXX/HCIDriver.cpp @@ -0,0 +1,445 @@ +/* + * 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 uint8_t post_brcm_patchram_buf[] = { + // RESET cmd + 0x03, 0x0C, 0x00, +}; + +static const int pre_brcm_patch_ram_length = sizeof(pre_brcm_patchram_buf); +static const int post_brcm_patch_ram_length = sizeof(post_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::post_service_pack_transfert; + service_pack_index = 0; + service_pack_transfered = false; + send_service_pack_command(); + } + + // Called once brcm_patchram_buf has been transferred; send post_brcm_patchram_buf + void post_service_pack_transfert(void) + { + service_pack_ptr = post_brcm_patchram_buf; + service_pack_length = post_brcm_patch_ram_length; + service_pack_next = &HCIDriver::terminate_service_pack_transfert;; + service_pack_index = 0; + service_pack_transfered = false; + wait_ms(1000); + 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; + 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_SOFTDEVICE/TARGET_MCU_NRF51822/source/nRF5xGattServer.h b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/source/nRF5xGattServer.h index b2e5f87dea3..7cd58b1cf42 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/source/nRF5xGattServer.h +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_MCU_NRF51822/source/nRF5xGattServer.h @@ -41,6 +41,9 @@ class nRF5xGattServer : public GattServer void eventCallback(void); void hwCallback(ble_evt_t *p_ble_evt); + EventHandler* getEventHandler() { + return eventHandler; + } private: const static unsigned BLE_TOTAL_CHARACTERISTICS = 20; diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/source/nRF5xGattServer.h b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/source/nRF5xGattServer.h index 6be90ff7333..8069c8c5e9d 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/source/nRF5xGattServer.h +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF51/source/nRF5xGattServer.h @@ -41,6 +41,9 @@ class nRF5xGattServer : public GattServer void eventCallback(void); void hwCallback(const ble_evt_t *p_ble_evt); + EventHandler* getEventHandler() { + return eventHandler; + } private: const static unsigned BLE_TOTAL_CHARACTERISTICS = 20; 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 a0ce8bbeb9d..7fc6bba930b 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 @@ -26,6 +26,7 @@ #include "ble/GapEvents.h" #include "nRF5xn.h" +#include #ifdef S110 #define IS_LEGACY_DEVICE_MANAGER_ENABLED 1 @@ -112,7 +113,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 +122,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; @@ -334,24 +335,25 @@ void btle_handler(const ble_evt_t *p_ble_evt) #if (NRF_SD_BLE_API_VERSION >= 5) #ifndef S140 // Handle PHY upgrade request - case BLE_GAP_EVT_PHY_UPDATE_REQUEST: + case BLE_GAP_EVT_PHY_UPDATE_REQUEST: { gap.on_phy_update_request( p_ble_evt->evt.gap_evt.conn_handle, p_ble_evt->evt.gap_evt.params.phy_update_request ); break; + } #endif - case BLE_GAP_EVT_PHY_UPDATE: + case BLE_GAP_EVT_PHY_UPDATE: { gap.on_phy_update( p_ble_evt->evt.gap_evt.conn_handle, p_ble_evt->evt.gap_evt.params.phy_update ); break; + } - // Handle Data length negotiation request - case BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST: - { - ble_gap_evt_t const * p_gap_evt = &p_ble_evt->evt.gap_evt; + // Handle Data length negotiation request + case BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST: { + ble_gap_evt_t const * p_gap_evt = &p_ble_evt->evt.gap_evt; uint8_t const data_length_peer = p_gap_evt->params.data_length_update_request.peer_params.max_tx_octets; @@ -360,23 +362,70 @@ void btle_handler(const ble_evt_t *p_ble_evt) data_length_peer ); - ble_gap_data_length_params_t const dlp = - { - /* max_rx_octets */ data_length, - /* max_tx_octets */ data_length + ble_gap_data_length_params_t const dlp = { + /* max_rx_octets */data_length, + /* max_tx_octets */data_length }; ASSERT_STATUS_RET_VOID(sd_ble_gap_data_length_update(p_gap_evt->conn_handle, &dlp, NULL)); - break; + break; + } + + // Handle Data length negotiation result + case BLE_GAP_EVT_DATA_LENGTH_UPDATE: { + /* inform user application */ + if (gap._eventHandler) { + Gap::Handle_t connection = p_ble_evt->evt.gap_evt.conn_handle; + const ble_gap_evt_data_length_update_t &update = + p_ble_evt->evt.gap_evt.params.data_length_update; + + gap._eventHandler->onDataLengthChange( + connection, + update.effective_params.max_tx_octets, + update.effective_params.max_rx_octets + ); + } + break; } - // Handle MTU exchange request - case BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST: - { - // Respond with the server MTU - uint16_t conn_handle = p_ble_evt->evt.gatts_evt.conn_handle; + case BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST: { + /* Respond with the server MTU */ + uint16_t conn_handle = p_ble_evt->evt.gatts_evt.conn_handle; ASSERT_STATUS_RET_VOID(sd_ble_gatts_exchange_mtu_reply(conn_handle, NRF_SDH_BLE_GATT_MAX_MTU_SIZE)); - break; + + /* inform user application */ + if (gap._eventHandler) { + Gap::Handle_t connection = p_ble_evt->evt.gap_evt.conn_handle; + const ble_gatts_evt_exchange_mtu_request_t &update = + p_ble_evt->evt.gatts_evt.params.exchange_mtu_request; + + nRF5xGattServer &gatt_server = (nRF5xGattServer&) ble.getGattServer(); + if (gatt_server.getEventHandler()) { + gatt_server.getEventHandler()->onAttMtuChange( + connection, + std::min(NRF_SDH_BLE_GATT_MAX_MTU_SIZE, (int)(update.client_rx_mtu)) + ); + } + } + break; + } + + case BLE_GATTC_EVT_EXCHANGE_MTU_RSP: { + /* inform user application */ + if (gap._eventHandler) { + Gap::Handle_t connection = p_ble_evt->evt.gap_evt.conn_handle; + const ble_gattc_evt_exchange_mtu_rsp_t &update = + p_ble_evt->evt.gattc_evt.params.exchange_mtu_rsp; + + nRF5xGattClient &gatt_client = (nRF5xGattClient&) ble.getGattClient(); + if (gatt_client.get_event_handler()) { + gatt_client.get_event_handler()->on_att_mtu_change( + connection, + std::min(NRF_SDH_BLE_GATT_MAX_MTU_SIZE, (int)(update.server_rx_mtu)) + ); + } + } + break; } #endif case BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST: { diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGattServer.h b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGattServer.h index 253c2d14467..270a211ac27 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGattServer.h +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_SOFTDEVICE/TARGET_NRF52/source/nRF5xGattServer.h @@ -41,6 +41,9 @@ class nRF5xGattServer : public GattServer void eventCallback(void); void hwCallback(const ble_evt_t *p_ble_evt); + EventHandler* getEventHandler() { + return eventHandler; + } private: const static unsigned BLE_TOTAL_CHARACTERISTICS = NRF_SDH_BLE_TOTAL_CHARACTERISTICS; 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 01126720b4e..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 @@ -107,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; } @@ -943,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 100% rename from features/FEATURE_BLE/targets/TARGET_CYW4343X/HCIDriver.cpp rename to features/FEATURE_BLE/targets/TARGET_STM/TARGET_CYW4343X/HCIDriver.cpp diff --git a/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L475xG/TARGET_DISCO_L475VG_IOT01A/mbed-bootloader-internal_dfb7cc.bin b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L475xG/TARGET_DISCO_L475VG_IOT01A/mbed-bootloader-internal_dfb7cc.bin index 00fd19b5a7f..54f2289a33b 100644 Binary files a/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L475xG/TARGET_DISCO_L475VG_IOT01A/mbed-bootloader-internal_dfb7cc.bin and b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L475xG/TARGET_DISCO_L475VG_IOT01A/mbed-bootloader-internal_dfb7cc.bin differ diff --git a/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L475xG/TARGET_DISCO_L475VG_IOT01A/mbed_lib.json b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L475xG/TARGET_DISCO_L475VG_IOT01A/mbed_lib.json index 99c40b08986..26f63ad4a30 100644 --- a/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L475xG/TARGET_DISCO_L475VG_IOT01A/mbed_lib.json +++ b/features/FEATURE_BOOTLOADER/targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L475xG/TARGET_DISCO_L475VG_IOT01A/mbed_lib.json @@ -2,8 +2,8 @@ "name": "bootloader_DISCO_L475VG_IOT01A", "target_overrides": { "*": { - "target.app_offset": "0x9800", - "target.header_offset": "0x9000", + "target.app_offset": "0x10400", + "target.header_offset": "0x10000", "target.bootloader_img": "mbed-bootloader-internal_dfb7cc.bin" } } diff --git a/features/cellular/TESTS/api/cellular_device/main.cpp b/features/cellular/TESTS/api/cellular_device/main.cpp index 9246e3e112f..f300fa677a0 100644 --- a/features/cellular/TESTS/api/cellular_device/main.cpp +++ b/features/cellular/TESTS/api/cellular_device/main.cpp @@ -15,16 +15,12 @@ * limitations under the License. */ - #if !defined(MBED_CONF_NSAPI_PRESENT) #error [NOT_SUPPORTED] A json configuration file is needed. Skipping this build. #endif -#include "CellularUtil.h" // for CELLULAR_ helper macros -#include "CellularTargets.h" - -#ifndef CELLULAR_DEVICE -#error [NOT_SUPPORTED] CELLULAR_DEVICE must be defined +#ifndef MBED_CONF_APP_CELLULAR_SIM_PIN +#error [NOT_SUPPORTED] SIM pin code is needed. Skipping this build. #endif #include "greentea-client/test_env.h" @@ -35,41 +31,47 @@ #include "CellularLog.h" #include "CellularDevice.h" -#include CELLULAR_STRINGIFY(CELLULAR_DEVICE.h) +#include "Semaphore.h" +#include "../../cellular_tests_common.h" -static UARTSerial cellular_serial(MDMTXD, MDMRXD, MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE); static CellularDevice *device; +static rtos::Semaphore semaphore; + + +const int TIME_OUT_DEVICE_READY = 5 * 60 * 1000; // 5 minutes +const int TIME_OUT_REGISTER = 10 * 60 * 1000; // 10 minutes + +enum CurrentOp { + OP_DEVICE_READY, + OP_SIM_READY, + OP_REGISTER, + OP_ATTACH +}; +static CurrentOp op; static void create_device() { - device = new CELLULAR_DEVICE(&cellular_serial); + device = CellularDevice::get_default_instance(); TEST_ASSERT(device != NULL); } static void open_close_interfaces() { - CellularNetwork *nw = device->open_network(&cellular_serial); + CellularNetwork *nw = device->open_network(); TEST_ASSERT(nw != NULL); device->close_network(); - CellularSIM *sim = device->open_sim(&cellular_serial); - TEST_ASSERT(sim != NULL); - device->close_sim(); - - CellularInformation *info = device->open_information(&cellular_serial); + CellularInformation *info = device->open_information(); TEST_ASSERT(info != NULL); device->close_information(); - CellularPower *power = device->open_power(&cellular_serial); - TEST_ASSERT(power != NULL); - device->close_power(); - - CellularSMS *sms = device->open_sms(&cellular_serial); + CellularSMS *sms = device->open_sms(); TEST_ASSERT(sms != NULL); device->close_sms(); CellularContext *ctx = device->create_context(); TEST_ASSERT(ctx != NULL); + TEST_ASSERT(device->get_context_list() == ctx); device->delete_context(ctx); } @@ -80,26 +82,109 @@ static void other_methods() device->modem_debug_on(true); device->modem_debug_on(false); - CellularNetwork *nw = device->open_network(&cellular_serial); + CellularNetwork *nw = device->open_network(); TEST_ASSERT(nw != NULL); - // then test witj open interface which is called + // then test with open interface which is called device->set_timeout(5000); device->modem_debug_on(true); device->modem_debug_on(false); + + TEST_ASSERT(device->get_queue() != NULL); + TEST_ASSERT(device->hard_power_on() == NSAPI_ERROR_OK); + TEST_ASSERT(device->soft_power_on() == NSAPI_ERROR_OK); + wait(5); + TEST_ASSERT_EQUAL_INT(device->init(), NSAPI_ERROR_OK); +} + +static void shutdown() +{ + TEST_ASSERT(device->shutdown() == NSAPI_ERROR_OK); + TEST_ASSERT(device->soft_power_off() == NSAPI_ERROR_OK); + TEST_ASSERT(device->hard_power_off() == NSAPI_ERROR_OK); +} + +static void callback_func(nsapi_event_t ev, intptr_t ptr) +{ + if (ev >= NSAPI_EVENT_CELLULAR_STATUS_BASE && ev <= NSAPI_EVENT_CELLULAR_STATUS_END) { + cell_callback_data_t *ptr_data = (cell_callback_data_t *)ptr; + cellular_connection_status_t cell_ev = (cellular_connection_status_t)ev; + if (cell_ev == CellularDeviceReady && ptr_data->error == NSAPI_ERROR_OK && op == OP_DEVICE_READY) { + TEST_ASSERT_EQUAL_INT(semaphore.release(), osOK); + } else if (cell_ev == CellularSIMStatusChanged && ptr_data->error == NSAPI_ERROR_OK && + ptr_data->status_data == CellularDevice::SimStateReady && op == OP_SIM_READY) { + TEST_ASSERT_EQUAL_INT(semaphore.release(), osOK); + } else if (cell_ev == CellularRegistrationStatusChanged && + (ptr_data->status_data == CellularNetwork::RegisteredHomeNetwork || + ptr_data->status_data == CellularNetwork::RegisteredRoaming || + ptr_data->status_data == CellularNetwork::AlreadyRegistered) && + ptr_data->error == NSAPI_ERROR_OK && + op == OP_REGISTER) { + TEST_ASSERT_EQUAL_INT(semaphore.release(), osOK); + } else if (cell_ev == CellularAttachNetwork && ptr_data->status_data == CellularNetwork::Attached && + ptr_data->error == NSAPI_ERROR_OK && op == OP_ATTACH) { + TEST_ASSERT_EQUAL_INT(semaphore.release(), osOK); + } + } +} + +static void init_to_device_ready_state() +{ + device = CellularDevice::get_default_instance(); + TEST_ASSERT(device != NULL); + +#ifdef MBED_CONF_APP_CELLULAR_SIM_PIN + device->set_sim_pin(MBED_CONF_APP_CELLULAR_SIM_PIN); +#endif +#ifdef MBED_CONF_APP_CELLULAR_PLMN + device->set_plmn(MBED_CONF_APP_CELLULAR_PLMN); +#endif + device->attach(&callback_func); + + op = OP_DEVICE_READY; + TEST_ASSERT_EQUAL_INT(NSAPI_ERROR_OK, device->hard_power_on()); + TEST_ASSERT_EQUAL_INT(NSAPI_ERROR_OK, device->soft_power_on()); + TEST_ASSERT_EQUAL_INT(NSAPI_ERROR_OK, device->init()); + TEST_ASSERT_EQUAL_INT(NSAPI_ERROR_OK, device->set_device_ready()); + + int sema_err = semaphore.wait(TIME_OUT_DEVICE_READY); + TEST_ASSERT_EQUAL_INT(1, sema_err); +} + +static void continue_to_sim_ready_state() +{ + op = OP_SIM_READY; + TEST_ASSERT_EQUAL_INT(NSAPI_ERROR_OK, device->set_sim_ready()); + + int sema_err = semaphore.wait(TIME_OUT_DEVICE_READY); + TEST_ASSERT_EQUAL_INT(1, sema_err); } -static void delete_device() +static void continue_to_register_state() { - // delete will close all opened interfaces - delete device; - device = NULL; + op = OP_REGISTER; + TEST_ASSERT_EQUAL_INT(NSAPI_ERROR_OK, device->register_to_network()); + + int sema_err = semaphore.wait(TIME_OUT_REGISTER); // cellular network searching may take several minutes + TEST_ASSERT_EQUAL_INT(1, sema_err); +} + +static void continue_to_attach_state() +{ + op = OP_ATTACH; + TEST_ASSERT_EQUAL_INT(NSAPI_ERROR_OK, device->attach_to_network()); + + int sema_err = semaphore.wait(TIME_OUT_REGISTER); // cellular network attach may take several minutes + TEST_ASSERT_EQUAL_INT(1, sema_err); } using namespace utest::v1; static utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) { +#if MBED_CONF_MBED_TRACE_ENABLE + trace_close(); +#endif greentea_case_failure_abort_handler(source, reason); return STATUS_ABORT; } @@ -108,7 +193,11 @@ static Case cases[] = { Case("CellularDevice create device", create_device, greentea_failure_handler), Case("CellularDevice Open and close interfaces", open_close_interfaces, greentea_failure_handler), Case("CellularDevice other methods", other_methods, greentea_failure_handler), - Case("CellularDevice delete device", delete_device, greentea_failure_handler) + Case("CellularDevice init to device ready", init_to_device_ready_state, greentea_failure_handler), + Case("CellularDevice sim ready", continue_to_sim_ready_state, greentea_failure_handler), + Case("CellularDevice register", continue_to_register_state, greentea_failure_handler), + Case("CellularDevice attach", continue_to_attach_state, greentea_failure_handler), + Case("CellularDevice shutdown", shutdown, greentea_failure_handler), }; static utest::v1::status_t test_setup(const size_t number_of_cases) @@ -121,8 +210,14 @@ static Specification specification(test_setup, cases); int main() { - mbed_trace_init(); +#if MBED_CONF_MBED_TRACE_ENABLE + trace_open(); +#endif - return Harness::run(specification); + int ret = Harness::run(specification); +#if MBED_CONF_MBED_TRACE_ENABLE + trace_close(); +#endif + return ret; } diff --git a/features/cellular/TESTS/api/cellular_information/main.cpp b/features/cellular/TESTS/api/cellular_information/main.cpp index 942da3177fd..8865bc920f3 100644 --- a/features/cellular/TESTS/api/cellular_information/main.cpp +++ b/features/cellular/TESTS/api/cellular_information/main.cpp @@ -23,10 +23,6 @@ #include "CellularUtil.h" // for CELLULAR_ helper macros #include "CellularTargets.h" -#ifndef CELLULAR_DEVICE -#error [NOT_SUPPORTED] CELLULAR_DEVICE must be defined -#endif - #ifndef MBED_CONF_APP_CELLULAR_SIM_PIN #error [NOT_SUPPORTED] SIM pin code is needed. Skipping this build. #endif @@ -80,6 +76,12 @@ static void test_information_interface() err = info->get_serial_number(buf, kbuf_size, CellularInformation::SVN); TEST_ASSERT(err == NSAPI_ERROR_UNSUPPORTED || err == NSAPI_ERROR_OK); + err = info->get_imsi(buf, kbuf_size); + TEST_ASSERT(err == NSAPI_ERROR_UNSUPPORTED || err == NSAPI_ERROR_OK); + + err = info->get_iccid(buf, kbuf_size); + TEST_ASSERT(err == NSAPI_ERROR_UNSUPPORTED || err == NSAPI_ERROR_OK); + dev->close_information(); delete [] buf; diff --git a/features/cellular/TESTS/api/cellular_network/main.cpp b/features/cellular/TESTS/api/cellular_network/main.cpp index a4988f90e16..73930b1013d 100644 --- a/features/cellular/TESTS/api/cellular_network/main.cpp +++ b/features/cellular/TESTS/api/cellular_network/main.cpp @@ -20,21 +20,10 @@ #error [NOT_SUPPORTED] A json configuration file is needed. Skipping this build. #endif -#include "CellularUtil.h" // for CELLULAR_ helper macros -#include "CellularTargets.h" - -#ifndef CELLULAR_DEVICE -#error [NOT_SUPPORTED] CELLULAR_DEVICE must be defined -#endif - #ifndef MBED_CONF_APP_CELLULAR_SIM_PIN #error [NOT_SUPPORTED] SIM pin code is needed. Skipping this build. #endif -#if defined(TARGET_ADV_WISE_1570) || defined(TARGET_MTB_ADV_WISE_1570) -#error [NOT_SUPPORTED] target MTB_ADV_WISE_1570 is too unstable for network tests, IoT network is unstable -#endif - #include "greentea-client/test_env.h" #include "unity.h" #include "utest.h" @@ -45,7 +34,6 @@ #include "CellularContext.h" #include "CellularDevice.h" #include "../../cellular_tests_common.h" -#include CELLULAR_STRINGIFY(CELLULAR_DEVICE.h) #define NETWORK_TIMEOUT (180*1000) @@ -165,7 +153,6 @@ static void test_attach() static void test_other() { - const char *devi = CELLULAR_STRINGIFY(CELLULAR_DEVICE); TEST_ASSERT(nw->get_3gpp_error() == 0); nsapi_error_t err = nw->set_access_technology(CellularNetwork::RAT_GSM); @@ -180,32 +167,14 @@ static void test_other() TEST_ASSERT(nw->scan_plmn(operators, uplinkRate) == NSAPI_ERROR_OK); device->set_timeout(10 * 1000); - int rxlev = -1, ber = -1, rscp = -1, ecno = -1, rsrq = -1, rsrp = -1; - err = nw->get_extended_signal_quality(rxlev, ber, rscp, ecno, rsrq, rsrp); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR); - if (err == NSAPI_ERROR_DEVICE_ERROR) { - if (strcmp(devi, "QUECTEL_BG96") != 0 && strcmp(devi, "TELIT_HE910") != 0) {// QUECTEL_BG96 does not give any specific reason for device error - TEST_ASSERT((((AT_CellularNetwork *)nw)->get_device_error().errType == 3) && // 3 == CME error from the modem - ((((AT_CellularNetwork *)nw)->get_device_error().errCode == 100) || // 100 == unknown command for modem - (((AT_CellularNetwork *)nw)->get_device_error().errCode == 50))); // 50 == incorrect parameters // seen in wise_1570 for not supported commands - } - } else { - // we should have some values which are not optional - TEST_ASSERT(rxlev >= 0 && ber >= 0 && rscp >= 0 && ecno >= 0 && rsrq >= 0 && rsrp >= 0); - } - int rssi = -1; - ber = -1; - err = nw->get_signal_quality(rssi, ber); + int ber = -1; + err = nw->get_signal_quality(rssi, &ber); TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR); if (err == NSAPI_ERROR_DEVICE_ERROR) { TEST_ASSERT((((AT_CellularNetwork *)nw)->get_device_error().errType == 3) && // 3 == CME error from the modem ((((AT_CellularNetwork *)nw)->get_device_error().errCode == 100) || // 100 == unknown command for modem (((AT_CellularNetwork *)nw)->get_device_error().errCode == 50))); // 50 == incorrect parameters // seen in wise_1570 for not supported commands - } else { - // test for values - TEST_ASSERT(rssi >= 0); - TEST_ASSERT(ber >= 0); } CellularNetwork::registration_params_t reg_params; @@ -222,52 +191,14 @@ static void test_other() nsapi_connection_status_t st = nw->get_connection_status(); TEST_ASSERT(st == NSAPI_STATUS_DISCONNECTED); -#ifndef TARGET_UBLOX_C027 // AT command is supported, but excluded as it runs out of memory easily (there can be very many operator names) - if (strcmp(devi, "QUECTEL_BG96") != 0 && strcmp(devi, "SARA4_PPP") != 0) { - // QUECTEL_BG96 timeouts with this one, tested with 3 minute timeout - CellularNetwork::operator_names_list op_names; - err = nw->get_operator_names(op_names); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR); - if (err == NSAPI_ERROR_DEVICE_ERROR) { - // if device error then we must check was that really device error or that modem/network does not support the commands - TEST_ASSERT((((AT_CellularNetwork *)nw)->get_device_error().errType == 3) && // 3 == CME error from the modem - ((((AT_CellularNetwork *)nw)->get_device_error().errCode == 4) || // 4 == NOT SUPPORTED BY THE MODEM - (((AT_CellularNetwork *)nw)->get_device_error().errCode == 50))); // 50 == incorrect parameters // seen in wise_1570 for not supported commands - } else { - CellularNetwork::operator_names_t *opn = op_names.get_head(); - TEST_ASSERT(strlen(opn->numeric) > 0); - TEST_ASSERT(strlen(opn->alpha) > 0); - } - } -#endif - // TELIT_HE910 and QUECTEL_BG96 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command - CellularNetwork::Supported_UE_Opt supported_opt = CellularNetwork::SUPPORTED_UE_OPT_MAX; - CellularNetwork::Preferred_UE_Opt preferred_opt = CellularNetwork::PREFERRED_UE_OPT_MAX; - err = nw->get_ciot_optimization_config(supported_opt, preferred_opt); + CellularNetwork::CIoT_Supported_Opt supported_opt = CellularNetwork::CIOT_OPT_MAX; + CellularNetwork::CIoT_Preferred_UE_Opt preferred_opt = CellularNetwork::PREFERRED_UE_OPT_MAX; + err = nw->get_ciot_ue_optimization_config(supported_opt, preferred_opt); TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR); - if (err == NSAPI_ERROR_DEVICE_ERROR) { - // if device error then we must check was that really device error or that modem/network does not support the commands - if (!(strcmp(devi, "TELIT_HE910") == 0 || strcmp(devi, "QUECTEL_BG96") == 0 || strcmp(devi, "SARA4_PPP") == 0)) { - TEST_ASSERT((((AT_CellularNetwork *)nw)->get_device_error().errType == 3) && // 3 == CME error from the modem - ((((AT_CellularNetwork *)nw)->get_device_error().errCode == 100) || // 100 == unknown command for modem - (((AT_CellularNetwork *)nw)->get_device_error().errCode == 50))); // 50 == incorrect parameters // seen in wise_1570 for not supported commands - } - } else { - TEST_ASSERT(supported_opt != CellularNetwork::SUPPORTED_UE_OPT_MAX); - TEST_ASSERT(preferred_opt != CellularNetwork::PREFERRED_UE_OPT_MAX); - } - err = nw->set_ciot_optimization_config(supported_opt, preferred_opt); + err = nw->set_ciot_optimization_config(supported_opt, preferred_opt, NULL); TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR); - if (err == NSAPI_ERROR_DEVICE_ERROR) { - // if device error then we must check was that really device error or that modem/network does not support the commands - if (!(strcmp(devi, "TELIT_HE910") == 0 || strcmp(devi, "QUECTEL_BG96") == 0 || strcmp(devi, "SARA4_PPP") == 0)) { - TEST_ASSERT((((AT_CellularNetwork *)nw)->get_device_error().errType == 3) && // 3 == CME error from the modem - ((((AT_CellularNetwork *)nw)->get_device_error().errCode == 100) || // 100 == unknown command for modem - (((AT_CellularNetwork *)nw)->get_device_error().errCode == 50))); // 50 == incorrect parameters // seen in wise_1570 for not supported commands - } - } } static void test_detach() diff --git a/features/cellular/TESTS/api/cellular_power/main.cpp b/features/cellular/TESTS/api/cellular_power/main.cpp deleted file mode 100644 index 70d2ccba6d3..00000000000 --- a/features/cellular/TESTS/api/cellular_power/main.cpp +++ /dev/null @@ -1,145 +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. - */ - - -#if !defined(MBED_CONF_NSAPI_PRESENT) -#error [NOT_SUPPORTED] A json configuration file is needed. Skipping this build. -#endif - -#include "CellularUtil.h" // for CELLULAR_ helper macros -#include "CellularTargets.h" - -#ifndef CELLULAR_DEVICE -#error [NOT_SUPPORTED] CELLULAR_DEVICE must be defined -#endif - -#ifndef MBED_CONF_APP_CELLULAR_SIM_PIN -#error [NOT_SUPPORTED] SIM pin code is needed. Skipping this build. -#endif - -#include "greentea-client/test_env.h" -#include "unity.h" -#include "utest.h" - -#include "mbed.h" - -#include "AT_CellularPower.h" -#include "CellularDevice.h" -#include "../../cellular_tests_common.h" -#include CELLULAR_STRINGIFY(CELLULAR_DEVICE.h) - -#define NETWORK_TIMEOUT (180*1000) - -static CellularDevice *cellular_device; - -static void urc_callback() -{ -} - -static void wait_for_power(CellularPower *pwr) -{ - nsapi_error_t err = pwr->set_device_ready_urc_cb(&urc_callback); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED); - - int sanity_count = 0; - err = pwr->set_at_mode(); - while (err != NSAPI_ERROR_OK) { - sanity_count++; - wait(1); - TEST_ASSERT(sanity_count < 40); - err = pwr->set_at_mode(); - } - - TEST_ASSERT(pwr->is_device_ready() == NSAPI_ERROR_OK); - - pwr->remove_device_ready_urc_cb(&urc_callback); -} - -static void test_power_interface() -{ - const char *devi = CELLULAR_STRINGIFY(CELLULAR_DEVICE); - cellular_device = CellularDevice::get_default_instance(); - cellular_device->set_timeout(9000); - CellularPower *pwr = cellular_device->open_power(); - TEST_ASSERT(pwr != NULL); - - nsapi_error_t err = pwr->on(); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED); - wait_for_power(pwr); - - TEST_ASSERT(pwr->set_power_level(1, 0) == NSAPI_ERROR_OK); - - err = pwr->reset(); - TEST_ASSERT(err == NSAPI_ERROR_OK); - wait_for_power(pwr); - - wait(1); - err = pwr->opt_power_save_mode(0, 0); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR); - if (err == NSAPI_ERROR_DEVICE_ERROR) { - if (!(strcmp(devi, "TELIT_HE910") == 0 || strcmp(devi, "QUECTEL_BG96") == 0)) { // TELIT_HE910 and QUECTEL_BG96 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command - TEST_ASSERT(((AT_CellularPower *)pwr)->get_device_error().errCode == 100 && // 100 == unknown command for modem - ((AT_CellularPower *)pwr)->get_device_error().errType == 3); // 3 == CME error from the modem - } - } - - wait(1); - err = pwr->opt_receive_period(0, CellularPower::EDRXEUTRAN_NB_S1_mode, 3); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR); - if (err == NSAPI_ERROR_DEVICE_ERROR) { - if (!(strcmp(devi, "TELIT_HE910") == 0 || strcmp(devi, "QUECTEL_BG96") == 0)) { // TELIT_HE910 and QUECTEL_BG96 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command - TEST_ASSERT(((AT_CellularPower *)pwr)->get_device_error().errCode == 100 && // 100 == unknown command for modem - ((AT_CellularPower *)pwr)->get_device_error().errType == 3); // 3 == CME error from the modem - } - } - - err = pwr->off(); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED); - -} - -using namespace utest::v1; - -static utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) -{ - greentea_case_failure_abort_handler(source, reason); - return STATUS_ABORT; -} - -static Case cases[] = { - Case("CellularPower test interface", test_power_interface, greentea_failure_handler) -}; - -static utest::v1::status_t test_setup(const size_t number_of_cases) -{ - GREENTEA_SETUP(10 * 60, "default_auto"); - return verbose_test_setup_handler(number_of_cases); -} - -static Specification specification(test_setup, cases); - -int main() -{ -#if MBED_CONF_MBED_TRACE_ENABLE - trace_open(); -#endif - int ret = Harness::run(specification); -#if MBED_CONF_MBED_TRACE_ENABLE - trace_close(); -#endif - return ret; -} diff --git a/features/cellular/TESTS/api/cellular_sim/main.cpp b/features/cellular/TESTS/api/cellular_sim/main.cpp deleted file mode 100644 index 3da5b951bb2..00000000000 --- a/features/cellular/TESTS/api/cellular_sim/main.cpp +++ /dev/null @@ -1,128 +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. - */ - - -#if !defined(MBED_CONF_NSAPI_PRESENT) -#error [NOT_SUPPORTED] A json configuration file is needed. Skipping this build. -#endif - -#include "CellularUtil.h" // for CELLULAR_ helper macros -#include "CellularTargets.h" - -#ifndef CELLULAR_DEVICE -#error [NOT_SUPPORTED] CELLULAR_DEVICE must be defined -#endif - -#ifndef MBED_CONF_APP_CELLULAR_SIM_PIN -#error [NOT_SUPPORTED] SIM pin code is needed. Skipping this build. -#endif - -#include "greentea-client/test_env.h" -#include "unity.h" -#include "utest.h" - -#include "mbed.h" - -#include "CellularContext.h" -#include "CellularDevice.h" -#include "CellularSIM.h" -#include "../../cellular_tests_common.h" -#include CELLULAR_STRINGIFY(CELLULAR_DEVICE.h) - -#define NETWORK_TIMEOUT (180*1000) - -static CellularContext *ctx; -static CellularDevice *device; - -static void init_to_device_ready_state() -{ - ctx = CellularContext::get_default_instance(); - TEST_ASSERT(ctx != NULL); - TEST_ASSERT(ctx->set_device_ready() == NSAPI_ERROR_OK); - - device = CellularDevice::get_default_instance(); - TEST_ASSERT(device != NULL); -} - -static void test_sim_interface() -{ - CellularSIM *sim = device->open_sim(); - TEST_ASSERT(sim != NULL); - - // set SIM at time out to 9000 - device->set_timeout(9000); - wait(4); // we need to wait for some time so that SIM interface is working in all modules. - // 1. test set_pin - nsapi_error_t err = sim->set_pin(MBED_CONF_APP_CELLULAR_SIM_PIN); - MBED_ASSERT(err == NSAPI_ERROR_OK); - - // 2. test set_pin_query - wait(1); - err = sim->set_pin_query(MBED_CONF_APP_CELLULAR_SIM_PIN, false); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED); - - wait(1); - err = sim->set_pin_query(MBED_CONF_APP_CELLULAR_SIM_PIN, true); - TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED); - - wait(1); - // 3. test get_sim_state - CellularSIM::SimState state; - err = sim->get_sim_state(state); - TEST_ASSERT(err == NSAPI_ERROR_OK); - TEST_ASSERT(state == CellularSIM::SimStateReady); - - wait(1); - // 4. test get_imsi - char imsi[16] = {0}; - err = sim->get_imsi(imsi); - TEST_ASSERT(err == NSAPI_ERROR_OK); - TEST_ASSERT(strlen(imsi) > 0); -} - -using namespace utest::v1; - -static utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) -{ - greentea_case_failure_abort_handler(source, reason); - return STATUS_ABORT; -} - -static Case cases[] = { - Case("CellularSIM init", init_to_device_ready_state, greentea_failure_handler), - Case("CellularSIM test interface", test_sim_interface, greentea_failure_handler) -}; - -static utest::v1::status_t test_setup(const size_t number_of_cases) -{ - GREENTEA_SETUP(10 * 60, "default_auto"); - return verbose_test_setup_handler(number_of_cases); -} - -static Specification specification(test_setup, cases); - -int main() -{ -#if MBED_CONF_MBED_TRACE_ENABLE - trace_open(); -#endif - int ret = Harness::run(specification); -#if MBED_CONF_MBED_TRACE_ENABLE - trace_close(); -#endif - return ret; -} diff --git a/features/cellular/TESTS/api/cellular_sms/main.cpp b/features/cellular/TESTS/api/cellular_sms/main.cpp index e4912a7a57b..1c770c44ca4 100644 --- a/features/cellular/TESTS/api/cellular_sms/main.cpp +++ b/features/cellular/TESTS/api/cellular_sms/main.cpp @@ -20,13 +20,6 @@ #error [NOT_SUPPORTED] A json configuration file is needed. Skipping this build. #endif -#include "CellularUtil.h" // for CELLULAR_ helper macros -#include "CellularTargets.h" - -#ifndef CELLULAR_DEVICE -#error [NOT_SUPPORTED] CELLULAR_DEVICE must be defined -#endif - #ifndef MBED_CONF_APP_CELLULAR_SIM_PIN #error [NOT_SUPPORTED] SIM pin code is needed. Skipping this build. #endif @@ -45,12 +38,10 @@ #include "CellularContext.h" #include "CellularDevice.h" #include "../../cellular_tests_common.h" -#include CELLULAR_STRINGIFY(CELLULAR_DEVICE.h) #define NETWORK_TIMEOUT (600*1000) #define SIM_BUSY 314 -static UARTSerial cellular_serial(MDMTXD, MDMRXD, MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE); -static EventQueue queue(8 * EVENTS_EVENT_SIZE); + static CellularContext *ctx; static CellularDevice *device; static CellularSMS *sms; @@ -59,10 +50,10 @@ static int service_address_type; static void create_context() { - device = new CELLULAR_DEVICE(&cellular_serial); + device = CellularDevice::get_default_instance(); TEST_ASSERT(device != NULL); device->set_timeout(9000); - ctx = device->create_context(); + ctx = CellularContext::get_default_instance(); TEST_ASSERT(ctx != NULL); ctx->set_sim_pin(MBED_CONF_APP_CELLULAR_SIM_PIN); #ifdef MBED_CONF_APP_APN @@ -75,12 +66,12 @@ static void store_service_center_address() // First we need to go SIM_PIN state to make sure that we can get service address and device ready to accept AT commands create_context(); TEST_ASSERT(ctx->set_sim_ready() == NSAPI_ERROR_OK); - wait(1); - delete device; // will also delete context - wait(3); // some modems needs more time access sim + wait(5); // some modems needs more time access sim - ATHandler *at_init = new ATHandler(&cellular_serial, queue, 30000, "\r"); + ATHandler *at_init = device->get_at_handler(); + at_init->lock(); + at_init->set_at_timeout(30 * 1000); at_init->cmd_start("AT+CSCA?"); at_init->cmd_stop(); @@ -90,10 +81,10 @@ static void store_service_center_address() at_init->read_string(service_center_address, sizeof(service_center_address)); service_address_type = at_init->read_int(); at_init->resp_stop(); - TEST_ASSERT(at_init->get_last_error() == NSAPI_ERROR_OK); - delete at_init; + at_init->unlock(); + device->release_at_handler(at_init); } static void init() @@ -103,7 +94,7 @@ static void init() create_context(); TEST_ASSERT(ctx->register_to_network() == NSAPI_ERROR_OK); - sms = device->open_sms(&cellular_serial); + sms = device->open_sms(); TEST_ASSERT(sms != NULL); wait(3); // some modems needs more time access sim } diff --git a/features/cellular/TESTS/socket/udp/main.cpp b/features/cellular/TESTS/socket/udp/main.cpp index f89afe93109..6abd42f7eba 100644 --- a/features/cellular/TESTS/socket/udp/main.cpp +++ b/features/cellular/TESTS/socket/udp/main.cpp @@ -22,18 +22,10 @@ #include "CellularUtil.h" // for CELLULAR_ helper macros #include "CellularTargets.h" -#ifndef CELLULAR_DEVICE -#error [NOT_SUPPORTED] CELLULAR_DEVICE must be defined -#endif - #ifndef MBED_CONF_APP_CELLULAR_SIM_PIN #error [NOT_SUPPORTED] SIM pin code is needed. Skipping this build. #endif -#if defined(TARGET_ADV_WISE_1570) || defined(TARGET_MTB_ADV_WISE_1570) -#error [NOT_SUPPORTED] target MTB_ADV_WISE_1570 is too unstable for network tests, IoT network is unstable -#endif - #include "greentea-client/test_env.h" #include "unity.h" #include "utest.h" diff --git a/features/cellular/TESTS/socket/udp/template_mbed_app.json.txt b/features/cellular/TESTS/socket/udp/template_mbed_app.json.txt index be58e16e68c..983fd68dd97 100644 --- a/features/cellular/TESTS/socket/udp/template_mbed_app.json.txt +++ b/features/cellular/TESTS/socket/udp/template_mbed_app.json.txt @@ -4,6 +4,10 @@ "help": "PIN code", "value": "\"1234\"" }, + "cellular_plmn": { + "help": "plmn to select manual registration", + "value": 0 + }, "apn": { "help": "The APN string to use for this SIM/network, set to 0 if none", "value": 0 @@ -27,7 +31,6 @@ "nsapi.dns-response-wait-time": 30000, "ppp-cell-iface.apn-lookup": false, "cellular.use-apn-lookup": false, - "target.features_add": ["LWIP"], "mbed-trace.enable": false, "lwip.ipv4-enabled": true, "lwip.ipv6-enabled": true, diff --git a/features/cellular/framework/API/CellularContext.h b/features/cellular/framework/API/CellularContext.h index 44bd4ec5816..6779e7fdee0 100644 --- a/features/cellular/framework/API/CellularContext.h +++ b/features/cellular/framework/API/CellularContext.h @@ -17,20 +17,35 @@ #ifndef _CELLULARCONTEXT_H_ #define _CELLULARCONTEXT_H_ -#include "CellularBase.h" +#include "CellularInterface.h" #include "CellularDevice.h" +#include "ControlPlane_netif.h" + +/** @file CellularContext.h + * @brief Cellular PDP context class + * + */ namespace mbed { +typedef enum pdp_type { + DEFAULT_PDP_TYPE = DEFAULT_STACK, + IPV4_PDP_TYPE = IPV4_STACK, + IPV6_PDP_TYPE = IPV6_STACK, + IPV4V6_PDP_TYPE = IPV4V6_STACK, + NON_IP_PDP_TYPE +} pdp_type_t; + /** * @addtogroup cellular * @{ */ -/// CellularContext is CellularBase/NetworkInterface with extensions for cellular connectivity -class CellularContext : public CellularBase { +/// CellularContext is CellularInterface/NetworkInterface with extensions for cellular connectivity +class CellularContext : public CellularInterface { public: + // max simultaneous PDP contexts active static const int PDP_CONTEXT_COUNT = 4; @@ -107,7 +122,6 @@ class CellularContext : public CellularBase { // friend of CellularDevice, so it's the only way to close or delete this class. friend class CellularDevice; virtual ~CellularContext() {} - public: // from NetworkInterface virtual nsapi_error_t set_blocking(bool blocking) = 0; virtual NetworkStack *get_stack() = 0; @@ -126,7 +140,7 @@ class CellularContext : public CellularBase { virtual nsapi_error_t connect() = 0; virtual nsapi_error_t disconnect() = 0; - // from CellularBase + // from CellularInterface virtual void set_plmn(const char *plmn) = 0; virtual void set_sim_pin(const char *sim_pin) = 0; virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0, const char *uname = 0, @@ -135,16 +149,34 @@ class CellularContext : public CellularBase { virtual const char *get_netmask() = 0; virtual const char *get_gateway() = 0; virtual bool is_connected() = 0; + + /** Same as NetworkInterface::get_default_instance() + * + * @note not to be used if get_default_nonip_instance() was already used + * + */ static CellularContext *get_default_instance(); + /** Instantiates a default Non-IP cellular interface + * + * This function creates a new Non-IP PDP context. + * + * @note not to be used if get_default_instance() was already used + * + * @return A Non-IP cellular PDP context + * + */ + static CellularContext *get_default_nonip_instance(); + + // Operations, can be sync/async. Also Connect() is this kind of operation, inherited from NetworkInterface above. /** Start the interface * - * Powers on the device and does the initializations for communication with the modem. + * Initializes the modem for communication. * 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 + * In synchronous and asynchronous mode application can get result in from callback which is set with * attach(...) * * @return NSAPI_ERROR_OK on success @@ -227,6 +259,19 @@ class CellularContext : public CellularBase { */ virtual void set_file_handle(FileHandle *fh) = 0; + /** Set the UART serial used to communicate with the modem. Can be used to change default file handle. + * File handle set with this method will use data carrier detect to be able to detect disconnection much faster in PPP mode. + * + * @param serial UARTSerial used in communication to modem. If null then the default file handle is used. + * @param dcd_pin Pin used to set data carrier detect on/off for the given UART + * @param active_high a boolean set to true if DCD polarity is active low + */ + virtual void set_file_handle(UARTSerial *serial, PinName dcd_pin = NC, bool active_high = false) = 0; + + /** Returns the control plane AT command interface + */ + virtual ControlPlane_netif *get_cp_netif() = 0; + protected: // Device specific implementations might need these so protected enum ContextOperation { OP_INVALID = -1, @@ -245,9 +290,23 @@ class CellularContext : public CellularBase { */ virtual void cellular_callback(nsapi_event_t ev, intptr_t ptr) = 0; + /** Enable or disable hang-up detection + * + * When in PPP data pump mode, it is helpful if the FileHandle will signal hang-up via + * POLLHUP, e.g., if the DCD line is deasserted on a UART. During command mode, this + * signaling is not desired. enable_hup() controls whether this function should be + * active. + */ + virtual void enable_hup(bool enable) = 0; + + /** Triggers control plane's operations needed when control plane data is received, + * like socket event, for example. + */ + void cp_data_received(); + // member variables needed in target override methods NetworkStack *_stack; // must be pointer because of PPP - nsapi_ip_stack_t _ip_stack_type; + pdp_type_t _pdp_type; CellularContext::AuthenticationType _authentication_type; nsapi_connection_status_t _connect_status; cell_callback_data_t _cb_data; @@ -259,6 +318,10 @@ class CellularContext : public CellularBase { const char *_apn; const char *_uname; const char *_pwd; + PinName _dcd_pin; + bool _active_high; + + ControlPlane_netif *_cp_netif; }; /** diff --git a/features/cellular/framework/API/CellularDevice.h b/features/cellular/framework/API/CellularDevice.h index a494114023d..a67d226cee8 100644 --- a/features/cellular/framework/API/CellularDevice.h +++ b/features/cellular/framework/API/CellularDevice.h @@ -22,12 +22,15 @@ #include "CellularStateMachine.h" #include "Callback.h" #include "ATHandler.h" +#include "UARTSerial.h" +/** @file CellularDevice.h + * @brief Class CellularDevice + * + */ namespace mbed { -class CellularPower; class CellularSMS; -class CellularSIM; class CellularInformation; class CellularNetwork; class CellularContext; @@ -35,6 +38,7 @@ class FileHandle; const int MAX_PIN_SIZE = 8; const int MAX_PLMN_SIZE = 16; +const int MAX_SIM_READY_WAITING_TIME = 30; /** * @addtogroup cellular @@ -49,14 +53,31 @@ const int MAX_PLMN_SIZE = 16; */ class CellularDevice { public: + /* enumeration for possible SIM states */ + enum SimState { + SimStateReady = 0, + SimStatePinNeeded, + SimStatePukNeeded, + SimStateUnknown + }; /** 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. + * defined, then it returns NULL. See NetworkInterface::get_default_instance for details. + * + * @remark Application may override this (non-weak) default implementation. * - * @return CellularDevice* instance if any + * @return default CellularDevice, NULL if not defined */ static CellularDevice *get_default_instance(); + /** Return target onboard instance of CellularDevice + * + * @remark Mbed OS target shall override (non-weak) this function for an onboard modem. + * + * @return CellularDevice* instance, NULL if not defined + */ + static CellularDevice *get_target_default_instance(); + /** Default constructor * * @param fh File handle used in communication with the modem. @@ -67,16 +88,114 @@ class CellularDevice { */ virtual ~CellularDevice(); + /** Sets the modem up for powering on + * This is equivalent to plugging in the device, i.e., attaching power and serial port. + * In general, hard_power_on and soft_power_on provides a simple hardware abstraction layer + * on top of the modem drivers written for Mbed OS; they can be overridden + * in a derived class to perform custom power controls in a particular board configuration. + * In many boards this will be a no-op if there is no separate power supply control circuitry. + * + * @remark CellularStateMachine calls hard_power_on at first until successful, + * then soft_power_on and init until the modem responds. + * If you are not using CellularStateMachine then you need to call these functions yourself. + * + * @post You must call soft_power_on to power on the modem after calling hard_power_on. + * + * @return NSAPI_ERROR_OK on success + */ + virtual nsapi_error_t hard_power_on() = 0; + + /** Sets the modem in unplugged state + * + * This is equivalent to pulling the plug off of the device, i.e., + * detaching power and serial port. + * + * This puts the modem in the lowest power state. + * + * @remark CellularStateMachine disconnect or destruct does not shutdown or power off the modem, + * but you need to do that yourself. + * + * @pre You must call soft_power_off to power off the modem before calling hard_power_off. + * + * @return NSAPI_ERROR_OK on success + */ + virtual nsapi_error_t hard_power_off() = 0; + + /** Powers up the modem + * + * This is equivalent to pressing the "power button" to activate or reset the modem + * and usually implemented as a short pulse on a dedicated GPIO signal. + * It is expected to be present to make it possible to reset the modem. + * The driver may repeat this if the modem is not responsive to AT commands. + * + * @remark CellularStateMachine calls this when requested to connect. + * If you are not using CellularStateMachine then you need to call this function yourself. + * + * @post You must call init to setup the modem. + * + * @return NSAPI_ERROR_OK on success + */ + virtual nsapi_error_t soft_power_on() = 0; + + /** Powers down the modem + * + * This is equivalent to turning off the modem by button press. + * + * @remark CellularStateMachine disconnect or destruct does not shutdown or power off the modem, + * but you need to do that yourself. + * + * @pre You must call shutdown to prepare the modem for power off. + * + * @return NSAPI_ERROR_OK on success + */ + virtual nsapi_error_t soft_power_off() = 0; + + /** Open the SIM card by setting the pin code for SIM. + * + * @param sim_pin PIN for the SIM card + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER if sim_pin is null and sim is not ready + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t set_pin(const char *sim_pin) = 0; + + /** Get SIM card's state + * + * @param state current state of SIM + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t get_sim_state(SimState &state) = 0; + /** Creates a new CellularContext interface. * * @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. + * @param cp_req flag indicating if EPS control plane optimization is required + * @param nonip_req flag indicating if this context is required to be Non-IP * * @return new instance of class CellularContext or NULL in case of failure * */ - virtual CellularContext *create_context(FileHandle *fh = NULL, const char *apn = NULL) = 0; + virtual CellularContext *create_context(FileHandle *fh = NULL, const char *apn = NULL, bool cp_req = false, bool nonip_req = false) = 0; + + /** Creates a new CellularContext interface. This API should be used if serial is UART and PPP mode used. + * CellularContext created will use data carrier detect to be able to detect disconnection much faster in PPP mode. + * UARTSerial usually is the same which was given for the CellularDevice. + * + * @param serial UARTSerial used in communication to modem. If null then the default file handle is used. + * @param apn access point to use with context, can be null. + * @param dcd_pin Pin used to set data carrier detect on/off for the given UART + * @param active_high a boolean set to true if DCD polarity is active low + * @param cp_req Flag indicating if EPS control plane optimization is required + * @param nonip_req Flag indicating if this context is required to be Non-IP + * + * @return new instance of class CellularContext or NULL in case of failure + * + */ + virtual CellularContext *create_context(UARTSerial *serial, const char *apn, PinName dcd_pin = NC, + bool active_high = false, bool cp_req = false, bool nonip_req = false) = 0; /** Deletes the given CellularContext instance * @@ -89,6 +208,12 @@ class CellularDevice { */ void stop(); + /** Get the current FileHandle item used when communicating with the modem. + * + * @return reference to FileHandle + */ + FileHandle &get_file_handle() const; + /** Get event queue that can be chained to main event queue. * @return event queue */ @@ -110,7 +235,7 @@ class CellularDevice { /** Start the interface * - * Powers on the device and does the initializations for communication with the modem. + * Initializes the modem for communication. * 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. * @@ -154,11 +279,11 @@ class CellularDevice { /** 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. + * The specified status callback function will be called on the network and 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 + * @remark deleting CellularDevice/CellularContext in callback not allowed. + * @remark application should not attach to this function if using CellularContext::attach as it will contain the * same information. * * @param status_cb The callback for status changes. @@ -181,22 +306,6 @@ class CellularDevice { */ virtual CellularSMS *open_sms(FileHandle *fh = NULL) = 0; - /** Create new CellularPower interface. - * - * @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. - */ - virtual CellularPower *open_power(FileHandle *fh = NULL) = 0; - - /** Create new CellularSIM interface. - * - * @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. - */ - virtual CellularSIM *open_sim(FileHandle *fh = NULL) = 0; - /** Create new CellularInformation interface. * * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default @@ -213,14 +322,6 @@ class CellularDevice { */ virtual void close_sms() = 0; - /** Closes the opened CellularPower by deleting the CellularPower instance. - */ - virtual void close_power() = 0; - - /** Closes the opened CellularSIM by deleting the CellularSIM instance. - */ - virtual void close_sim() = 0; - /** Closes the opened CellularInformation by deleting the CellularInformation instance. */ virtual void close_information() = 0; @@ -237,17 +338,58 @@ class CellularDevice { */ virtual void modem_debug_on(bool on) = 0; - /** Initialize cellular module must be called right after module is ready. - * For example, when multiple modules are supported in a single AT driver this function detects - * and adapts to an actual module at runtime. + /** Initialize cellular device must be called right after the module is ready. + * + * For example, when multiple cellular modules are supported in a single driver this function + * detects and adapts to an actual module at runtime. + * + * @remark CellularStateMachine calls soft_power_on and init repeatedly when starting to connect + * until the modem responds. * * @return NSAPI_ERROR_OK on success * NSAPI_ERROR_NO_MEMORY on case of memory failure - * NSAPI_ERROR_UNSUPPORTED if current model is not detected + * NSAPI_ERROR_UNSUPPORTED if current cellular module type is not detected * NSAPI_ERROR_DEVICE_ERROR if model information could not be read * */ - virtual nsapi_error_t init_module() = 0; + virtual nsapi_error_t init() = 0; + + /** Shutdown cellular device to minimum functionality. + * + * Actual functionality is modem specific, for example UART may is not be responsive without + * explicit wakeup signal (such as RTS) after shutdown. + * + * @remark You must call shutdown before power off to prepare the modem and to quit cellular network. + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t shutdown(); + + /** Check whether the device is ready to accept commands. + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t is_ready() = 0; + + /** Set callback function to listen when device is ready. + * + * @param callback function to call on device ready, or NULL to remove callback. + */ + virtual void set_ready_cb(Callback callback) = 0; + + /** Set power save mode + * + * @remark See 3GPP TS 27.007 PSM for details + * + * @param periodic_time in seconds to enable power save, or zero to disable + * @param active_time in seconds to wait before entering power save mode + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t set_power_save_mode(int periodic_time, int active_time = 0) = 0; /** Get the linked list of CellularContext instances * @@ -282,8 +424,6 @@ class CellularDevice { int _network_ref_count; int _sms_ref_count; - int _power_ref_count; - int _sim_ref_count; int _info_ref_count; FileHandle *_fh; events::EventQueue _queue; diff --git a/features/cellular/framework/API/CellularInformation.h b/features/cellular/framework/API/CellularInformation.h index 9ab79d6e925..689e78f6739 100644 --- a/features/cellular/framework/API/CellularInformation.h +++ b/features/cellular/framework/API/CellularInformation.h @@ -21,6 +21,9 @@ #include #include "nsapi_types.h" +const int MAX_IMSI_LENGTH = 15; +const int MAX_ICCID_LENGTH = 20 + 1; // +1 for zero termination + namespace mbed { /** @@ -48,6 +51,7 @@ class CellularInformation { * @param buf manufacturer identification as zero terminated string * @param buf_size max length of manufacturer identification is 2048 characters * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER if buf is null or buf_size is zero * NSAPI_ERROR_DEVICE_ERROR on failure */ virtual nsapi_error_t get_manufacturer(char *buf, size_t buf_size) = 0; @@ -57,6 +61,7 @@ class CellularInformation { * @param buf model identification as zero terminated string * @param buf_size max length of model identification is 2048 characters * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER if buf is null or buf_size is zero * NSAPI_ERROR_DEVICE_ERROR on failure */ virtual nsapi_error_t get_model(char *buf, size_t buf_size) = 0; @@ -66,6 +71,7 @@ class CellularInformation { * @param buf revision identification as zero terminated string * @param buf_size max length of revision identification is 2048 characters * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER if buf is null or buf_size is zero * NSAPI_ERROR_DEVICE_ERROR on failure */ virtual nsapi_error_t get_revision(char *buf, size_t buf_size) = 0; @@ -76,6 +82,7 @@ class CellularInformation { * @param buf_size max length of serial number is 2048 characters * @param type serial number type to read * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER if buf is null or buf_size is zero * NSAPI_ERROR_UNSUPPORTED if the modem does not support SerialNumberType * NSAPI_ERROR_DEVICE_ERROR on other failures */ @@ -85,7 +92,30 @@ class CellularInformation { IMEISV = 2, // IMEI and Software Version number SVN = 3 // Software Version Number }; - virtual nsapi_error_t get_serial_number(char *buf, size_t buf_size, SerialNumberType type = SN) = 0; + virtual nsapi_size_or_error_t get_serial_number(char *buf, size_t buf_size, SerialNumberType type = SN) = 0; + + /** Get IMSI from the sim card + * + * @remark Given imsi buffer length must be 16 or more as imsi max length is 15! + * + * @param imsi preallocated char* which after successful request contains imsi + * @param buf_size size of imsi buffer + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER if imsi is null or buf_size is zero or buf_size is smaller than + * MAX_IMSI_LENGTH + 1 + * NSAPI_ERROR_DEVICE_ERROR on other failures + */ + virtual nsapi_error_t get_imsi(char *imsi, size_t buf_size) = 0; + + /** Get serial number from the SIM card + * + * @param buf SIM ICCID as zero terminated string + * @param buf_size max length of SIM ICCID is MAX_ICCID_LENGTH + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER if buf is null or buf_size is zero + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t get_iccid(char *buf, size_t buf_size) = 0; }; /** diff --git a/features/cellular/framework/API/CellularNetwork.h b/features/cellular/framework/API/CellularNetwork.h index eecf365f689..0eb87366f4f 100644 --- a/features/cellular/framework/API/CellularNetwork.h +++ b/features/cellular/framework/API/CellularNetwork.h @@ -45,17 +45,17 @@ class CellularNetwork { public: /* Definition for Supported CIoT EPS optimizations type. */ - enum Supported_UE_Opt { - SUPPORTED_UE_OPT_NO_SUPPORT = 0, /* No support. */ - SUPPORTED_UE_OPT_CONTROL_PLANE, /* Support for control plane CIoT EPS optimization. */ - SUPPORTED_UE_OPT_USER_PLANE, /* Support for user plane CIoT EPS optimization. */ - SUPPORTED_UE_OPT_BOTH, /* Support for both control plane CIoT EPS optimization and user plane CIoT EPS + enum CIoT_Supported_Opt { + CIOT_OPT_NO_SUPPORT = 0, /* No support. */ + CIOT_OPT_CONTROL_PLANE, /* Support for control plane CIoT EPS optimization. */ + CIOT_OPT_USER_PLANE, /* Support for user plane CIoT EPS optimization. */ + CIOT_OPT_BOTH, /* Support for both control plane CIoT EPS optimization and user plane CIoT EPS optimization. */ - SUPPORTED_UE_OPT_MAX + CIOT_OPT_MAX }; /* Definition for Preferred CIoT EPS optimizations type. */ - enum Preferred_UE_Opt { + enum CIoT_Preferred_UE_Opt { PREFERRED_UE_OPT_NO_PREFERENCE = 0, /* No preference. */ PREFERRED_UE_OPT_CONTROL_PLANE, /* Preference for control plane CIoT EPS optimization. */ PREFERRED_UE_OPT_USER_PLANE, /* Preference for user plane CIoT EPS optimization. */ @@ -257,45 +257,47 @@ class CellularNetwork { /** Set CIoT optimizations. * - * @param supported_opt Supported CIoT EPS optimizations. + * @param supported_opt Supported CIoT EPS optimizations + * (the HW support can be checked with get_ciot_ue_optimization_config). * @param preferred_opt Preferred CIoT EPS optimizations. + * @param network_support_cb This callback will be called when CIoT network optimization support is known * @return NSAPI_ERROR_OK on success * NSAPI_ERROR_DEVICE_ERROR on failure */ - virtual nsapi_error_t set_ciot_optimization_config(Supported_UE_Opt supported_opt, - Preferred_UE_Opt preferred_opt) = 0; + virtual nsapi_error_t set_ciot_optimization_config(CIoT_Supported_Opt supported_opt, + CIoT_Preferred_UE_Opt preferred_opt, + Callback network_support_cb) = 0; - /** Get CIoT optimizations. + /** Get UE CIoT optimizations. * * @param supported_opt Supported CIoT EPS optimizations. * @param preferred_opt Preferred CIoT EPS optimizations. * @return NSAPI_ERROR_OK on success * NSAPI_ERROR_DEVICE_ERROR on failure */ - virtual nsapi_error_t get_ciot_optimization_config(Supported_UE_Opt &supported_opt, - Preferred_UE_Opt &preferred_opt) = 0; + virtual nsapi_error_t get_ciot_ue_optimization_config(CIoT_Supported_Opt &supported_opt, + CIoT_Preferred_UE_Opt &preferred_opt) = 0; - /** Get extended signal quality parameters. + /** Get Network CIoT optimizations. * - * @param rxlev signal strength level - * @param ber bit error rate - * @param rscp signal code power - * @param ecno ratio of the received energy per PN chip to the total received power spectral density - * @param rsrq signal received quality - * @param rsrp signal received power + * @param supported_network_opt Supported CIoT EPS optimizations. CIOT_OPT_MAX will be returned, + * if the support is not known * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on other failures + * NSAPI_ERROR_DEVICE_ERROR on failure */ - virtual nsapi_error_t get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp) = 0; + virtual nsapi_error_t get_ciot_network_optimization_config(CIoT_Supported_Opt &supported_network_opt) = 0; /** Get signal quality parameters. * - * @param rssi signal strength level - * @param ber bit error rate + * @param rssi signal strength level as defined in 3GPP TS 27.007, range -113..-51 dBm or SignalQualityUnknown + * @param ber bit error rate as RXQUAL as defined in 3GPP TS 45.008, range 0..7 or SignalQualityUnknown * @return NSAPI_ERROR_OK on success * NSAPI_ERROR_DEVICE_ERROR on other failures */ - virtual nsapi_error_t get_signal_quality(int &rssi, int &ber) = 0; + enum SignalQuality { + SignalQualityUnknown = 99 + }; + virtual nsapi_error_t get_signal_quality(int &rssi, int *ber = NULL) = 0; /** Get the last 3GPP error code * @return see 3GPP TS 27.007 error codes @@ -361,6 +363,27 @@ class CellularNetwork { * NSAPI_ERROR_DEVICE_ERROR on failure */ virtual nsapi_error_t get_registration_params(RegistrationType type, registration_params_t ®_params) = 0; + + /** Set discontinuous reception time on cellular device. + * + * @remark See 3GPP TS 27.007 eDRX for details. + * + * @param mode disable or enable the use of eDRX + * @param act_type type of access technology + * @param edrx_value requested edxr value. Extended DRX parameters information element. + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + enum EDRXAccessTechnology { + EDRXGSM_EC_GSM_IoT_mode = 1, + EDRXGSM_A_Gb_mode, + EDRXUTRAN_Iu_mode, + EDRXEUTRAN_WB_S1_mode, + EDRXEUTRAN_NB_S1_mode + }; + virtual nsapi_error_t set_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value) = 0; + }; /** diff --git a/features/cellular/framework/API/CellularPower.h b/features/cellular/framework/API/CellularPower.h deleted file mode 100644 index 8fea860fd4f..00000000000 --- a/features/cellular/framework/API/CellularPower.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 2017, 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 CELLULAR_API_CELLULARPOWER_H_ -#define CELLULAR_API_CELLULARPOWER_H_ - -#include "nsapi_types.h" -#include "Callback.h" - -namespace mbed { - -/** - * Class CellularPower - * - * An interface that provides power handling functions for modem/module. - */ -class CellularPower { -protected: - // friend of CellularDevice so that it's the only way to close/delete this class. - friend class CellularDevice; - - /** - * virtual Destructor - */ - virtual ~CellularPower() {} - -public: - /* Access technology used in method opt_receive_period */ - enum EDRXAccessTechnology { - EDRXGSM_EC_GSM_IoT_mode = 1, - EDRXGSM_A_Gb_mode, - EDRXUTRAN_Iu_mode, - EDRXEUTRAN_WB_S1_mode, - EDRXEUTRAN_NB_S1_mode - }; - - /** Set cellular device power on. Default implementation is empty. - * Device power on/off is modem/board specific behavior and must be done on inherited class if needed. - * Power on is done by toggling power pin/button. - * - * @remark set_at_mode must be called to initialise modem - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_UNSUPPORTED if not overridden by the target modem - */ - virtual nsapi_error_t on() = 0; - - /** Set cellular device power off. Default implementation is empty. - * Device power on/off is modem/board specific behavior and must be done on inherited class if needed. - * Power off is done by toggling power pin/button. - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_UNSUPPORTED if not overridden by the target modem - */ - virtual nsapi_error_t off() = 0; - - /** Set AT command mode. Blocking until success or failure. - * - * @remark must be called after power on to prepare correct AT mode - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t set_at_mode() = 0; - - /** Set cellular device power level by enabling/disabling functionality. - * - * @param func_level: - * 0 minimum functionality - * 1 full functionality. Enable (turn on) the transmit and receive RF circuits for all supported radio access technologies. - * For MTs supporting +CSRA, this equals the RATs indicated by the response of +CSRA=?. Current +CSRA setting is ignored. - * It is not required that the MT transmit and receive RF circuits are in a disabled state for this setting to have effect. - * 2 disable (turn off) MT transmit RF circuits only - * 3 disable (turn off) MT receive RF circuits only - * 4 disable (turn off) both MT transmit and receive RF circuits - * @param do_reset 0 for do not reset, 1 for reset the device when changing the functionality - * - * @remark See 3GPP TS 27.007 CFUN for more details - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t set_power_level(int func_level, int do_reset = 0) = 0; - - /** Reset and wake-up cellular device. - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t reset() = 0; - - /** Opt for power save setting on cellular device. If both parameters are zero, this disables PSM. - * - * @remark See 3GPP TS 27.007 PSM for details - * - * @param periodic_time Timeout in seconds IoT subsystem is not expecting messaging - * @param active_time Timeout in seconds IoT subsystem waits for response - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t opt_power_save_mode(int periodic_time, int active_time) = 0; - - /** Opt for discontinuous reception on cellular device. - * - * @remark See 3GPP TS 27.007 eDRX for details. - * - * @param mode disable or enable the use of eDRX - * @param act_type type of access technology - * @param edrx_value requested edxr value. Extended DRX parameters information element. - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t opt_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value) = 0; - - /** Check whether the device is ready to accept commands. - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t is_device_ready() = 0; - - /** Set URC callback function for device specific ready urc. URC is defined in device specific - * power API. Used in startup sequence to listen when device is ready - * for using at commands and possible sim. - * - * @param callback Callback function called when urc received - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_NO_MEMORY on memory failure - * NSAPI_ERROR_UNSUPPORTED if not overridden by the target modem - */ - virtual nsapi_error_t set_device_ready_urc_cb(mbed::Callback callback) = 0; - - /** Removes the device ready urc from the list of urc's. - * - * @param callback callback to remove from the list of urc's - */ - virtual void remove_device_ready_urc_cb(mbed::Callback callback) = 0; -}; - -} // namespace mbed - -#endif /* CELLULAR_API_CELLULARPOWER_H_ */ diff --git a/features/cellular/framework/API/CellularSIM.h b/features/cellular/framework/API/CellularSIM.h deleted file mode 100644 index 13ff7d37009..00000000000 --- a/features/cellular/framework/API/CellularSIM.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2017, 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 CELLULAR_SIM_H_ -#define CELLULAR_SIM_H_ - -#include - -#include "nsapi_types.h" - -namespace mbed { - -const int MAX_SIM_READY_WAITING_TIME = 30; -const int MAX_IMSI_LENGTH = 15; -const int MAX_ICCID_LENGTH = 20 + 1; // +1 for zero termination -/** - * Class CellularSIM - * - * An abstract interface for SIM card handling. - */ -class CellularSIM { -protected: - // friend of CellularDevice so that it's the only way to close/delete this class. - friend class CellularDevice; - - /** - * virtual Destructor - */ - virtual ~CellularSIM() {}; - -public: - /* enumeration for possible SIM states */ - enum SimState { - SimStateReady = 0, - SimStatePinNeeded, - SimStatePukNeeded, - SimStateUnknown - }; - - /** Open the SIM card by setting the pin code for SIM. - * - * @param sim_pin PIN for the SIM card - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t set_pin(const char *sim_pin) = 0; - - /** Change SIM pin code. - * - * @param sim_pin Current PIN for SIM - * @param new_pin New PIN for SIM - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t change_pin(const char *sim_pin, const char *new_pin) = 0; - - /** Change is pin query needed after boot - * - * @param sim_pin Valid PIN for SIM card - * @param query_pin False if PIN query not needed, True if PIN query needed after boot. - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t set_pin_query(const char *sim_pin, bool query_pin) = 0; - - /** Get SIM card's state - * - * @param state current state of SIM - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t get_sim_state(SimState &state) = 0; - - /** Get IMSI from the sim card - * @remark Given imsi buffer length must be 16 or more as imsi max length is 15! - * - * @param imsi preallocated char* which after successful request contains imsi - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_PARAMETER if imsi if null - * NSAPI_ERROR_DEVICE_ERROR on other failures - */ - virtual nsapi_error_t get_imsi(char *imsi) = 0; - - /** Get serial number from the SIM card - * - * @param buf SIM ICCID as zero terminated string - * @param buf_size max length of SIM ICCID is MAX_ICCID_LENGTH - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t get_iccid(char *buf, size_t buf_size) = 0; -}; - -} // namespace mbed - -#endif // CELLULAR_SIM_H_ diff --git a/features/cellular/framework/AT/ATHandler.cpp b/features/cellular/framework/AT/ATHandler.cpp index 6da6dc9c564..7ea09476556 100644 --- a/features/cellular/framework/AT/ATHandler.cpp +++ b/features/cellular/framework/AT/ATHandler.cpp @@ -37,7 +37,8 @@ using namespace mbed_cellular_util; #define PROCESS_URC_TIME 20 // Suppress logging of very big packet payloads, maxlen is approximate due to write/read are cached -#define DEBUG_MAXLEN 80 +#define DEBUG_MAXLEN 60 +#define DEBUG_END_MARK "..\r" const char *mbed::OK = "OK\r\n"; const uint8_t OK_LENGTH = 4; @@ -62,7 +63,7 @@ static const uint8_t map_3gpp_errors[][2] = { ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, uint32_t timeout, const char *output_delimiter, uint16_t send_delay) : _nextATHandler(0), - _fileHandle(fh), + _fileHandle(NULL), // filehandle is set by set_file_handle() _queue(queue), _last_err(NSAPI_ERROR_OK), _last_3gpp_error(0), @@ -74,7 +75,7 @@ ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, uint32_t timeout, const _last_response_stop(0), _oob_queued(false), _ref_count(1), - _is_fh_usable(true), + _is_fh_usable(false), _stop_tag(NULL), _delimiter(DEFAULT_DELIMITER), _prefix_matched(false), @@ -90,11 +91,7 @@ ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, uint32_t timeout, const if (output_delimiter) { _output_delimiter = new char[strlen(output_delimiter) + 1]; - if (!_output_delimiter) { - MBED_ASSERT(0); - } else { - memcpy(_output_delimiter, output_delimiter, strlen(output_delimiter) + 1); - } + memcpy(_output_delimiter, output_delimiter, strlen(output_delimiter) + 1); } else { _output_delimiter = NULL; } @@ -116,8 +113,15 @@ void ATHandler::set_debug(bool debug_on) _debug_on = debug_on; } +bool ATHandler::get_debug() const +{ + return _debug_on; +} + ATHandler::~ATHandler() { + set_file_handle(NULL); + while (_oobs) { struct oob_t *oob = _oobs; _oobs = oob->next; @@ -150,43 +154,55 @@ FileHandle *ATHandler::get_file_handle() void ATHandler::set_file_handle(FileHandle *fh) { + if (_fileHandle) { + set_is_filehandle_usable(false); + } _fileHandle = fh; - _fileHandle->set_blocking(false); - set_filehandle_sigio(); + if (_fileHandle) { + set_is_filehandle_usable(true); + } } void ATHandler::set_is_filehandle_usable(bool usable) { - _is_fh_usable = usable; + if (_fileHandle) { + if (usable) { + _fileHandle->set_blocking(false); + _fileHandle->sigio(Callback(this, &ATHandler::event)); + } else { + _fileHandle->set_blocking(true); // set back to default state + _fileHandle->sigio(NULL); + } + _is_fh_usable = usable; + } } -nsapi_error_t ATHandler::set_urc_handler(const char *prefix, mbed::Callback callback) +void ATHandler::set_urc_handler(const char *prefix, Callback callback) { + if (!callback) { + remove_urc_handler(prefix); + return; + } + if (find_urc_handler(prefix)) { tr_warn("URC already added with prefix: %s", prefix); - return NSAPI_ERROR_OK; + return; } struct oob_t *oob = new struct oob_t; - if (!oob) { - return NSAPI_ERROR_NO_MEMORY; - } else { - size_t prefix_len = strlen(prefix); - if (prefix_len > _oob_string_max_length) { - _oob_string_max_length = prefix_len; - if (_oob_string_max_length > _max_resp_length) { - _max_resp_length = _oob_string_max_length; - } + size_t prefix_len = strlen(prefix); + if (prefix_len > _oob_string_max_length) { + _oob_string_max_length = prefix_len; + if (_oob_string_max_length > _max_resp_length) { + _max_resp_length = _oob_string_max_length; } - - oob->prefix = prefix; - oob->prefix_len = prefix_len; - oob->cb = callback; - oob->next = _oobs; - _oobs = oob; } - return NSAPI_ERROR_OK; + oob->prefix = prefix; + oob->prefix_len = prefix_len; + oob->cb = callback; + oob->next = _oobs; + _oobs = oob; } void ATHandler::remove_urc_handler(const char *prefix) @@ -257,6 +273,7 @@ nsapi_error_t ATHandler::unlock_return_error() void ATHandler::set_at_timeout(uint32_t timeout_milliseconds, bool default_timeout) { + lock(); if (default_timeout) { _previous_at_timeout = timeout_milliseconds; _at_timeout = timeout_milliseconds; @@ -264,13 +281,16 @@ void ATHandler::set_at_timeout(uint32_t timeout_milliseconds, bool default_timeo _previous_at_timeout = _at_timeout; _at_timeout = timeout_milliseconds; } + unlock(); } void ATHandler::restore_at_timeout() { + lock(); if (_previous_at_timeout != _at_timeout) { _at_timeout = _previous_at_timeout; } + unlock(); } void ATHandler::process_oob() @@ -309,11 +329,6 @@ void ATHandler::process_oob() unlock(); } -void ATHandler::set_filehandle_sigio() -{ - _fileHandle->sigio(mbed::Callback(this, &ATHandler::event)); -} - void ATHandler::reset_buffer() { _recv_pos = 0; @@ -453,7 +468,7 @@ ssize_t ATHandler::read_bytes(uint8_t *buf, size_t len) } buf[read_len] = c; if (_debug_on && read_len >= DEBUG_MAXLEN) { - debug_print("..", sizeof("..")); + debug_print(DEBUG_END_MARK, sizeof(DEBUG_END_MARK) - 1); _debug_on = false; } } @@ -545,9 +560,15 @@ ssize_t ATHandler::read_hex_string(char *buf, size_t size) size_t buf_idx = 0; char hexbuf[2]; + bool debug_on = _debug_on; for (; read_idx < size * 2 + match_pos; read_idx++) { int c = get_char(); + if (_debug_on && read_idx >= DEBUG_MAXLEN) { + debug_print(DEBUG_END_MARK, sizeof(DEBUG_END_MARK) - 1); + _debug_on = false; + } + if (match_pos) { buf_idx++; } else { @@ -585,6 +606,7 @@ ssize_t ATHandler::read_hex_string(char *buf, size_t size) } } } + _debug_on = debug_on; if (read_idx && (read_idx == size * 2 + match_pos)) { buf_idx++; @@ -600,13 +622,11 @@ int32_t ATHandler::read_int() } char buff[BUFF_SIZE]; - char *first_no_digit; - - if (read_string(buff, (size_t)sizeof(buff)) == 0) { + if (read_string(buff, sizeof(buff)) == 0) { return -1; } - return std::strtol(buff, &first_no_digit, 10); + return std::strtol(buff, NULL, 10); } void ATHandler::set_delimiter(char delimiter) @@ -1160,7 +1180,7 @@ size_t ATHandler::write(const void *data, size_t len) if (write_len + ret < DEBUG_MAXLEN) { debug_print((char *)data + write_len, ret); } else { - debug_print("..", sizeof("..")); + debug_print(DEBUG_END_MARK, sizeof(DEBUG_END_MARK) - 1); _debug_on = false; } } @@ -1212,14 +1232,15 @@ void ATHandler::debug_print(const char *p, int len) #if MBED_CONF_MBED_TRACE_ENABLE mbed_cellular_trace::mutex_wait(); #endif + char c; for (ssize_t i = 0; i < len; i++) { - char c = *p++; + c = *p++; if (!isprint(c)) { if (c == '\r') { debug("\n"); } else if (c == '\n') { } else { - debug("[%d]", c); + debug("#%02x", c); } } else { debug("%c", c); diff --git a/features/cellular/framework/AT/ATHandler.h b/features/cellular/framework/AT/ATHandler.h index c5757d2f87c..bdf97342855 100644 --- a/features/cellular/framework/AT/ATHandler.h +++ b/features/cellular/framework/AT/ATHandler.h @@ -120,20 +120,12 @@ class ATHandler { */ nsapi_error_t unlock_return_error(); - /** Set the urc callback for urc. If urc is found when parsing AT responses, then call if called. - * If urc is already set then it's not set twice. + /** Set callback function for URC * - * @param prefix Register urc prefix for callback. Urc could be for example "+CMTI: " - * @param callback Callback, which is called if urc is found in AT response - * @return NSAPI_ERROR_OK or NSAPI_ERROR_NO_MEMORY if no memory + * @param prefix URC text to look for, e.g. "+CMTI:" + * @param callback function to call on prefix, or 0 to remove callback */ - nsapi_error_t set_urc_handler(const char *prefix, mbed::Callback callback); - - /** Remove urc handler from linked list of urc's - * - * @param prefix Register urc prefix for callback. Urc could be for example "+CMTI: " - */ - void remove_urc_handler(const char *prefix); + void set_urc_handler(const char *prefix, Callback callback); ATHandler *_nextATHandler; // linked list @@ -198,10 +190,6 @@ class ATHandler { */ void process_oob(); - /** Set sigio for the current file handle. Sigio event goes through eventqueue so that it's handled in current thread. - */ - void set_filehandle_sigio(); - /** Set file handle, which is used for reading AT responses and writing AT commands * * @param fh file handle used for reading AT responses and writing AT commands @@ -229,6 +217,11 @@ class ATHandler { #endif FileHandle *_fileHandle; private: + /** Remove urc handler from linked list of urc's + * + * @param prefix Register urc prefix for callback. Urc could be for example "+CMTI: " + */ + void remove_urc_handler(const char *prefix); void set_error(nsapi_error_t err); @@ -242,7 +235,7 @@ class ATHandler { struct oob_t { const char *prefix; int prefix_len; - mbed::Callback cb; + Callback cb; oob_t *next; }; oob_t *_oobs; @@ -434,6 +427,13 @@ class ATHandler { */ void set_debug(bool debug_on); + /** + * Get degug state set by @ref set_debug + * + * @return current state of debug + */ + bool get_debug() const; + /** Set debug_on for all ATHandlers in the _atHandlers list * * @param debug_on Set true to enable debug traces diff --git a/features/cellular/framework/AT/AT_CellularBase.cpp b/features/cellular/framework/AT/AT_CellularBase.cpp index f1225fcfa6e..8d9ab8e1f8e 100644 --- a/features/cellular/framework/AT/AT_CellularBase.cpp +++ b/features/cellular/framework/AT/AT_CellularBase.cpp @@ -34,25 +34,19 @@ device_err_t AT_CellularBase::get_device_error() const return _at.get_last_device_error(); } -AT_CellularBase::SupportedFeature const *AT_CellularBase::_unsupported_features; +const intptr_t *AT_CellularBase::_property_array; -void AT_CellularBase::set_unsupported_features(const SupportedFeature *unsupported_features) +void AT_CellularBase::set_cellular_properties(const intptr_t *property_array) { - _unsupported_features = unsupported_features; -} - -bool AT_CellularBase::is_supported(SupportedFeature feature) -{ - if (!_unsupported_features) { - return true; + if (!property_array) { + tr_warning("trying to set an empty cellular property array"); + return; } - for (int i = 0; _unsupported_features[i] != SUPPORTED_FEATURE_END_MARK; i++) { - if (_unsupported_features[i] == feature) { - tr_debug("Unsupported feature (%d)", (int)feature); - return false; - } - } + _property_array = property_array; +} - return true; +intptr_t AT_CellularBase::get_property(CellularProperty key) +{ + return _property_array[key]; } diff --git a/features/cellular/framework/AT/AT_CellularBase.h b/features/cellular/framework/AT/AT_CellularBase.h index 218167c8632..4a993f40668 100644 --- a/features/cellular/framework/AT/AT_CellularBase.h +++ b/features/cellular/framework/AT/AT_CellularBase.h @@ -42,30 +42,38 @@ class AT_CellularBase { */ device_err_t get_device_error() const; - /** Cellular module need to define an array of unsupported features if any, - * by default all features are supported. + enum CellularProperty { + PROPERTY_C_EREG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. + PROPERTY_C_GREG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. + PROPERTY_C_REG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. + PROPERTY_AT_CGSN_WITH_TYPE, // 0 = not supported, 1 = supported. AT+CGSN without type is likely always supported similar to AT+GSN. + PROPERTY_AT_CGDATA, // 0 = not supported, 1 = supported. Alternative is to support only ATD*99***# + PROPERTY_AT_CGAUTH, // 0 = not supported, 1 = supported. APN authentication AT commands supported + PROPERTY_IPV4_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support IPV4? + PROPERTY_IPV6_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support IPV6? + PROPERTY_IPV4V6_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support dual stack IPV4V6? + PROPERTY_NON_IP_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support Non-IP? + PROPERTY_MAX + }; + + /** Cellular module need to define an array of cellular properties which defines module supported property values. * - * @param features Array of type SupportedFeature with last element FEATURE_END_MARK + * @param property_array array of module properties */ - enum SupportedFeature { - AT_CGSN_WITH_TYPE, // AT+CGSN without type is likely always supported similar to AT+GSN - AT_CGDATA, // alternative is to support only ATD*99***# - AT_CGAUTH, // APN authentication AT commands supported - SUPPORTED_FEATURE_END_MARK // must be last element in the array of features - }; - static void set_unsupported_features(const SupportedFeature *unsupported_features); + static void set_cellular_properties(const intptr_t *property_array); protected: + + static const intptr_t *_property_array; + ATHandler &_at; - /** Check if some functionality is supported by a cellular module. For example, - * most of standard AT commands are optional and not implemented by all cellular modules. + /** Get value for the given key. * - * @param feature check for feature to support - * @return true on supported, otherwise false + * @param key key for value to be fetched + * @return property value for the given key. Value type is defined in enum CellularProperty */ - static const SupportedFeature *_unsupported_features; - static bool is_supported(SupportedFeature feature); + static intptr_t get_property(CellularProperty key); }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_CellularContext.cpp b/features/cellular/framework/AT/AT_CellularContext.cpp index 1cb280318f7..1188979c1ce 100644 --- a/features/cellular/framework/AT/AT_CellularContext.cpp +++ b/features/cellular/framework/AT/AT_CellularContext.cpp @@ -20,12 +20,14 @@ #include "AT_CellularStack.h" #include "CellularLog.h" #include "CellularUtil.h" -#include "CellularSIM.h" #include "UARTSerial.h" #include "mbed_wait_api.h" #define NETWORK_TIMEOUT 30 * 60 * 1000 // 30 minutes #define DEVICE_TIMEOUT 5 * 60 * 1000 // 5 minutes +// Timeout to wait for URC indicating ciot optimization support from network +#define CP_OPT_NW_REPLY_TIMEOUT 3000 // 3 seconds + #if NSAPI_PPP_AVAILABLE #define AT_SYNC_TIMEOUT 1000 // 1 second timeout @@ -35,19 +37,20 @@ #define USE_APN_LOOKUP (MBED_CONF_CELLULAR_USE_APN_LOOKUP || (NSAPI_PPP_AVAILABLE && MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP)) #if USE_APN_LOOKUP +#include "CellularInformation.h" #include "APN_db.h" #endif //USE_APN_LOOKUP using namespace mbed_cellular_util; using namespace mbed; -AT_CellularContext::AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularBase(at), _ip_stack_type_requested(DEFAULT_STACK), _is_connected(false), _is_blocking(true), - _current_op(OP_INVALID), _device(device), _nw(0), _fh(0) +AT_CellularContext::AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : + AT_CellularBase(at), _is_connected(false), _is_blocking(true), + _current_op(OP_INVALID), _device(device), _nw(0), _fh(0), _cp_req(cp_req), _nonip_req(nonip_req), _cp_in_use(false) { tr_info("New CellularContext %s (%p)", apn ? apn : "", this); _stack = NULL; - _ip_stack_type = DEFAULT_STACK; + _pdp_type = DEFAULT_PDP_TYPE; _authentication_type = CellularContext::CHAP; _connect_status = NSAPI_STATUS_DISCONNECTED; _is_context_active = false; @@ -59,17 +62,24 @@ AT_CellularContext::AT_CellularContext(ATHandler &at, CellularDevice *device, co _cid = -1; _new_context_set = false; _next = NULL; + _dcd_pin = NC; + _active_high = false; + _cp_netif = NULL; } AT_CellularContext::~AT_CellularContext() { - tr_info("Delete CellularContext %s (%p)", _apn ? _apn : "", this); + tr_info("Delete CellularContext with apn: [%s] (%p)", _apn ? _apn : "", this); (void)disconnect(); if (_nw) { _device->close_network(); } + + if (_cp_netif) { + delete _cp_netif; + } } void AT_CellularContext::set_file_handle(FileHandle *fh) @@ -79,12 +89,31 @@ void AT_CellularContext::set_file_handle(FileHandle *fh) _at.set_file_handle(_fh); } +void AT_CellularContext::set_file_handle(UARTSerial *serial, PinName dcd_pin, bool active_high) +{ + tr_info("CellularContext serial %p", serial); + _dcd_pin = dcd_pin; + _active_high = active_high; + _fh = serial; + _at.set_file_handle(static_cast(serial)); + enable_hup(false); +} + +void AT_CellularContext::enable_hup(bool enable) +{ + if (_dcd_pin != NC) { + static_cast(_fh)->set_data_carrier_detect(enable ? _dcd_pin : NC, _active_high); + } +} + nsapi_error_t AT_CellularContext::connect() { tr_info("CellularContext connect"); if (_is_connected) { return NSAPI_ERROR_IS_CONNECTED; } + call_network_cb(NSAPI_STATUS_CONNECTING); + nsapi_error_t err = _device->attach_to_network(); _cb_data.error = check_operation(err, OP_CONNECT); @@ -103,6 +132,10 @@ nsapi_error_t AT_CellularContext::connect() } } + if (_cb_data.error == NSAPI_ERROR_ALREADY) { + return NSAPI_ERROR_OK; + } + return _cb_data.error; } @@ -147,6 +180,11 @@ nsapi_error_t AT_CellularContext::check_operation(nsapi_error_t err, ContextOper return err; } +nsapi_connection_status_t AT_CellularContext::get_connection_status() const +{ + return _connect_status; +} + uint32_t AT_CellularContext::get_timeout_for_operation(ContextOperation op) const { uint32_t timeout = NETWORK_TIMEOUT; // default timeout is 30 minutes as registration and attach may take time @@ -239,33 +277,21 @@ void AT_CellularContext::set_credentials(const char *apn, const char *uname, con _pwd = pwd; } -bool AT_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) +pdp_type_t AT_CellularContext::string_to_pdp_type(const char *pdp_type_str) { - if (stack_type == _ip_stack_type) { - return true; - } else { - return false; + pdp_type_t pdp_type = DEFAULT_PDP_TYPE; + int len = strlen(pdp_type_str); + + if (len == 6 && memcmp(pdp_type_str, "IPV4V6", len) == 0) { + pdp_type = IPV4V6_PDP_TYPE; + } else if (len == 4 && memcmp(pdp_type_str, "IPV6", len) == 0) { + pdp_type = IPV6_PDP_TYPE; + } else if (len == 2 && memcmp(pdp_type_str, "IP", len) == 0) { + pdp_type = IPV4_PDP_TYPE; + } else if (len == 6 && memcmp(pdp_type_str, "Non-IP", len) == 0) { + pdp_type = NON_IP_PDP_TYPE; } -} - -nsapi_ip_stack_t AT_CellularContext::get_stack_type() -{ - return _ip_stack_type; -} - -nsapi_ip_stack_t AT_CellularContext::string_to_stack_type(const char *pdp_type) -{ - nsapi_ip_stack_t stack = DEFAULT_STACK; - int len = strlen(pdp_type); - - if (len == 6 && memcmp(pdp_type, "IPV4V6", len) == 0) { - stack = IPV4V6_STACK; - } else if (len == 4 && memcmp(pdp_type, "IPV6", len) == 0) { - stack = IPV6_STACK; - } else if (len == 2 && memcmp(pdp_type, "IP", len) == 0) { - stack = IPV4_STACK; - } - return stack; + return pdp_type; } // PDP Context handling @@ -289,14 +315,21 @@ nsapi_error_t AT_CellularContext::do_user_authentication() { // if user has defined user name and password we need to call CGAUTH before activating or modifying context if (_pwd && _uname) { - if (!is_supported(AT_CGAUTH)) { + if (!get_property(PROPERTY_AT_CGAUTH)) { return NSAPI_ERROR_UNSUPPORTED; } _at.cmd_start("AT+CGAUTH="); _at.write_int(_cid); _at.write_int(_authentication_type); + + const bool stored_debug_state = _at.get_debug(); + _at.set_debug(false); + _at.write_string(_uname); _at.write_string(_pwd); + + _at.set_debug(stored_debug_state); + _at.cmd_stop_read_resp(); if (_at.get_last_error() != NSAPI_ERROR_OK) { return NSAPI_ERROR_AUTH_FAILURE; @@ -306,8 +339,24 @@ nsapi_error_t AT_CellularContext::do_user_authentication() return NSAPI_ERROR_OK; } +AT_CellularBase::CellularProperty AT_CellularContext::pdp_type_t_to_cellular_property(pdp_type_t pdp_type) +{ + AT_CellularBase::CellularProperty prop = PROPERTY_IPV4_PDP_TYPE; + if (pdp_type == IPV6_PDP_TYPE) { + prop = PROPERTY_IPV6_PDP_TYPE; + } else if (pdp_type == IPV4V6_PDP_TYPE) { + prop = PROPERTY_IPV4V6_PDP_TYPE; + } else if (pdp_type == NON_IP_PDP_TYPE) { + prop = PROPERTY_NON_IP_PDP_TYPE; + } + + return prop; +} + bool AT_CellularContext::get_context() { + bool modem_supports_ipv6 = get_property(PROPERTY_IPV6_PDP_TYPE); + bool modem_supports_ipv4 = get_property(PROPERTY_IPV4_PDP_TYPE); _at.cmd_start("AT+CGDCONT?"); _at.cmd_stop(); _at.resp_start("+CGDCONT:"); @@ -316,9 +365,6 @@ bool AT_CellularContext::get_context() char apn[MAX_ACCESSPOINT_NAME_LENGTH]; int apn_len = 0; - bool modem_supports_ipv6 = stack_type_supported(IPV6_STACK); - bool modem_supports_ipv4 = stack_type_supported(IPV4_STACK); - while (_at.info_resp()) { int cid = _at.read_int(); if (cid > cid_max) { @@ -332,51 +378,20 @@ bool AT_CellularContext::get_context() if (_apn && (strcmp(apn, _apn) != 0)) { continue; } - nsapi_ip_stack_t pdp_stack = string_to_stack_type(pdp_type_from_context); - // Accept dual PDP context for IPv4/IPv6 only modems - if (pdp_stack != DEFAULT_STACK && (stack_type_supported(pdp_stack) || pdp_stack == IPV4V6_STACK)) { - if (_ip_stack_type_requested == IPV4_STACK) { - if (pdp_stack == IPV4_STACK || pdp_stack == IPV4V6_STACK) { - _ip_stack_type = _ip_stack_type_requested; - _cid = cid; - break; - } - } else if (_ip_stack_type_requested == IPV6_STACK) { - if (pdp_stack == IPV6_STACK || pdp_stack == IPV4V6_STACK) { - _ip_stack_type = _ip_stack_type_requested; - _cid = cid; - break; - } - } else { - // requested dual stack or stack is not specified - // If dual PDP need to check for IPV4 or IPV6 modem support. Prefer IPv6. - if (pdp_stack == IPV4V6_STACK) { - if (modem_supports_ipv6) { - _ip_stack_type = IPV6_STACK; - _cid = cid; - break; - } else if (modem_supports_ipv4) { - _ip_stack_type = IPV4_STACK; - _cid = cid; - break; - } - // If PDP is IPV4 or IPV6 they are already checked if supported - } else { - _ip_stack_type = pdp_stack; - _cid = cid; - - if (pdp_stack == IPV6_STACK) { - break; - } - if (pdp_stack == IPV4_STACK && !modem_supports_ipv6) { - break; - } - } - } + + // APN matched -> Check PDP type + pdp_type_t pdp_type = string_to_pdp_type(pdp_type_from_context); + + // Accept exact matching PDP context type or dual PDP context for IPv4/IPv6 only modems + if (get_property(pdp_type_t_to_cellular_property(pdp_type)) || + ((pdp_type == IPV4V6_PDP_TYPE && (modem_supports_ipv4 || modem_supports_ipv6)) && !_nonip_req)) { + _pdp_type = pdp_type; + _cid = cid; } } } } + _at.resp_stop(); if (_cid == -1) { // no suitable context was found so create a new one if (!set_new_context(cid_max + 1)) { @@ -396,75 +411,77 @@ bool AT_CellularContext::get_context() bool AT_CellularContext::set_new_context(int cid) { - nsapi_ip_stack_t tmp_stack = _ip_stack_type_requested; - - if (tmp_stack == DEFAULT_STACK) { - bool modem_supports_ipv6 = stack_type_supported(IPV6_STACK); - bool modem_supports_ipv4 = stack_type_supported(IPV4_STACK); - - if (modem_supports_ipv6 && modem_supports_ipv4) { - tmp_stack = IPV4V6_STACK; - } else if (modem_supports_ipv6) { - tmp_stack = IPV6_STACK; - } else if (modem_supports_ipv4) { - tmp_stack = IPV4_STACK; - } - } - - char pdp_type[8 + 1] = {0}; - - switch (tmp_stack) { - case IPV4_STACK: - strncpy(pdp_type, "IP", sizeof(pdp_type)); - break; - case IPV6_STACK: - strncpy(pdp_type, "IPV6", sizeof(pdp_type)); - break; - case IPV4V6_STACK: - strncpy(pdp_type, "IPV6", sizeof(pdp_type)); // try first IPV6 and then fall-back to IPv4 - break; - default: - break; + bool modem_supports_ipv6 = get_property(PROPERTY_IPV6_PDP_TYPE); + bool modem_supports_ipv4 = get_property(PROPERTY_IPV4_PDP_TYPE); + bool modem_supports_nonip = get_property(PROPERTY_NON_IP_PDP_TYPE); + + char pdp_type_str[8 + 1] = {0}; + pdp_type_t pdp_type = IPV4_PDP_TYPE; + + if (_nonip_req && _cp_in_use && modem_supports_nonip) { + strncpy(pdp_type_str, "Non-IP", sizeof(pdp_type_str)); + pdp_type = NON_IP_PDP_TYPE; + } else if (modem_supports_ipv6 && modem_supports_ipv4) { + strncpy(pdp_type_str, "IPV4V6", sizeof(pdp_type_str)); + pdp_type = IPV4V6_PDP_TYPE; + } else if (modem_supports_ipv6) { + strncpy(pdp_type_str, "IPV6", sizeof(pdp_type_str)); + pdp_type = IPV6_PDP_TYPE; + } else if (modem_supports_ipv4) { + strncpy(pdp_type_str, "IP", sizeof(pdp_type_str)); + pdp_type = IPV4_PDP_TYPE; + } else { + return false; } //apn: "If the value is null or omitted, then the subscription value will be requested." bool success = false; _at.cmd_start("AT+CGDCONT="); _at.write_int(cid); - _at.write_string(pdp_type); + _at.write_string(pdp_type_str); _at.write_string(_apn); _at.cmd_stop_read_resp(); success = (_at.get_last_error() == NSAPI_ERROR_OK); - // Fall back to ipv4 - if (!success && tmp_stack == IPV4V6_STACK) { - _at.clear_error(); - tmp_stack = IPV4_STACK; - _at.cmd_start("AT+FCLASS=0;+CGDCONT="); - _at.write_int(cid); - _at.write_string("IP"); - _at.write_string(_apn); - _at.cmd_stop_read_resp(); - success = (_at.get_last_error() == NSAPI_ERROR_OK); - } - if (success) { - _ip_stack_type = tmp_stack; + _pdp_type = pdp_type; _cid = cid; _new_context_set = true; - tr_info("New PDP context %d, stack %s", _cid, pdp_type); + tr_info("New PDP context %d, type %d", _cid, pdp_type); } return success; } nsapi_error_t AT_CellularContext::do_activate_context() +{ + if (_nonip_req && _cp_in_use) { + return activate_non_ip_context(); + } + + // In IP case but also when Non-IP is requested and + // control plane optimization is not established -> activate ip context + _nonip_req = false; + return activate_ip_context(); +} + +nsapi_error_t AT_CellularContext::activate_ip_context() +{ + return activate_context(); +} + +nsapi_error_t AT_CellularContext::activate_non_ip_context() +{ + return activate_context(); +} + +nsapi_error_t AT_CellularContext::activate_context() { _at.lock(); nsapi_error_t err = NSAPI_ERROR_OK; - // try to find or create context with suitable stack + // try to find or create context of suitable type if (get_context()) { #if NSAPI_PPP_AVAILABLE _at.unlock(); @@ -532,8 +549,6 @@ nsapi_error_t AT_CellularContext::do_activate_context() void AT_CellularContext::do_connect() { - call_network_cb(NSAPI_STATUS_CONNECTING); - if (!_is_context_active) { _cb_data.error = do_activate_context(); #if !NSAPI_PPP_AVAILABLE @@ -571,8 +586,14 @@ void AT_CellularContext::do_connect() #if NSAPI_PPP_AVAILABLE nsapi_error_t AT_CellularContext::open_data_channel() { + // If Non-IP in use fail + if (_pdp_type == NON_IP_PDP_TYPE) { + tr_error("Attempt of PPP connect over NON-IP: failed to CONNECT"); + return NSAPI_ERROR_PARAMETER; + } + tr_info("CellularContext PPP connect"); - if (is_supported(AT_CGDATA)) { + if (get_property(PROPERTY_AT_CGDATA)) { _at.cmd_start("AT+CGDATA=\"PPP\","); _at.write_int(_cid); } else { @@ -592,11 +613,16 @@ nsapi_error_t AT_CellularContext::open_data_channel() } _at.set_is_filehandle_usable(false); - + enable_hup(true); /* Initialize PPP * If blocking: mbed_ppp_init() is a blocking call, it will block until connected, or timeout after 30 seconds*/ - return nsapi_ppp_connect(_at.get_file_handle(), callback(this, &AT_CellularContext::ppp_status_cb), _uname, _pwd, _ip_stack_type); + nsapi_error_t err = nsapi_ppp_connect(_at.get_file_handle(), callback(this, &AT_CellularContext::ppp_status_cb), _uname, _pwd, (nsapi_ip_stack_t)_pdp_type); + if (err) { + ppp_disconnected(); + } + + return err; } void AT_CellularContext::ppp_status_cb(nsapi_event_t ev, intptr_t ptr) @@ -604,6 +630,8 @@ void AT_CellularContext::ppp_status_cb(nsapi_event_t ev, intptr_t ptr) tr_debug("ppp_status_cb: event %d, ptr %d", ev, ptr); if (ev == NSAPI_EVENT_CONNECTION_STATUS_CHANGE && ptr == NSAPI_STATUS_GLOBAL_UP) { _is_connected = true; + } else if (ev == NSAPI_EVENT_CONNECTION_STATUS_CHANGE && ptr == NSAPI_STATUS_DISCONNECTED) { + ppp_disconnected(); } else { _is_connected = false; } @@ -614,6 +642,20 @@ void AT_CellularContext::ppp_status_cb(nsapi_event_t ev, intptr_t ptr) _device->cellular_callback(ev, ptr); } +void AT_CellularContext::ppp_disconnected() +{ + enable_hup(false); + + // after ppp disconnect if we wan't to use same at handler we need to set filehandle again to athandler so it + // will set the correct sigio and nonblocking + _at.lock(); + _at.set_is_filehandle_usable(true); + if (!_at.sync(AT_SYNC_TIMEOUT)) { // consume extra characters after ppp disconnect, also it may take a while until modem listens AT commands + tr_error("AT sync failed after PPP Disconnect"); + } + _at.unlock(); +} + #endif //#if NSAPI_PPP_AVAILABLE nsapi_error_t AT_CellularContext::disconnect() @@ -628,69 +670,77 @@ nsapi_error_t AT_CellularContext::disconnect() tr_error("CellularContext disconnect failed!"); // continue even in failure due to ppp disconnect in any case releases filehandle } - // after ppp disconnect if we wan't to use same at handler we need to set filehandle again to athandler so it - // will set the correct sigio and nonblocking - _at.lock(); - _at.set_file_handle(_at.get_file_handle()); - _at.set_is_filehandle_usable(true); - if (!_at.sync(AT_SYNC_TIMEOUT)) { // consume extra characters after ppp disconnect, also it may take a while until modem listens AT commands - tr_error("AT sync failed after PPP Disconnect"); - } - _at.unlock(); + ppp_disconnected(); #endif // NSAPI_PPP_AVAILABLE _at.lock(); // deactivate a context only if we have activated if (_is_context_activated) { - // CGACT and CGATT commands might take up to 3 minutes to respond. - _at.set_at_timeout(180 * 1000); - _is_context_active = false; - size_t active_contexts_count = 0; - _at.cmd_start("AT+CGACT?"); - _at.cmd_stop(); - _at.resp_start("+CGACT:"); - while (_at.info_resp()) { - int context_id = _at.read_int(); - int context_activation_state = _at.read_int(); - if (context_activation_state == 1) { - active_contexts_count++; - if (context_id == _cid) { - _is_context_active = true; - } - } + if (_nonip_req && _cp_in_use) { + deactivate_non_ip_context(); + } else { + deactivate_ip_context(); } - _at.resp_stop(); + } else { + call_network_cb(NSAPI_STATUS_DISCONNECTED); + } - CellularNetwork::RadioAccessTechnology rat = CellularNetwork::RAT_GSM; - // always return NSAPI_ERROR_OK - CellularNetwork::registration_params_t reg_params; - _nw->get_registration_params(reg_params); - rat = reg_params._act; - // 3GPP TS 27.007: - // For EPS, if an attempt is made to disconnect the last PDN connection, then the MT responds with ERROR - if (_is_context_active && (rat < CellularNetwork::RAT_E_UTRAN || active_contexts_count > 1)) { - _at.clear_error(); - _at.cmd_start("AT+CGACT=0,"); - _at.write_int(_cid); - _at.cmd_stop_read_resp(); - } + _is_connected = false; + + return _at.unlock_return_error(); +} + +void AT_CellularContext::deactivate_ip_context() +{ + deactivate_context(); +} + +void AT_CellularContext::deactivate_non_ip_context() +{ + deactivate_context(); +} - if (_new_context_set) { - _at.clear_error(); - _at.cmd_start("AT+CGDCONT="); - _at.write_int(_cid); - _at.cmd_stop_read_resp(); +void AT_CellularContext::deactivate_context() +{ + // CGACT and CGATT commands might take up to 3 minutes to respond. + _at.set_at_timeout(180 * 1000); + _is_context_active = false; + size_t active_contexts_count = 0; + _at.cmd_start("AT+CGACT?"); + _at.cmd_stop(); + _at.resp_start("+CGACT:"); + while (_at.info_resp()) { + int context_id = _at.read_int(); + int context_activation_state = _at.read_int(); + if (context_activation_state == 1) { + active_contexts_count++; + if (context_id == _cid) { + _is_context_active = true; + } } + } + _at.resp_stop(); + + CellularNetwork::RadioAccessTechnology rat = CellularNetwork::RAT_GSM; + // always return NSAPI_ERROR_OK + CellularNetwork::registration_params_t reg_params; + _nw->get_registration_params(reg_params); + rat = reg_params._act; + // 3GPP TS 27.007: + // For EPS, if an attempt is made to disconnect the last PDN connection, then the MT responds with ERROR + if (_is_context_active && (rat < CellularNetwork::RAT_E_UTRAN || active_contexts_count > 1)) { _at.clear_error(); - _at.cmd_start("AT+CGATT=0"); + _at.cmd_start("AT+CGACT=0,"); + _at.write_int(_cid); _at.cmd_stop_read_resp(); - _at.restore_at_timeout(); } - _is_connected = false; - call_network_cb(NSAPI_STATUS_DISCONNECTED); - - return _at.unlock_return_error(); + if (_new_context_set) { + _at.clear_error(); + _at.cmd_start("AT+CGDCONT="); + _at.write_int(_cid); + _at.cmd_stop_read_resp(); + } } nsapi_error_t AT_CellularContext::get_apn_backoff_timer(int &backoff_timer) @@ -833,14 +883,13 @@ void AT_CellularContext::cellular_callback(nsapi_event_t ev, intptr_t ptr) cell_callback_data_t *data = (cell_callback_data_t *)ptr; cellular_connection_status_t st = (cellular_connection_status_t)ev; _cb_data.error = data->error; - tr_debug("CellularContext: event %d, err %d, data %d", ev, data->error, data->status_data); #if USE_APN_LOOKUP - if (st == CellularSIMStatusChanged && data->status_data == CellularSIM::SimStateReady && + if (st == CellularSIMStatusChanged && data->status_data == CellularDevice::SimStateReady && _cb_data.error == NSAPI_ERROR_OK) { if (!_apn) { char imsi[MAX_IMSI_LENGTH + 1]; wait(1); // need to wait to access SIM in some modems - _cb_data.error = _device->open_sim()->get_imsi(imsi); + _cb_data.error = _device->open_information()->get_imsi(imsi, sizeof(imsi)); if (_cb_data.error == NSAPI_ERROR_OK) { const char *apn_config = apnconfig(imsi); if (apn_config) { @@ -858,7 +907,7 @@ void AT_CellularContext::cellular_callback(nsapi_event_t ev, intptr_t ptr) _semaphore.release(); } } - _device->close_sim(); + _device->close_information(); } } #endif // USE_APN_LOOKUP @@ -867,6 +916,15 @@ void AT_CellularContext::cellular_callback(nsapi_event_t ev, intptr_t ptr) _nw = _device->open_network(_fh); } + if (_cp_req && !_cp_in_use && (data->error == NSAPI_ERROR_OK) && + (st == CellularSIMStatusChanged && data->status_data == CellularDevice::SimStateReady)) { + if (setup_control_plane_opt() != NSAPI_ERROR_OK) { + tr_error("Control plane SETUP failed!"); + } else { + tr_info("Control plane SETUP success!"); + } + } + if (_is_blocking) { if (data->error != NSAPI_ERROR_OK) { // operation failed, release semaphore @@ -874,7 +932,7 @@ void AT_CellularContext::cellular_callback(nsapi_event_t ev, intptr_t ptr) } else { if ((st == CellularDeviceReady && _current_op == OP_DEVICE_READY) || (st == CellularSIMStatusChanged && _current_op == OP_SIM_READY && - data->status_data == CellularSIM::SimStateReady)) { + data->status_data == CellularDevice::SimStateReady)) { // target reached, release semaphore _semaphore.release(); } else if (st == CellularRegistrationStatusChanged && (data->status_data == CellularNetwork::RegisteredHomeNetwork || @@ -900,7 +958,6 @@ void AT_CellularContext::cellular_callback(nsapi_event_t ev, intptr_t ptr) } } } else { - tr_debug("CellularContext: event %d, ptr %d", ev, ptr); #if NSAPI_PPP_AVAILABLE if (_is_blocking) { if (ev == NSAPI_EVENT_CONNECTION_STATUS_CHANGE && ptr == NSAPI_STATUS_GLOBAL_UP) { @@ -934,3 +991,61 @@ void AT_CellularContext::call_network_cb(nsapi_connection_status_t status) } } } + +ControlPlane_netif *AT_CellularContext::get_cp_netif() +{ + tr_error("No control plane interface available from base context!"); + return NULL; +} + +nsapi_error_t AT_CellularContext::setup_control_plane_opt() +{ + // check if control plane optimization already set + mbed::CellularNetwork::CIoT_Supported_Opt supported_network_opt; + + if (_nw->get_ciot_network_optimization_config(supported_network_opt)) { + return NSAPI_ERROR_DEVICE_ERROR; + } + + if (supported_network_opt == mbed::CellularNetwork::CIOT_OPT_CONTROL_PLANE || + supported_network_opt == mbed::CellularNetwork::CIOT_OPT_BOTH) { + _cp_in_use = true; + return NSAPI_ERROR_OK; + } + + // ciot optimization not set by app so need to set it now + nsapi_error_t ciot_opt_ret; + ciot_opt_ret = _nw->set_ciot_optimization_config(mbed::CellularNetwork::CIOT_OPT_CONTROL_PLANE, + mbed::CellularNetwork::PREFERRED_UE_OPT_CONTROL_PLANE, + callback(this, &AT_CellularContext::ciot_opt_cb)); + + if (ciot_opt_ret != NSAPI_ERROR_OK) { + return ciot_opt_ret; + } + + //wait for control plane opt call back to release semaphore + _cp_opt_semaphore.wait(CP_OPT_NW_REPLY_TIMEOUT); + + if (_cp_in_use) { + return NSAPI_ERROR_OK; + } + + return NSAPI_ERROR_DEVICE_ERROR; +} + +void AT_CellularContext::ciot_opt_cb(mbed::CellularNetwork::CIoT_Supported_Opt ciot_opt) +{ + if (ciot_opt == mbed::CellularNetwork::CIOT_OPT_CONTROL_PLANE || + ciot_opt == mbed::CellularNetwork::CIOT_OPT_BOTH) { + _cp_in_use = true; + } + _cp_opt_semaphore.release(); +} + +void AT_CellularContext::set_disconnect() +{ + _is_connected = false; + cell_callback_data_t data; + data.error = NSAPI_STATUS_DISCONNECTED; + _device->cellular_callback(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, (intptr_t)&data); +} diff --git a/features/cellular/framework/AT/AT_CellularContext.h b/features/cellular/framework/AT/AT_CellularContext.h index c045c0a3ad6..a5f6aee6913 100644 --- a/features/cellular/framework/AT/AT_CellularContext.h +++ b/features/cellular/framework/AT/AT_CellularContext.h @@ -27,7 +27,7 @@ namespace mbed { class AT_CellularContext : public CellularContext, public AT_CellularBase { public: - AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn = 0); + AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn = 0, bool cp_req = false, bool nonip_req = false); virtual ~AT_CellularContext(); // from CellularBase/NetworkInterface @@ -37,6 +37,7 @@ class AT_CellularContext : public CellularContext, public AT_CellularBase { virtual void attach(mbed::Callback status_cb); virtual nsapi_error_t connect(); virtual nsapi_error_t disconnect(); + virtual nsapi_connection_status_t get_connection_status() const; virtual bool is_connected(); // from CellularBase virtual void set_plmn(const char *plmn); @@ -57,6 +58,10 @@ class AT_CellularContext : public CellularContext, public AT_CellularBase { virtual nsapi_error_t register_to_network(); virtual nsapi_error_t attach_to_network(); virtual void set_file_handle(FileHandle *fh); + virtual void set_file_handle(UARTSerial *serial, PinName dcd_pin = NC, bool active_high = false); + virtual void enable_hup(bool enable); + + virtual ControlPlane_netif *get_cp_netif(); protected: virtual void cellular_callback(nsapi_event_t ev, intptr_t ptr); @@ -75,12 +80,6 @@ class AT_CellularContext : public CellularContext, public AT_CellularBase { */ virtual void do_connect(); - /** Check if modem supports the given stack type. Can be overridden by the modem. - * - * @return true if supported - */ - virtual bool stack_type_supported(nsapi_ip_stack_t stack_type); - /** Get the operation specific timeout. Used in synchronous mode when setting the maximum * waiting time. Modem specific implementation can override this to provide different timeouts. * @@ -95,21 +94,31 @@ class AT_CellularContext : public CellularContext, public AT_CellularBase { */ void call_network_cb(nsapi_connection_status_t status); + virtual nsapi_error_t activate_non_ip_context(); + virtual nsapi_error_t setup_control_plane_opt(); + virtual void deactivate_non_ip_context(); + virtual void set_disconnect(); + private: #if NSAPI_PPP_AVAILABLE nsapi_error_t open_data_channel(); void ppp_status_cb(nsapi_event_t ev, intptr_t ptr); + void ppp_disconnected(); #endif // #if NSAPI_PPP_AVAILABLE nsapi_error_t do_activate_context(); + nsapi_error_t activate_context(); + nsapi_error_t activate_ip_context(); + void deactivate_context(); + void deactivate_ip_context(); bool set_new_context(int cid); bool get_context(); nsapi_error_t delete_current_context(); - nsapi_ip_stack_t string_to_stack_type(const char *pdp_type); - nsapi_ip_stack_t get_stack_type(); + pdp_type_t string_to_pdp_type(const char *pdp_type); nsapi_error_t check_operation(nsapi_error_t err, ContextOperation op); + AT_CellularBase::CellularProperty pdp_type_t_to_cellular_property(pdp_type_t pdp_type); + void ciot_opt_cb(mbed::CellularNetwork::CIoT_Supported_Opt ciot_opt); private: - nsapi_ip_stack_t _ip_stack_type_requested; bool _is_connected; bool _is_blocking; ContextOperation _current_op; @@ -118,6 +127,16 @@ class AT_CellularContext : public CellularContext, public AT_CellularBase { CellularNetwork *_nw; FileHandle *_fh; rtos::Semaphore _semaphore; + rtos::Semaphore _cp_opt_semaphore; + +protected: + // flag indicating if CP was requested to be setup + bool _cp_req; + // flag indicating if Non-IP context was requested to be setup + bool _nonip_req; + + // tells if CCIOTOPTI received green from network for CP optimization use + bool _cp_in_use; }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_CellularDevice.cpp b/features/cellular/framework/AT/AT_CellularDevice.cpp index 0ab15c60bfb..f017b89af2e 100644 --- a/features/cellular/framework/AT/AT_CellularDevice.cpp +++ b/features/cellular/framework/AT/AT_CellularDevice.cpp @@ -15,11 +15,10 @@ * limitations under the License. */ +#include "CellularUtil.h" #include "AT_CellularDevice.h" #include "AT_CellularInformation.h" #include "AT_CellularNetwork.h" -#include "AT_CellularPower.h" -#include "AT_CellularSIM.h" #include "AT_CellularSMS.h" #include "AT_CellularContext.h" #include "AT_CellularStack.h" @@ -28,15 +27,20 @@ #include "UARTSerial.h" #include "FileHandle.h" +using namespace mbed_cellular_util; using namespace events; using namespace mbed; #define DEFAULT_AT_TIMEOUT 1000 // at default timeout in milliseconds +const int MAX_SIM_RESPONSE_LENGTH = 16; AT_CellularDevice::AT_CellularDevice(FileHandle *fh) : CellularDevice(fh), _network(0), _sms(0), - _sim(0), _power(0), _information(0), _context_list(0), _default_timeout(DEFAULT_AT_TIMEOUT), + _information(0), _context_list(0), _default_timeout(DEFAULT_AT_TIMEOUT), _modem_debug_on(false) { + MBED_ASSERT(fh); + _at = get_at_handler(fh); + MBED_ASSERT(_at); } AT_CellularDevice::~AT_CellularDevice() @@ -46,14 +50,10 @@ AT_CellularDevice::~AT_CellularDevice() // make sure that all is deleted even if somewhere close was not called and reference counting is messed up. _network_ref_count = 1; _sms_ref_count = 1; - _power_ref_count = 1; - _sim_ref_count = 1; _info_ref_count = 1; close_network(); close_sms(); - close_power(); - close_sim(); close_information(); AT_CellularContext *curr = _context_list; @@ -65,6 +65,28 @@ AT_CellularDevice::~AT_CellularDevice() curr = next; release_at_handler(at); } + + release_at_handler(_at); +} + +nsapi_error_t AT_CellularDevice::hard_power_on() +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t AT_CellularDevice::hard_power_off() +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t AT_CellularDevice::soft_power_on() +{ + return NSAPI_ERROR_OK; +} + +nsapi_error_t AT_CellularDevice::soft_power_off() +{ + return NSAPI_ERROR_OK; } // each parser is associated with one filehandle (that is UART) @@ -92,38 +114,122 @@ nsapi_error_t AT_CellularDevice::release_at_handler(ATHandler *at_handler) } } +nsapi_error_t AT_CellularDevice::get_sim_state(SimState &state) +{ + char simstr[MAX_SIM_RESPONSE_LENGTH]; + _at->lock(); + _at->flush(); + _at->cmd_start("AT+CPIN?"); + _at->cmd_stop(); + _at->resp_start("+CPIN:"); + ssize_t len = _at->read_string(simstr, sizeof(simstr)); + if (len != -1) { + if (len >= 5 && memcmp(simstr, "READY", 5) == 0) { + state = SimStateReady; + } else if (len >= 7 && memcmp(simstr, "SIM PIN", 7) == 0) { + state = SimStatePinNeeded; + } else if (len >= 7 && memcmp(simstr, "SIM PUK", 7) == 0) { + state = SimStatePukNeeded; + } else { + simstr[len] = '\0'; + tr_error("Unknown SIM state %s", simstr); + state = SimStateUnknown; + } + } else { + tr_warn("SIM not readable."); + state = SimStateUnknown; // SIM may not be ready yet or +CPIN may be unsupported command + } + _at->resp_stop(); + nsapi_error_t error = _at->get_last_error(); + _at->unlock(); +#if MBED_CONF_MBED_TRACE_ENABLE + switch (state) { + case SimStatePinNeeded: + tr_info("SIM PIN required"); + break; + case SimStatePukNeeded: + tr_error("SIM PUK required"); + break; + case SimStateUnknown: + tr_warn("SIM state unknown"); + break; + default: + tr_info("SIM is ready"); + break; + } +#endif + return error; +} + +nsapi_error_t AT_CellularDevice::set_pin(const char *sim_pin) +{ + // if SIM is already in ready state then settings the PIN + // will return error so let's check the state before settings the pin. + SimState state; + if (get_sim_state(state) == NSAPI_ERROR_OK && state == SimStateReady) { + return NSAPI_ERROR_OK; + } + + if (sim_pin == NULL) { + return NSAPI_ERROR_PARAMETER; + } + + _at->lock(); + _at->cmd_start("AT+CPIN="); + + const bool stored_debug_state = _at->get_debug(); + _at->set_debug(false); + + _at->write_string(sim_pin); + + _at->set_debug(stored_debug_state); + + _at->cmd_stop_read_resp(); + return _at->unlock_return_error(); +} + CellularContext *AT_CellularDevice::get_context_list() const { return _context_list; } -CellularContext *AT_CellularDevice::create_context(FileHandle *fh, const char *apn) +CellularContext *AT_CellularDevice::create_context(UARTSerial *serial, const char *const apn, PinName dcd_pin, + bool active_high, bool cp_req, bool nonip_req) { - ATHandler *atHandler = get_at_handler(fh); - if (atHandler) { - AT_CellularContext *ctx = create_context_impl(*atHandler, apn); - AT_CellularContext *curr = _context_list; - - if (_context_list == NULL) { - _context_list = ctx; - return ctx; - } + // Call FileHandle base version - explict upcast to avoid recursing into ourselves + CellularContext *ctx = create_context(static_cast(serial), apn, cp_req, nonip_req); + if (serial) { + ctx->set_file_handle(serial, dcd_pin, active_high); + } + return ctx; +} - AT_CellularContext *prev; - while (curr) { - prev = curr; - curr = (AT_CellularContext *)curr->_next; - } +CellularContext *AT_CellularDevice::create_context(FileHandle *fh, const char *apn, bool cp_req, bool nonip_req) +{ + AT_CellularContext *ctx = create_context_impl(*get_at_handler(fh), apn, cp_req, nonip_req); + AT_CellularContext *curr = _context_list; - prev->_next = ctx; + if (_context_list == NULL) { + _context_list = ctx; return ctx; } - return NULL; + + AT_CellularContext *prev = NULL; + while (curr) { + prev = curr; + curr = (AT_CellularContext *)curr->_next; + } + + prev->_next = ctx; + return ctx; } -AT_CellularContext *AT_CellularDevice::create_context_impl(ATHandler &at, const char *apn) +AT_CellularContext *AT_CellularDevice::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) { - return new AT_CellularContext(at, this, apn); + if (cp_req) { + + } + return new AT_CellularContext(at, this, apn, cp_req, nonip_req); } void AT_CellularDevice::delete_context(CellularContext *context) @@ -153,70 +259,27 @@ void AT_CellularDevice::delete_context(CellularContext *context) CellularNetwork *AT_CellularDevice::open_network(FileHandle *fh) { if (!_network) { - ATHandler *atHandler = get_at_handler(fh); - if (atHandler) { - _network = open_network_impl(*atHandler); - } - } - if (_network) { - _network_ref_count++; + _network = open_network_impl(*get_at_handler(fh)); } + _network_ref_count++; return _network; } CellularSMS *AT_CellularDevice::open_sms(FileHandle *fh) { if (!_sms) { - ATHandler *atHandler = get_at_handler(fh); - if (atHandler) { - _sms = open_sms_impl(*atHandler); - } - } - if (_sms) { - _sms_ref_count++; + _sms = open_sms_impl(*get_at_handler(fh)); } + _sms_ref_count++; return _sms; } -CellularSIM *AT_CellularDevice::open_sim(FileHandle *fh) -{ - if (!_sim) { - ATHandler *atHandler = get_at_handler(fh); - if (atHandler) { - _sim = open_sim_impl(*atHandler); - } - } - if (_sim) { - _sim_ref_count++; - } - return _sim; -} - -CellularPower *AT_CellularDevice::open_power(FileHandle *fh) -{ - if (!_power) { - ATHandler *atHandler = get_at_handler(fh); - if (atHandler) { - _power = open_power_impl(*atHandler); - } - } - if (_power) { - _power_ref_count++; - } - return _power; -} - CellularInformation *AT_CellularDevice::open_information(FileHandle *fh) { if (!_information) { - ATHandler *atHandler = get_at_handler(fh); - if (atHandler) { - _information = open_information_impl(*atHandler); - } - } - if (_information) { - _info_ref_count++; + _information = open_information_impl(*get_at_handler(fh)); } + _info_ref_count++; return _information; } @@ -230,16 +293,6 @@ AT_CellularSMS *AT_CellularDevice::open_sms_impl(ATHandler &at) return new AT_CellularSMS(at); } -AT_CellularPower *AT_CellularDevice::open_power_impl(ATHandler &at) -{ - return new AT_CellularPower(at); -} - -AT_CellularSIM *AT_CellularDevice::open_sim_impl(ATHandler &at) -{ - return new AT_CellularSIM(at); -} - AT_CellularInformation *AT_CellularDevice::open_information_impl(ATHandler &at) { return new AT_CellularInformation(at); @@ -271,32 +324,6 @@ void AT_CellularDevice::close_sms() } } -void AT_CellularDevice::close_power() -{ - if (_power) { - _power_ref_count--; - if (_power_ref_count == 0) { - ATHandler *atHandler = &_power->get_at_handler(); - delete _power; - _power = NULL; - release_at_handler(atHandler); - } - } -} - -void AT_CellularDevice::close_sim() -{ - if (_sim) { - _sim_ref_count--; - if (_sim_ref_count == 0) { - ATHandler *atHandler = &_sim->get_at_handler(); - delete _sim; - _sim = NULL; - release_at_handler(atHandler); - } - } -} - void AT_CellularDevice::close_information() { if (_information) { @@ -329,19 +356,177 @@ void AT_CellularDevice::modem_debug_on(bool on) ATHandler::set_debug_list(_modem_debug_on); } -nsapi_error_t AT_CellularDevice::init_module() +nsapi_error_t AT_CellularDevice::init() { -#if MBED_CONF_MBED_TRACE_ENABLE - CellularInformation *information = open_information(); - if (information) { - char *pbuf = new char[100]; - nsapi_error_t ret = information->get_model(pbuf, sizeof(*pbuf)); - close_information(); - if (ret == NSAPI_ERROR_OK) { - tr_info("Model %s", pbuf); + _at->lock(); + _at->flush(); + _at->cmd_start("ATE0"); // echo off + _at->cmd_stop_read_resp(); + + _at->cmd_start("AT+CMEE=1"); // verbose responses + _at->cmd_stop_read_resp(); + + _at->cmd_start("AT+CFUN=1"); // set full functionality + _at->cmd_stop_read_resp(); + + return _at->unlock_return_error(); +} + +nsapi_error_t AT_CellularDevice::shutdown() +{ + _at->lock(); + if (_state_machine) { + _state_machine->reset(); + } + CellularDevice::shutdown(); + _at->cmd_start("AT+CFUN=0");// set to minimum functionality + _at->cmd_stop_read_resp(); + return _at->unlock_return_error(); +} + +nsapi_error_t AT_CellularDevice::is_ready() +{ + _at->lock(); + _at->cmd_start("AT"); + _at->cmd_stop_read_resp(); + + // we need to do this twice because for example after data mode the first 'AT' command will give modem a + // stimulus that we are back to command mode. + _at->clear_error(); + _at->cmd_start("AT"); + _at->cmd_stop_read_resp(); + + return _at->unlock_return_error(); +} + +void AT_CellularDevice::set_ready_cb(Callback callback) +{ +} + +nsapi_error_t AT_CellularDevice::set_power_save_mode(int periodic_time, int active_time) +{ + _at->lock(); + + if (periodic_time == 0 && active_time == 0) { + // disable PSM + _at->cmd_start("AT+CPSMS="); + _at->write_int(0); + _at->cmd_stop_read_resp(); + } else { + const int PSMTimerBits = 5; + + /** + Table 10.5.163a/3GPP TS 24.008: GPRS Timer 3 information element + + Bits 5 to 1 represent the binary coded timer value. + + Bits 6 to 8 defines the timer value unit for the GPRS timer as follows: + 8 7 6 + 0 0 0 value is incremented in multiples of 10 minutes + 0 0 1 value is incremented in multiples of 1 hour + 0 1 0 value is incremented in multiples of 10 hours + 0 1 1 value is incremented in multiples of 2 seconds + 1 0 0 value is incremented in multiples of 30 seconds + 1 0 1 value is incremented in multiples of 1 minute + 1 1 0 value is incremented in multiples of 320 hours (NOTE 1) + 1 1 1 value indicates that the timer is deactivated (NOTE 2). + */ + char pt[8 + 1]; // timer value encoded as 3GPP IE + const int ie_value_max = 0x1f; + uint32_t periodic_timer = 0; + if (periodic_time <= 2 * ie_value_max) { // multiples of 2 seconds + periodic_timer = periodic_time / 2; + strcpy(pt, "01100000"); + } else { + if (periodic_time <= 30 * ie_value_max) { // multiples of 30 seconds + periodic_timer = periodic_time / 30; + strcpy(pt, "10000000"); + } else { + if (periodic_time <= 60 * ie_value_max) { // multiples of 1 minute + periodic_timer = periodic_time / 60; + strcpy(pt, "10100000"); + } else { + if (periodic_time <= 10 * 60 * ie_value_max) { // multiples of 10 minutes + periodic_timer = periodic_time / (10 * 60); + strcpy(pt, "00000000"); + } else { + if (periodic_time <= 60 * 60 * ie_value_max) { // multiples of 1 hour + periodic_timer = periodic_time / (60 * 60); + strcpy(pt, "00100000"); + } else { + if (periodic_time <= 10 * 60 * 60 * ie_value_max) { // multiples of 10 hours + periodic_timer = periodic_time / (10 * 60 * 60); + strcpy(pt, "01000000"); + } else { // multiples of 320 hours + int t = periodic_time / (320 * 60 * 60); + if (t > ie_value_max) { + t = ie_value_max; + } + periodic_timer = t; + strcpy(pt, "11000000"); + } + } + } + } + } + } + + uint_to_binary_str(periodic_timer, &pt[3], sizeof(pt) - 3, PSMTimerBits); + pt[8] = '\0'; + + /** + Table 10.5.172/3GPP TS 24.008: GPRS Timer information element + + Bits 5 to 1 represent the binary coded timer value. + + Bits 6 to 8 defines the timer value unit for the GPRS timer as follows: + + 8 7 6 + 0 0 0 value is incremented in multiples of 2 seconds + 0 0 1 value is incremented in multiples of 1 minute + 0 1 0 value is incremented in multiples of decihours + 1 1 1 value indicates that the timer is deactivated. + + Other values shall be interpreted as multiples of 1 minute in this version of the protocol. + */ + char at[8 + 1]; + uint32_t active_timer; // timer value encoded as 3GPP IE + if (active_time <= 2 * ie_value_max) { // multiples of 2 seconds + active_timer = active_time / 2; + strcpy(at, "00000000"); + } else { + if (active_time <= 60 * ie_value_max) { // multiples of 1 minute + active_timer = (1 << 5) | (active_time / 60); + strcpy(at, "00100000"); + } else { // multiples of decihours + int t = active_time / (6 * 60); + if (t > ie_value_max) { + t = ie_value_max; + } + active_timer = t; + strcpy(at, "01000000"); + } + } + + uint_to_binary_str(active_timer, &at[3], sizeof(at) - 3, PSMTimerBits); + at[8] = '\0'; + + // request for both GPRS and LTE + _at->cmd_start("AT+CPSMS="); + _at->write_int(1); + _at->write_string(pt); + _at->write_string(at); + _at->write_string(pt); + _at->write_string(at); + _at->cmd_stop_read_resp(); + + if (_at->get_last_error() != NSAPI_ERROR_OK) { + tr_warn("Power save mode not enabled!"); + } else { + // network may not agree with power save options but + // that should be fine as timeout is not longer than requested } - delete[] pbuf; } -#endif - return NSAPI_ERROR_OK; + + return _at->unlock_return_error(); } diff --git a/features/cellular/framework/AT/AT_CellularDevice.h b/features/cellular/framework/AT/AT_CellularDevice.h index 9b171a724b5..df2dd71289d 100644 --- a/features/cellular/framework/AT/AT_CellularDevice.h +++ b/features/cellular/framework/AT/AT_CellularDevice.h @@ -25,8 +25,6 @@ namespace mbed { class ATHandler; class AT_CellularInformation; class AT_CellularNetwork; -class AT_CellularPower; -class AT_CellularSIM; class AT_CellularSMS; class AT_CellularContext; @@ -41,27 +39,34 @@ class AT_CellularDevice : public CellularDevice { AT_CellularDevice(FileHandle *fh); virtual ~AT_CellularDevice(); - virtual CellularContext *create_context(FileHandle *fh = NULL, const char *apn = NULL); + virtual nsapi_error_t hard_power_on(); + + virtual nsapi_error_t hard_power_off(); + + virtual nsapi_error_t soft_power_on(); + + virtual nsapi_error_t soft_power_off(); + + virtual nsapi_error_t set_pin(const char *sim_pin); + + virtual nsapi_error_t get_sim_state(SimState &state); + + virtual CellularContext *create_context(FileHandle *fh = NULL, const char *apn = NULL, bool cp_req = false, bool nonip_req = false); + + virtual CellularContext *create_context(UARTSerial *serial, const char *const apn, PinName dcd_pin = NC, bool active_high = false, bool cp_req = false, bool nonip_req = false); + virtual void delete_context(CellularContext *context); virtual CellularNetwork *open_network(FileHandle *fh = NULL); virtual CellularSMS *open_sms(FileHandle *fh = NULL); - virtual CellularPower *open_power(FileHandle *fh = NULL); - - virtual CellularSIM *open_sim(FileHandle *fh = NULL); - virtual CellularInformation *open_information(FileHandle *fh = NULL); virtual void close_network(); virtual void close_sms(); - virtual void close_power(); - - virtual void close_sim(); - virtual void close_information(); virtual void set_timeout(int timeout); @@ -70,7 +75,16 @@ class AT_CellularDevice : public CellularDevice { virtual void modem_debug_on(bool on); - virtual nsapi_error_t init_module(); + virtual nsapi_error_t init(); + + virtual nsapi_error_t shutdown(); + + virtual nsapi_error_t is_ready(); + + virtual void set_ready_cb(Callback callback); + + virtual nsapi_error_t set_power_save_mode(int periodic_time, int active_time = 0); + virtual ATHandler *get_at_handler(FileHandle *fh); @@ -85,12 +99,14 @@ class AT_CellularDevice : public CellularDevice { /** Creates new instance of AT_CellularContext or if overridden, modem specific implementation. * - * @param at ATHandler reference for communication with the modem. - * @param apn access point to use with context - * @return new instance of class AT_CellularContext + * @param at ATHandler reference for communication with the modem. + * @param apn access point to use with context + * @param cp_req flag indicating if control plane EPS optimization needs to be setup + * @param nonip_req flag indicating if PDP context needs to be Non-IP + * @return new instance of class AT_CellularContext * */ - virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); + virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false); /** Create new instance of AT_CellularNetwork or if overridden, modem specific implementation. * @@ -106,20 +122,6 @@ class AT_CellularDevice : public CellularDevice { */ virtual AT_CellularSMS *open_sms_impl(ATHandler &at); - /** Create new instance of AT_CellularPower or if overridden, modem specific implementation. - * - * @param at ATHandler reference for communication with the modem. - * @return new instance of class AT_CellularPower - */ - virtual AT_CellularPower *open_power_impl(ATHandler &at); - - /** Create new instance of AT_CellularSIM or if overridden, modem specific implementation. - * - * @param at ATHandler reference for communication with the modem. - * @return new instance of class AT_CellularSIM - */ - virtual AT_CellularSIM *open_sim_impl(ATHandler &at); - /** Create new instance of AT_CellularInformation or if overridden, modem specific implementation. * * @param at ATHandler reference for communication with the modem. @@ -131,12 +133,11 @@ class AT_CellularDevice : public CellularDevice { AT_CellularNetwork *_network; AT_CellularSMS *_sms; - AT_CellularSIM *_sim; - AT_CellularPower *_power; AT_CellularInformation *_information; AT_CellularContext *_context_list; int _default_timeout; bool _modem_debug_on; + ATHandler *_at; }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_CellularInformation.cpp b/features/cellular/framework/AT/AT_CellularInformation.cpp index 73a49f4fe01..5bb965090ce 100644 --- a/features/cellular/framework/AT/AT_CellularInformation.cpp +++ b/features/cellular/framework/AT/AT_CellularInformation.cpp @@ -46,11 +46,15 @@ nsapi_error_t AT_CellularInformation::get_revision(char *buf, size_t buf_size) nsapi_error_t AT_CellularInformation::get_serial_number(char *buf, size_t buf_size, SerialNumberType type) { + if (buf == NULL || buf_size == 0) { + return NSAPI_ERROR_PARAMETER; + } + if (type == SN) { return get_info("AT+CGSN", buf, buf_size); } - if (!is_supported(AT_CGSN_WITH_TYPE)) { + if (!get_property(PROPERTY_AT_CGSN_WITH_TYPE)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -66,8 +70,10 @@ nsapi_error_t AT_CellularInformation::get_serial_number(char *buf, size_t buf_si nsapi_error_t AT_CellularInformation::get_info(const char *cmd, char *buf, size_t buf_size) { + if (buf == NULL || buf_size == 0) { + return NSAPI_ERROR_PARAMETER; + } _at.lock(); - _at.cmd_start(cmd); _at.cmd_stop(); _at.set_delimiter(0); @@ -75,6 +81,36 @@ nsapi_error_t AT_CellularInformation::get_info(const char *cmd, char *buf, size_ _at.read_string(buf, buf_size - 1); _at.resp_stop(); _at.set_default_delimiter(); + return _at.unlock_return_error(); +} + +nsapi_error_t AT_CellularInformation::get_imsi(char *imsi, size_t buf_size) +{ + if (imsi == NULL || buf_size == 0 || buf_size < MAX_IMSI_LENGTH + 1) { + return NSAPI_ERROR_PARAMETER; + } + _at.lock(); + _at.cmd_start("AT+CIMI"); + _at.cmd_stop(); + _at.resp_start(); + int len = _at.read_string(imsi, MAX_IMSI_LENGTH); + if (len > 0) { + imsi[len] = '\0'; + } + _at.resp_stop(); + return _at.unlock_return_error(); +} +nsapi_error_t AT_CellularInformation::get_iccid(char *buf, size_t buf_size) +{ + if (buf == NULL || buf_size == 0) { + return NSAPI_ERROR_PARAMETER; + } + _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(); } diff --git a/features/cellular/framework/AT/AT_CellularInformation.h b/features/cellular/framework/AT/AT_CellularInformation.h index d9679d3f25a..6e7e6f8cad9 100644 --- a/features/cellular/framework/AT/AT_CellularInformation.h +++ b/features/cellular/framework/AT/AT_CellularInformation.h @@ -42,6 +42,9 @@ class AT_CellularInformation : public CellularInformation, public AT_CellularBas virtual nsapi_error_t get_serial_number(char *buf, size_t buf_size, SerialNumberType type); + virtual nsapi_error_t get_imsi(char *imsi, size_t buf_size); + + virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); protected: /** Request information text from cellular device * diff --git a/features/cellular/framework/AT/AT_CellularNetwork.cpp b/features/cellular/framework/AT/AT_CellularNetwork.cpp index d04de64d09b..538fb27f81f 100644 --- a/features/cellular/framework/AT/AT_CellularNetwork.cpp +++ b/features/cellular/framework/AT/AT_CellularNetwork.cpp @@ -71,7 +71,8 @@ static const char *const rat_str[AT_CellularNetwork::RAT_MAX] = { AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler) : AT_CellularBase(atHandler), - _connection_status_cb(NULL), _op_act(RAT_UNKNOWN), _connect_status(NSAPI_STATUS_DISCONNECTED) + _connection_status_cb(NULL), _ciotopt_network_support_cb(NULL), _op_act(RAT_UNKNOWN), + _connect_status(NSAPI_STATUS_DISCONNECTED), _supported_network_opt(CIOT_OPT_MAX) { _urc_funcs[C_EREG] = callback(this, &AT_CellularNetwork::urc_cereg); @@ -79,7 +80,7 @@ AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler) : AT_CellularBase(a _urc_funcs[C_REG] = callback(this, &AT_CellularNetwork::urc_creg); for (int type = 0; type < CellularNetwork::C_MAX; type++) { - if (has_registration((RegistrationType)type) != RegistrationModeDisable) { + if (get_property((AT_CellularBase::CellularProperty)type) != RegistrationModeDisable) { _at.set_urc_handler(at_reg[type].urc_prefix, _urc_funcs[type]); } } @@ -87,6 +88,7 @@ AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler) : AT_CellularBase(a _at.set_urc_handler("NO CARRIER", callback(this, &AT_CellularNetwork::urc_no_carrier)); // additional urc to get better disconnect info for application. Not critical. _at.set_urc_handler("+CGEV:", callback(this, &AT_CellularNetwork::urc_cgev)); + _at.set_urc_handler("+CCIOTOPTI:", callback(this, &AT_CellularNetwork::urc_cciotopti)); _at.lock(); _at.cmd_start("AT+CGEREP=1");// discard unsolicited result codes when MT TE link is reserved (e.g. in on line data mode); otherwise forward them directly to the TE _at.cmd_stop_read_resp(); @@ -101,13 +103,13 @@ AT_CellularNetwork::~AT_CellularNetwork() _at.unlock(); for (int type = 0; type < CellularNetwork::C_MAX; type++) { - if (has_registration((RegistrationType)type) != RegistrationModeDisable) { - _at.remove_urc_handler(at_reg[type].urc_prefix); + if (get_property((AT_CellularBase::CellularProperty)type) != RegistrationModeDisable) { + _at.set_urc_handler(at_reg[type].urc_prefix, 0); } } - _at.remove_urc_handler("NO CARRIER"); - _at.remove_urc_handler("+CGEV:"); + _at.set_urc_handler("NO CARRIER", 0); + _at.set_urc_handler("+CGEV:", 0); } void AT_CellularNetwork::urc_no_carrier() @@ -221,7 +223,7 @@ nsapi_error_t AT_CellularNetwork::set_registration_urc(RegistrationType type, bo int index = (int)type; MBED_ASSERT(index >= 0 && index < C_MAX); - RegistrationMode mode = has_registration(type); + RegistrationMode mode = (RegistrationMode)get_property((AT_CellularBase::CellularProperty)type); if (mode == RegistrationModeDisable) { return NSAPI_ERROR_UNSUPPORTED; } else { @@ -320,12 +322,6 @@ void AT_CellularNetwork::read_reg_params(RegistrationType type, registration_par #endif } -AT_CellularNetwork::RegistrationMode AT_CellularNetwork::has_registration(RegistrationType reg_type) -{ - (void)reg_type; - return RegistrationModeLAC; -} - nsapi_error_t AT_CellularNetwork::set_attach() { _at.lock(); @@ -379,6 +375,7 @@ nsapi_error_t AT_CellularNetwork::detach() nsapi_error_t AT_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opsAct) { + _op_act = RAT_UNKNOWN; return NSAPI_ERROR_UNSUPPORTED; } @@ -433,14 +430,15 @@ nsapi_error_t AT_CellularNetwork::scan_plmn(operList_t &operators, int &opsCount return _at.unlock_return_error(); } -nsapi_error_t AT_CellularNetwork::set_ciot_optimization_config(Supported_UE_Opt supported_opt, - Preferred_UE_Opt preferred_opt) +nsapi_error_t AT_CellularNetwork::set_ciot_optimization_config(CIoT_Supported_Opt supported_opt, + CIoT_Preferred_UE_Opt preferred_opt, + Callback network_support_cb) { - + _ciotopt_network_support_cb = network_support_cb; _at.lock(); _at.cmd_start("AT+CCIOTOPT="); - _at.write_int(0); // disable urc + _at.write_int(1); //enable CCIOTOPTI URC _at.write_int(supported_opt); _at.write_int(preferred_opt); _at.cmd_stop_read_resp(); @@ -448,8 +446,17 @@ nsapi_error_t AT_CellularNetwork::set_ciot_optimization_config(Supported_UE_Opt return _at.unlock_return_error(); } -nsapi_error_t AT_CellularNetwork::get_ciot_optimization_config(Supported_UE_Opt &supported_opt, - Preferred_UE_Opt &preferred_opt) +void AT_CellularNetwork::urc_cciotopti() +{ + _supported_network_opt = (CIoT_Supported_Opt)_at.read_int(); + + if (_ciotopt_network_support_cb) { + _ciotopt_network_support_cb(_supported_network_opt); + } +} + +nsapi_error_t AT_CellularNetwork::get_ciot_ue_optimization_config(CIoT_Supported_Opt &supported_opt, + CIoT_Preferred_UE_Opt &preferred_opt) { _at.lock(); @@ -459,8 +466,8 @@ nsapi_error_t AT_CellularNetwork::get_ciot_optimization_config(Supported_UE_Opt _at.resp_start("+CCIOTOPT:"); _at.read_int(); if (_at.get_last_error() == NSAPI_ERROR_OK) { - supported_opt = (Supported_UE_Opt)_at.read_int(); - preferred_opt = (Preferred_UE_Opt)_at.read_int(); + supported_opt = (CIoT_Supported_Opt)_at.read_int(); + preferred_opt = (CIoT_Preferred_UE_Opt)_at.read_int(); } _at.resp_stop(); @@ -468,30 +475,13 @@ nsapi_error_t AT_CellularNetwork::get_ciot_optimization_config(Supported_UE_Opt return _at.unlock_return_error(); } -nsapi_error_t AT_CellularNetwork::get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp) +nsapi_error_t AT_CellularNetwork::get_ciot_network_optimization_config(CIoT_Supported_Opt &supported_network_opt) { - _at.lock(); - - _at.cmd_start("AT+CESQ"); - _at.cmd_stop(); - - _at.resp_start("+CESQ:"); - rxlev = _at.read_int(); - ber = _at.read_int(); - rscp = _at.read_int(); - ecno = _at.read_int(); - rsrq = _at.read_int(); - rsrp = _at.read_int(); - _at.resp_stop(); - if (rxlev < 0 || ber < 0 || rscp < 0 || ecno < 0 || rsrq < 0 || rsrp < 0) { - _at.unlock(); - return NSAPI_ERROR_DEVICE_ERROR; - } - - return _at.unlock_return_error(); + supported_network_opt = _supported_network_opt; + return NSAPI_ERROR_OK; } -nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int &ber) +nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int *ber) { _at.lock(); @@ -499,18 +489,27 @@ nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int &ber) _at.cmd_stop(); _at.resp_start("+CSQ:"); - rssi = _at.read_int(); - ber = _at.read_int(); + int t_rssi = _at.read_int(); + int t_ber = _at.read_int(); _at.resp_stop(); - if (rssi < 0 || ber < 0) { + if (t_rssi < 0 || t_ber < 0) { _at.unlock(); return NSAPI_ERROR_DEVICE_ERROR; } - if (rssi == 99) { - rssi = 0; + // RSSI value is returned in dBm with range from -51 to -113 dBm, see 3GPP TS 27.007 + if (t_rssi == 99) { + rssi = SignalQualityUnknown; } else { - rssi = -113 + 2 * rssi; + rssi = -113 + 2 * t_rssi; + } + + if (ber) { + if (t_ber == 99) { + *ber = SignalQualityUnknown; + } else { + *ber = t_ber; + } } return _at.unlock_return_error(); @@ -608,7 +607,7 @@ nsapi_error_t AT_CellularNetwork::get_registration_params(RegistrationType type, int i = (int)type; MBED_ASSERT(i >= 0 && i < C_MAX); - if (!has_registration(at_reg[i].type)) { + if (!get_property((AT_CellularBase::CellularProperty)at_reg[i].type)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -680,3 +679,20 @@ int AT_CellularNetwork::calculate_periodic_tau(const char *periodic_tau_string, return 0; } } + +nsapi_error_t AT_CellularNetwork::set_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value) +{ + char edrx[5]; + uint_to_binary_str(edrx_value, edrx, 5, 4); + edrx[4] = '\0'; + + _at.lock(); + + _at.cmd_start("AT+CEDRXS="); + _at.write_int(mode); + _at.write_int(act_type); + _at.write_string(edrx); + _at.cmd_stop_read_resp(); + + return _at.unlock_return_error(); +} diff --git a/features/cellular/framework/AT/AT_CellularNetwork.h b/features/cellular/framework/AT/AT_CellularNetwork.h index 21b30546a24..044bc50c0de 100644 --- a/features/cellular/framework/AT/AT_CellularNetwork.h +++ b/features/cellular/framework/AT/AT_CellularNetwork.h @@ -43,6 +43,12 @@ class AT_CellularNetwork : public CellularNetwork, public AT_CellularBase { // declare friend so it can access stack friend class AT_CellularDevice; + enum RegistrationMode { + RegistrationModeDisable = 0, + RegistrationModeEnable, // + RegistrationModeLAC, // [,<[lac>,]<[ci>],[],[]] + }; + public: // CellularNetwork virtual nsapi_error_t set_registration(const char *plmn = 0); @@ -63,15 +69,16 @@ class AT_CellularNetwork : public CellularNetwork, public AT_CellularBase { virtual nsapi_error_t scan_plmn(operList_t &operators, int &ops_count); - virtual nsapi_error_t set_ciot_optimization_config(Supported_UE_Opt supported_opt, - Preferred_UE_Opt preferred_opt); + virtual nsapi_error_t set_ciot_optimization_config(CIoT_Supported_Opt supported_opt, + CIoT_Preferred_UE_Opt preferred_opt, + Callback network_support_cb); - virtual nsapi_error_t get_ciot_optimization_config(Supported_UE_Opt &supported_opt, - Preferred_UE_Opt &preferred_opt); + virtual nsapi_error_t get_ciot_ue_optimization_config(CIoT_Supported_Opt &supported_opt, + CIoT_Preferred_UE_Opt &preferred_opt); - virtual nsapi_error_t get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp); + virtual nsapi_error_t get_ciot_network_optimization_config(CIoT_Supported_Opt &supported_network_opt); - virtual nsapi_error_t get_signal_quality(int &rssi, int &ber); + virtual nsapi_error_t get_signal_quality(int &rssi, int *ber = NULL); virtual int get_3gpp_error(); @@ -86,19 +93,10 @@ class AT_CellularNetwork : public CellularNetwork, public AT_CellularBase { virtual nsapi_error_t get_registration_params(registration_params_t ®_params); virtual nsapi_error_t get_registration_params(RegistrationType type, registration_params_t ®_params); -protected: - /** Check if modem supports given registration type. - * - * @param reg_type enum RegistrationType - * @return mode supported on given reg_type as per 3GPP TS 27.007, 0 when unsupported - */ - enum RegistrationMode { - RegistrationModeDisable = 0, - RegistrationModeEnable, // - RegistrationModeLAC, // [,<[lac>,]<[ci>],[],[]] - }; - virtual RegistrationMode has_registration(RegistrationType reg_type); + virtual nsapi_error_t set_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value); + +protected: /** Sets access technology to be scanned. Modem specific implementation. * @@ -115,6 +113,7 @@ class AT_CellularNetwork : public CellularNetwork, public AT_CellularBase { void urc_cereg(); void urc_cgreg(); void urc_cgev(); + void urc_cciotopti(); void read_reg_params_and_compare(RegistrationType type); void read_reg_params(RegistrationType type, registration_params_t ®_params); @@ -130,8 +129,11 @@ class AT_CellularNetwork : public CellularNetwork, public AT_CellularBase { protected: Callback _connection_status_cb; + Callback _ciotopt_network_support_cb; RadioAccessTechnology _op_act; nsapi_connection_status_t _connect_status; + CIoT_Supported_Opt _supported_network_opt; + registration_params_t _reg_params; mbed::Callback _urc_funcs[C_MAX]; }; diff --git a/features/cellular/framework/AT/AT_CellularPower.cpp b/features/cellular/framework/AT/AT_CellularPower.cpp deleted file mode 100644 index 29b9045df47..00000000000 --- a/features/cellular/framework/AT/AT_CellularPower.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright (c) 2017, 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 "AT_CellularPower.h" -#include "CellularUtil.h" -#include "CellularLog.h" -#include "CellularTargets.h" -#include "nsapi_types.h" - -static const int PSMTimerBits = 5; - -using namespace mbed_cellular_util; -using namespace mbed; - -AT_CellularPower::AT_CellularPower(ATHandler &at) : AT_CellularBase(at) -{ -} - -AT_CellularPower::~AT_CellularPower() -{ -} - -nsapi_error_t AT_CellularPower::on() -{ - return NSAPI_ERROR_UNSUPPORTED; -} - -nsapi_error_t AT_CellularPower::off() -{ - return NSAPI_ERROR_UNSUPPORTED; -} - -nsapi_error_t AT_CellularPower::set_at_mode() -{ - _at.lock(); - _at.flush(); - _at.cmd_start("ATE0"); // echo off - _at.cmd_stop_read_resp(); - - _at.cmd_start("AT+CMEE=1"); // verbose responses - _at.cmd_stop_read_resp(); - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularPower::set_power_level(int func_level, int do_reset) -{ - _at.lock(); - _at.cmd_start("AT+CFUN="); - _at.write_int(func_level); - _at.write_int(do_reset); - _at.cmd_stop_read_resp(); - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularPower::reset() -{ - _at.lock(); - _at.cmd_start("AT+CFUN=");// reset to full power levels - _at.write_int(1); - _at.write_int(1); - _at.cmd_stop_read_resp(); - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularPower::opt_power_save_mode(int periodic_time, int active_time) -{ - _at.lock(); - - if (periodic_time == 0 && active_time == 0) { - // disable PSM - _at.cmd_start("AT+CPSMS="); - _at.write_int(0); - _at.cmd_stop_read_resp(); - } else { - /** - Table 10.5.163a/3GPP TS 24.008: GPRS Timer 3 information element - - Bits 5 to 1 represent the binary coded timer value. - - Bits 6 to 8 defines the timer value unit for the GPRS timer as follows: - 8 7 6 - 0 0 0 value is incremented in multiples of 10 minutes - 0 0 1 value is incremented in multiples of 1 hour - 0 1 0 value is incremented in multiples of 10 hours - 0 1 1 value is incremented in multiples of 2 seconds - 1 0 0 value is incremented in multiples of 30 seconds - 1 0 1 value is incremented in multiples of 1 minute - 1 1 0 value is incremented in multiples of 320 hours (NOTE 1) - 1 1 1 value indicates that the timer is deactivated (NOTE 2). - */ - char pt[8 + 1]; // timer value encoded as 3GPP IE - const int ie_value_max = 0x1f; - uint32_t periodic_timer = 0; - if (periodic_time <= 2 * ie_value_max) { // multiples of 2 seconds - periodic_timer = periodic_time / 2; - strcpy(pt, "01100000"); - } else { - if (periodic_time <= 30 * ie_value_max) { // multiples of 30 seconds - periodic_timer = periodic_time / 30; - strcpy(pt, "10000000"); - } else { - if (periodic_time <= 60 * ie_value_max) { // multiples of 1 minute - periodic_timer = periodic_time / 60; - strcpy(pt, "10100000"); - } else { - if (periodic_time <= 10 * 60 * ie_value_max) { // multiples of 10 minutes - periodic_timer = periodic_time / (10 * 60); - strcpy(pt, "00000000"); - } else { - if (periodic_time <= 60 * 60 * ie_value_max) { // multiples of 1 hour - periodic_timer = periodic_time / (60 * 60); - strcpy(pt, "00100000"); - } else { - if (periodic_time <= 10 * 60 * 60 * ie_value_max) { // multiples of 10 hours - periodic_timer = periodic_time / (10 * 60 * 60); - strcpy(pt, "01000000"); - } else { // multiples of 320 hours - int t = periodic_time / (320 * 60 * 60); - if (t > ie_value_max) { - t = ie_value_max; - } - periodic_timer = t; - strcpy(pt, "11000000"); - } - } - } - } - } - } - - uint_to_binary_str(periodic_timer, &pt[3], sizeof(pt) - 3, PSMTimerBits); - pt[8] = '\0'; - - /** - Table 10.5.172/3GPP TS 24.008: GPRS Timer information element - - Bits 5 to 1 represent the binary coded timer value. - - Bits 6 to 8 defines the timer value unit for the GPRS timer as follows: - - 8 7 6 - 0 0 0 value is incremented in multiples of 2 seconds - 0 0 1 value is incremented in multiples of 1 minute - 0 1 0 value is incremented in multiples of decihours - 1 1 1 value indicates that the timer is deactivated. - - Other values shall be interpreted as multiples of 1 minute in this version of the protocol. - */ - char at[8 + 1]; - uint32_t active_timer; // timer value encoded as 3GPP IE - if (active_time <= 2 * ie_value_max) { // multiples of 2 seconds - active_timer = active_time / 2; - strcpy(at, "00000000"); - } else { - if (active_time <= 60 * ie_value_max) { // multiples of 1 minute - active_timer = (1 << 5) | (active_time / 60); - strcpy(at, "00100000"); - } else { // multiples of decihours - int t = active_time / (6 * 60); - if (t > ie_value_max) { - t = ie_value_max; - } - active_timer = t; - strcpy(at, "01000000"); - } - } - - uint_to_binary_str(active_timer, &at[3], sizeof(at) - 3, PSMTimerBits); - at[8] = '\0'; - - // request for both GPRS and LTE - _at.cmd_start("AT+CPSMS="); - _at.write_int(1); - _at.write_string(pt); - _at.write_string(at); - _at.write_string(pt); - _at.write_string(at); - _at.cmd_stop_read_resp(); - - if (_at.get_last_error() != NSAPI_ERROR_OK) { - tr_warn("Power save mode not enabled!"); - } else { - // network may not agree with power save options but - // that should be fine as timeout is not longer than requested - } - } - - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularPower::opt_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value) -{ - char edrx[5]; - uint_to_binary_str(edrx_value, edrx, 5, 4); - edrx[4] = '\0'; - - _at.lock(); - - _at.cmd_start("AT+CEDRXS="); - _at.write_int(mode); - _at.write_int(act_type); - _at.write_string(edrx); - _at.cmd_stop_read_resp(); - - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularPower::is_device_ready() -{ - _at.lock(); - _at.cmd_start("AT"); - _at.cmd_stop_read_resp(); - - // we need to do this twice because for example after data mode the first 'AT' command will give modem a - // stimulus that we are back to command mode. - _at.clear_error(); - _at.cmd_start("AT"); - _at.cmd_stop_read_resp(); - - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularPower::set_device_ready_urc_cb(mbed::Callback callback) -{ - return NSAPI_ERROR_UNSUPPORTED; -} - -void AT_CellularPower::remove_device_ready_urc_cb(mbed::Callback callback) -{ -} diff --git a/features/cellular/framework/AT/AT_CellularPower.h b/features/cellular/framework/AT/AT_CellularPower.h deleted file mode 100644 index 4e27abe5b45..00000000000 --- a/features/cellular/framework/AT/AT_CellularPower.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2017, 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 AT_CELLULAR_POWER_H_ -#define AT_CELLULAR_POWER_H_ - -#include "CellularPower.h" -#include "AT_CellularBase.h" - -namespace mbed { - -/** - * Class AT_CellularPower - * - * Class that provides power handling functions for modem/module. - */ -class AT_CellularPower : public CellularPower, public AT_CellularBase { -public: - AT_CellularPower(ATHandler &atHandler); - virtual ~AT_CellularPower(); - -public: - virtual nsapi_error_t on(); - - virtual nsapi_error_t off(); - - virtual nsapi_error_t set_at_mode(); - - virtual nsapi_error_t set_power_level(int func_level, int do_reset = 0); - - virtual nsapi_error_t reset(); - - virtual nsapi_error_t opt_power_save_mode(int periodic_time, int active_time); - - virtual nsapi_error_t opt_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value); - - virtual nsapi_error_t is_device_ready(); - - virtual nsapi_error_t set_device_ready_urc_cb(mbed::Callback callback); - - virtual void remove_device_ready_urc_cb(mbed::Callback callback); -}; - -} // namespace mbed - -#endif /* AT_CELLULAR_POWER_H_ */ diff --git a/features/cellular/framework/AT/AT_CellularSIM.cpp b/features/cellular/framework/AT/AT_CellularSIM.cpp deleted file mode 100644 index 86425a852a6..00000000000 --- a/features/cellular/framework/AT/AT_CellularSIM.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2017, 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 "AT_CellularSIM.h" -#include "CellularLog.h" - -using namespace mbed; - -const int MAX_SIM_RESPONSE_LENGTH = 16; - -AT_CellularSIM::AT_CellularSIM(ATHandler &at) : AT_CellularBase(at) -{ -} - -AT_CellularSIM::~AT_CellularSIM() -{ -} - -nsapi_error_t AT_CellularSIM::get_sim_state(SimState &state) -{ - char simstr[MAX_SIM_RESPONSE_LENGTH]; - _at.lock(); - _at.flush(); - _at.cmd_start("AT+CPIN?"); - _at.cmd_stop(); - _at.resp_start("+CPIN:"); - ssize_t len = _at.read_string(simstr, sizeof(simstr)); - if (len != -1) { - if (len >= 5 && memcmp(simstr, "READY", 5) == 0) { - state = SimStateReady; - } else if (len >= 6 && memcmp(simstr, "SIM PIN", 6) == 0) { - state = SimStatePinNeeded; - } else if (len >= 6 && memcmp(simstr, "SIM PUK", 6) == 0) { - state = SimStatePukNeeded; - } else { - simstr[len] = '\0'; - tr_error("Unknown SIM state %s", simstr); - state = SimStateUnknown; - } - } else { - tr_warn("SIM not readable."); - state = SimStateUnknown; // SIM may not be ready yet or +CPIN may be unsupported command - } - _at.resp_stop(); - nsapi_error_t error = _at.get_last_error(); - _at.unlock(); -#if MBED_CONF_MBED_TRACE_ENABLE - switch (state) { - case SimStatePinNeeded: - tr_info("SIM PIN required"); - break; - case SimStatePukNeeded: - tr_error("SIM PUK required"); - break; - case SimStateUnknown: - tr_warn("SIM state unknown"); - break; - default: - tr_info("SIM is ready"); - break; - } -#endif - return error; -} - - -nsapi_error_t AT_CellularSIM::set_pin(const char *sim_pin) -{ - // if SIM is already in ready state then settings the PIN - // will return error so let's check the state before settings the pin. - SimState state; - if (get_sim_state(state) == NSAPI_ERROR_OK && state == SimStateReady) { - return NSAPI_ERROR_OK; - } - - _at.lock(); - _at.cmd_start("AT+CPIN="); - _at.write_string(sim_pin); - _at.cmd_stop_read_resp(); - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularSIM::change_pin(const char *sim_pin, const char *new_pin) -{ - _at.lock(); - _at.cmd_start("AT+CPWD="); - _at.write_string("SC"); - _at.write_string(sim_pin); - _at.write_string(new_pin); - _at.cmd_stop_read_resp(); - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularSIM::set_pin_query(const char *sim_pin, bool query_pin) -{ - _at.lock(); - if (query_pin) { - /* use the SIM locked */ - _at.cmd_start("AT+CLCK="); - _at.write_string("SC"); - _at.write_int(1); - _at.write_string(sim_pin); - _at.cmd_stop_read_resp(); - } else { - /* use the SIM unlocked */ - _at.cmd_start("AT+CLCK="); - _at.write_string("SC"); - _at.write_int(0); - _at.write_string(sim_pin); - _at.cmd_stop_read_resp(); - } - return _at.unlock_return_error(); -} - -nsapi_error_t AT_CellularSIM::get_imsi(char *imsi) -{ - if (imsi == NULL) { - return NSAPI_ERROR_PARAMETER; - } - _at.lock(); - _at.cmd_start("AT+CIMI"); - _at.cmd_stop(); - _at.resp_start(); - int len = _at.read_string(imsi, MAX_IMSI_LENGTH); - if (len > 0) { - imsi[len] = '\0'; - } - _at.resp_stop(); - return _at.unlock_return_error(); -} - -nsapi_error_t AT_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(); -} diff --git a/features/cellular/framework/AT/AT_CellularSIM.h b/features/cellular/framework/AT/AT_CellularSIM.h deleted file mode 100644 index 379de706bca..00000000000 --- a/features/cellular/framework/AT/AT_CellularSIM.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2017, 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 AT_CELLULAR_SIM_H_ -#define AT_CELLULAR_SIM_H_ - -#include "CellularSIM.h" -#include "AT_CellularBase.h" - -namespace mbed { - -/** - * Class AT_CellularSIM - * - * Class for SIM card handling. - */ -class AT_CellularSIM : public CellularSIM, public AT_CellularBase { - -public: - AT_CellularSIM(ATHandler &atHandler); - virtual ~AT_CellularSIM(); - -public: - virtual nsapi_error_t set_pin(const char *sim_pin); - - 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); - - virtual nsapi_error_t get_sim_state(SimState &state); - - virtual nsapi_error_t get_imsi(char *imsi); - - virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); -}; - -} // namespace mbed - -#endif // AT_CELLULAR_SIM_H_ diff --git a/features/cellular/framework/AT/AT_CellularSMS.cpp b/features/cellular/framework/AT/AT_CellularSMS.cpp index 3dc7125e7e4..c4e24ced49a 100644 --- a/features/cellular/framework/AT/AT_CellularSMS.cpp +++ b/features/cellular/framework/AT/AT_CellularSMS.cpp @@ -248,10 +248,8 @@ nsapi_error_t AT_CellularSMS::set_csdh(int show_header) nsapi_error_t AT_CellularSMS::initialize(CellularSMSMmode mode) { - if (NSAPI_ERROR_OK != _at.set_urc_handler("+CMTI:", callback(this, &AT_CellularSMS::cmti_urc)) || - NSAPI_ERROR_OK != _at.set_urc_handler("+CMT:", callback(this, &AT_CellularSMS::cmt_urc))) { - return NSAPI_ERROR_NO_MEMORY; - } + _at.set_urc_handler("+CMTI:", callback(this, &AT_CellularSMS::cmti_urc)); + _at.set_urc_handler("+CMT:", callback(this, &AT_CellularSMS::cmt_urc)); _at.lock(); set_cnmi(); //set new SMS indication @@ -992,7 +990,7 @@ void AT_CellularSMS::add_info(sms_info_t *info, int index, int part_number) return; } sms_info_t *current = _sms_info; - sms_info_t *prev; + sms_info_t *prev = NULL; bool found_msg = false; while (current) { prev = current; @@ -1047,11 +1045,6 @@ nsapi_error_t AT_CellularSMS::list_messages() _at.resp_start("+CMGL:"); while (_at.info_resp()) { info = new sms_info_t(); - if (!info) { - _at.resp_stop(); - return NSAPI_ERROR_NO_MEMORY; - } - if (_mode == CellularSMSMmodePDU) { //+CMGL: ,,[],[ // +CMGL:,,[], @@ -1062,11 +1055,6 @@ nsapi_error_t AT_CellularSMS::list_messages() length = length * 2 + 20; // *2 as it's hex encoded and +20 as service center number is not included in size given by CMGL pdu = new char[length]; memset(pdu, 0, length); - if (!pdu) { - delete info; - _at.resp_stop(); - return NSAPI_ERROR_NO_MEMORY; - } _at.read_string(pdu, length, true); if (_at.get_last_error() == NSAPI_ERROR_OK) { info->msg_size = get_data_from_pdu(pdu, info, &part_number); @@ -1194,9 +1182,6 @@ uint16_t AT_CellularSMS::pack_7_bit_gsm_and_hex(const char *str, uint16_t len, c } // convert to 7bit gsm first char *gsm_str = new char[len]; - if (!gsm_str) { - return 0; - } for (uint16_t y = 0; y < len; y++) { for (int x = 0; x < GSM_TO_ASCII_TABLE_SIZE; x++) { if (gsm_to_ascii[x] == str[y]) { diff --git a/features/cellular/framework/AT/AT_CellularStack.cpp b/features/cellular/framework/AT/AT_CellularStack.cpp index a43e2ebd893..8c09f738494 100644 --- a/features/cellular/framework/AT/AT_CellularStack.cpp +++ b/features/cellular/framework/AT/AT_CellularStack.cpp @@ -116,11 +116,6 @@ nsapi_error_t AT_CellularStack::socket_open(nsapi_socket_t *handle, nsapi_protoc } _socket = new CellularSocket*[max_socket_count]; - if (!_socket) { - tr_error("No memory to open socket!"); - _socket_mutex.unlock(); - return NSAPI_ERROR_NO_SOCKET; - } _socket_count = max_socket_count; for (int i = 0; i < max_socket_count; i++) { _socket[i] = 0; @@ -198,15 +193,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); } @@ -252,6 +253,19 @@ nsapi_size_or_error_t AT_CellularStack::socket_sendto(nsapi_socket_t handle, con return NSAPI_ERROR_DEVICE_ERROR; } + if (socket->closed && !socket->rx_avail) { + tr_info("sendto socket %d closed", socket->id); + return NSAPI_ERROR_NO_CONNECTION; + } + + if (size == 0) { + if (socket->proto == NSAPI_UDP) { + return NSAPI_ERROR_UNSUPPORTED; + } else if (socket->proto == NSAPI_TCP) { + return 0; + } + } + nsapi_size_or_error_t ret_val = NSAPI_ERROR_OK; if (!socket->created) { @@ -298,6 +312,11 @@ nsapi_size_or_error_t AT_CellularStack::socket_recvfrom(nsapi_socket_t handle, S return NSAPI_ERROR_DEVICE_ERROR; } + if (socket->closed) { + tr_info("recvfrom socket %d closed", socket->id); + return 0; + } + nsapi_size_or_error_t ret_val = NSAPI_ERROR_OK; if (!socket->created) { @@ -318,6 +337,11 @@ nsapi_size_or_error_t AT_CellularStack::socket_recvfrom(nsapi_socket_t handle, S _at.unlock(); + if (socket->closed) { + tr_info("recvfrom socket %d closed", socket->id); + return 0; + } + if (ret_val >= 0) { 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()); @@ -340,3 +364,29 @@ 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; +} + +AT_CellularStack::CellularSocket *AT_CellularStack::find_socket(int sock_id) +{ + CellularSocket *sock = NULL; + for (int i = 0; i < _socket_count; i++) { + if (_socket[i] && _socket[i]->id == sock_id) { + sock = _socket[i]; + break; + } + } + if (!sock) { + tr_error("Socket not found %d", sock_id); + } + return sock; +} diff --git a/features/cellular/framework/AT/AT_CellularStack.h b/features/cellular/framework/AT/AT_CellularStack.h index 2c25da15796..562b531c570 100644 --- a/features/cellular/framework/AT/AT_CellularStack.h +++ b/features/cellular/framework/AT/AT_CellularStack.h @@ -52,6 +52,12 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase { */ virtual nsapi_error_t socket_stack_init(); + /** + * Note: Socket_open does not actually open socket on all drivers, but that's deferred until calling `sendto`. + * The reason is that IP stack implementations are very much modem specific and it's quite common that when a + * socket is created (via AT commands) it must also be given remote IP address, and that is usually known + * only when calling `sendto`. + */ virtual nsapi_error_t socket_open(nsapi_socket_t *handle, nsapi_protocol_t proto); virtual nsapi_error_t socket_close(nsapi_socket_t handle); @@ -92,6 +98,7 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase { _cb(NULL), _data(NULL), created(false), + closed(false), started(false), tx_ready(false), rx_avail(false), @@ -108,6 +115,7 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase { void (*_cb)(void *); void *_data; bool created; // socket has been created on modem stack + bool closed; // socket has been closed by a peer bool started; // socket has been opened on modem stack bool tx_ready; // socket is ready for sending on modem stack bool rx_avail; // socket has data for reading on modem stack @@ -166,6 +174,14 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase { virtual nsapi_size_or_error_t socket_recvfrom_impl(CellularSocket *socket, SocketAddress *address, void *buffer, nsapi_size_t size) = 0; + /** + * Find the socket handle based on socket identifier + * + * @param sock_id Socket identifier + * @return Socket handle, NULL on error + */ + CellularSocket *find_socket(int sock_id); + // socket container CellularSocket **_socket; @@ -184,6 +200,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/AT/AT_ControlPlane_netif.cpp b/features/cellular/framework/AT/AT_ControlPlane_netif.cpp new file mode 100644 index 00000000000..0ed38f5fa01 --- /dev/null +++ b/features/cellular/framework/AT/AT_ControlPlane_netif.cpp @@ -0,0 +1,77 @@ +/*AT_ControlPlane_netif.cpp*/ +#include "AT_ControlPlane_netif.h" + +namespace mbed { + +AT_ControlPlane_netif::AT_ControlPlane_netif(ATHandler &at, int cid) : AT_CellularBase(at), + _cid(cid), _cb(NULL), _data(NULL), _recv_len(0) +{ + _at.set_urc_handler("+CRTDCP:", mbed::Callback(this, &AT_ControlPlane_netif::urc_cp_recv)); +} + +AT_ControlPlane_netif::~AT_ControlPlane_netif() +{} + +void AT_ControlPlane_netif::urc_cp_recv() +{ + //+CRTDCP: ,, + _at.lock(); + int cid = _at.read_int(); + int cpdata_length = _at.read_int(); + int read_len = _at.read_string(_recv_buffer, sizeof(_recv_buffer)); + + _at.unlock(); + + // cid not expected to be different because: one context - one file handle + // so this file handle cannot get urc from different context + if (read_len > 0 && read_len == cpdata_length && cid == _cid) { + _recv_len = read_len; + data_received(); + } +} + +nsapi_size_or_error_t AT_ControlPlane_netif::send(const void *cpdata, nsapi_size_t cpdata_length) +{ + //CSODCP + _at.lock(); + _at.cmd_start("AT+CSODCP="); + _at.write_int(_cid); + _at.write_int(cpdata_length); + _at.write_bytes((uint8_t *)cpdata, cpdata_length); + + return _at.unlock_return_error(); +} + +nsapi_size_or_error_t AT_ControlPlane_netif::recv(void *cpdata, nsapi_size_t cpdata_length) +{ + // If no data received through CRTDCP URC + if (!_recv_len) { + return NSAPI_ERROR_WOULD_BLOCK; + } + + // If too small buffer for data + if (_recv_len > cpdata_length) { + return NSAPI_ERROR_DEVICE_ERROR; + } + + memcpy(cpdata, _recv_buffer, _recv_len); + + return _recv_len = 0; +} + +void AT_ControlPlane_netif::attach(void (*callback)(void *), void *data) +{ + _cb = callback; + _data = data; +} + +void AT_ControlPlane_netif::data_received() +{ + // call socket event + if (!_cb) { + return; + } + _cb(_data); +} + +} //mbed namespace diff --git a/features/cellular/framework/AT/AT_ControlPlane_netif.h b/features/cellular/framework/AT/AT_ControlPlane_netif.h new file mode 100644 index 00000000000..5e9044e0fc6 --- /dev/null +++ b/features/cellular/framework/AT/AT_ControlPlane_netif.h @@ -0,0 +1,42 @@ +#include "ControlPlane_netif.h" +#include "ATHandler.h" +#include "AT_CellularBase.h" + +namespace mbed { + +class AT_ControlPlane_netif: public ControlPlane_netif, public AT_CellularBase { +public: + AT_ControlPlane_netif(ATHandler &at, int cid); + virtual ~AT_ControlPlane_netif(); + +protected: + +// ControlPlane_netif + + /* Sends data using +CSODCP specified in + * 3GPP 27007 10.1.43: Sending of originating data via the control plane + */ + virtual nsapi_size_or_error_t send(const void *cpdata, nsapi_size_t cpdata_length); + + + /* Receives data using +CRTDCP specified in + * 3GPP 27007 10.1.44: Reporting of terminating data via the control plane + */ + virtual nsapi_size_or_error_t recv(void *cpdata, nsapi_size_t cpdata_length); + + virtual void data_received(); + virtual void attach(void (*callback)(void *), void *data); + + // Id of the PDP context that enables the control plane data connection + int _cid; + +private: + void (*_cb)(void *); + void *_data; + char _recv_buffer[MAX_CP_DATA_RECV_LEN]; + size_t _recv_len; + // Called on receiving URC: +CRTDCP + void urc_cp_recv(); +}; + +} //mbed namespace diff --git a/features/cellular/framework/common/CellularList.h b/features/cellular/framework/common/CellularList.h index d8ee8660fc9..37f41774477 100644 --- a/features/cellular/framework/common/CellularList.h +++ b/features/cellular/framework/common/CellularList.h @@ -50,9 +50,6 @@ template class CellularList { T *add_new() { T *temp = new T; - if (!temp) { - return NULL; - } temp->next = NULL; if (_head == NULL) { _head = temp; diff --git a/features/cellular/framework/common/CellularLog.cpp b/features/cellular/framework/common/CellularLog.cpp index 6c96c48cc27..0637865f7eb 100644 --- a/features/cellular/framework/common/CellularLog.cpp +++ b/features/cellular/framework/common/CellularLog.cpp @@ -26,10 +26,7 @@ typedef struct trace_s { void (*mutex_release_f)(void); } trace_t; -static trace_t m_trace = { - .mutex_wait_f = 0, - .mutex_release_f = 0, -}; +static trace_t m_trace = {}; void mutex_wait_function_set(void (*mutex_wait_f)(void)) { diff --git a/features/cellular/framework/device/CellularContext.cpp b/features/cellular/framework/device/CellularContext.cpp index 64dfc7f13a4..f7e180a9bc0 100644 --- a/features/cellular/framework/device/CellularContext.cpp +++ b/features/cellular/framework/device/CellularContext.cpp @@ -16,23 +16,45 @@ */ #include "CellularContext.h" +MBED_WEAK CellularInterface *CellularInterface::get_target_default_instance() +{ + return mbed::CellularContext::get_default_instance(); +} + namespace mbed { -#ifdef CELLULAR_DEVICE + MBED_WEAK CellularContext *CellularContext::get_default_instance() +{ + CellularDevice *dev = CellularDevice::get_default_instance(); + if (!dev) { + return NULL; + } + + static CellularContext *context = dev->create_context(NULL, NULL, MBED_CONF_CELLULAR_CONTROL_PLANE_OPT); +#if defined(MDMDCD) && defined(MDM_PIN_POLARITY) + context->set_file_handle(static_cast(&dev->get_file_handle()), MDMDCD, MDM_PIN_POLARITY); +#endif // #if defined(MDMDCD) && defined(MDM_PIN_POLARITY) + return context; +} + +MBED_WEAK CellularContext *CellularContext::get_default_nonip_instance() { // Uses default APN, uname, password from mbed_app.json - static CellularDevice *dev = CellularDevice::get_default_instance(); + CellularDevice *dev = CellularDevice::get_default_instance(); if (!dev) { return NULL; } - static CellularContext *context = dev->create_context(); + + static CellularContext *context = dev->create_context(NULL, NULL, MBED_CONF_CELLULAR_CONTROL_PLANE_OPT, true); +#if defined(MDMDCD) && defined(MDM_PIN_POLARITY) + context->set_file_handle(static_cast(&dev->get_file_handle()), MDMDCD, MDM_PIN_POLARITY); +#endif // #if defined(MDMDCD) && defined(MDM_PIN_POLARITY) return context; } -#else -MBED_WEAK CellularContext *CellularContext::get_default_instance() + +void CellularContext::cp_data_received() { - return NULL; + _cp_netif->data_received(); } -#endif // CELLULAR_DEVICE } // namespace mbed diff --git a/features/cellular/framework/device/CellularDevice.cpp b/features/cellular/framework/device/CellularDevice.cpp index bb623fe501d..8cc63e544c6 100644 --- a/features/cellular/framework/device/CellularDevice.cpp +++ b/features/cellular/framework/device/CellularDevice.cpp @@ -17,48 +17,34 @@ #include "CellularDevice.h" #include "CellularContext.h" -#include "CellularSIM.h" #include "CellularUtil.h" #include "CellularLog.h" #include "CellularTargets.h" #include "EventQueue.h" -#include "UARTSerial.h" - -#ifdef CELLULAR_DEVICE -#include CELLULAR_STRINGIFY(CELLULAR_DEVICE.h) -#endif // CELLULAR_DEVICE namespace mbed { -#ifdef CELLULAR_DEVICE MBED_WEAK CellularDevice *CellularDevice::get_default_instance() { - static UARTSerial serial(MDMTXD, MDMRXD, MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE); -#if DEVICE_SERIAL_FC - if (MDMRTS != NC && MDMCTS != NC) { - tr_info("_USING flow control, MDMRTS: %d MDMCTS: %d", MDMRTS, MDMCTS); - serial.set_flow_control(SerialBase::RTSCTS, MDMRTS, MDMCTS); - } -#endif - static CELLULAR_DEVICE device(&serial); - return &device; + return get_target_default_instance(); } -#else -MBED_WEAK CellularDevice *CellularDevice::get_default_instance() + +MBED_WEAK CellularDevice *CellularDevice::get_target_default_instance() { return NULL; } -#endif // CELLULAR_DEVICE -CellularDevice::CellularDevice(FileHandle *fh) : _network_ref_count(0), _sms_ref_count(0), _power_ref_count(0), _sim_ref_count(0), +CellularDevice::CellularDevice(FileHandle *fh) : _network_ref_count(0), _sms_ref_count(0), _info_ref_count(0), _fh(fh), _queue(5 * EVENTS_EVENT_SIZE), _state_machine(0), _nw(0), _status_cb(0) { + MBED_ASSERT(fh); set_sim_pin(NULL); set_plmn(NULL); } CellularDevice::~CellularDevice() { + tr_debug("CellularDevice destruct"); } void CellularDevice::stop() @@ -67,6 +53,11 @@ void CellularDevice::stop() _state_machine->stop(); } +FileHandle &CellularDevice::get_file_handle() const +{ + return *_fh; +} + events::EventQueue *CellularDevice::get_queue() { return &_queue; @@ -125,6 +116,7 @@ nsapi_error_t CellularDevice::create_state_machine() _state_machine->set_cellular_callback(callback(this, &CellularDevice::cellular_callback)); err = _state_machine->start_dispatch(); if (err) { + tr_error("Start state machine failed."); delete _state_machine; _state_machine = NULL; } @@ -137,6 +129,7 @@ nsapi_error_t CellularDevice::start_state_machine(CellularStateMachine::Cellular _mutex.lock(); nsapi_error_t err = create_state_machine(); if (err) { + _mutex.unlock(); return err; } @@ -184,7 +177,7 @@ void CellularDevice::cellular_callback(nsapi_event_t ev, intptr_t ptr) _state_machine->set_plmn(_plmn); } } else if (cell_ev == CellularSIMStatusChanged && ptr_data->error == NSAPI_ERROR_OK && - ptr_data->status_data == CellularSIM::SimStatePinNeeded) { + ptr_data->status_data == SimStatePinNeeded) { if (strlen(_sim_pin)) { _state_machine->set_sim_pin(_sim_pin); } @@ -212,4 +205,14 @@ void CellularDevice::cellular_callback(nsapi_event_t ev, intptr_t ptr) } } +nsapi_error_t CellularDevice::shutdown() +{ + CellularContext *curr = get_context_list(); + while (curr) { + curr->cellular_callback(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, NSAPI_STATUS_DISCONNECTED); + curr = (CellularContext *)curr->_next; + } + return NSAPI_ERROR_OK; +} + } // namespace mbed diff --git a/features/cellular/framework/device/CellularStateMachine.cpp b/features/cellular/framework/device/CellularStateMachine.cpp index f84d41fcdb1..58deb6c1442 100644 --- a/features/cellular/framework/device/CellularStateMachine.cpp +++ b/features/cellular/framework/device/CellularStateMachine.cpp @@ -17,8 +17,6 @@ #include "CellularStateMachine.h" #include "CellularDevice.h" -#include "CellularPower.h" -#include "CellularSIM.h" #include "CellularLog.h" #include "Thread.h" #include "UARTSerial.h" @@ -42,15 +40,16 @@ const int STM_STOPPED = -99; const int ACTIVE_PDP_CONTEXT = 0x01; const int ATTACHED_TO_NETWORK = 0x02; +const int DEVICE_READY = 0x04; namespace mbed { CellularStateMachine::CellularStateMachine(CellularDevice &device, events::EventQueue &queue) : _cellularDevice(device), _state(STATE_INIT), _next_state(_state), _target_state(_state), - _event_status_cb(0), _network(0), _power(0), _sim(0), _queue(queue), _queue_thread(0), _sim_pin(0), + _event_status_cb(0), _network(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), - _network_status(0) + _status(0) { #if MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY == 0 _start_time = 0; @@ -75,6 +74,7 @@ CellularStateMachine::CellularStateMachine(CellularDevice &device, events::Event CellularStateMachine::~CellularStateMachine() { + tr_debug("CellularStateMachine destruct"); stop(); } @@ -85,7 +85,8 @@ void CellularStateMachine::reset() _event_id = -1; _plmn_network_found = false; _is_retry = false; - _network_status = 0; + _status = 0; + _target_state = STATE_INIT; enter_to_state(STATE_INIT); } @@ -101,15 +102,6 @@ void CellularStateMachine::stop() reset(); _event_id = STM_STOPPED; - if (_power) { - _cellularDevice.close_power(); - _power = NULL; - } - - if (_sim) { - _cellularDevice.close_sim(); - _sim = NULL; - } if (_network) { _cellularDevice.close_network(); @@ -119,13 +111,9 @@ void CellularStateMachine::stop() bool CellularStateMachine::power_on() { - _cb_data.error = _power->on(); - if (_cb_data.error != NSAPI_ERROR_OK && _cb_data.error != NSAPI_ERROR_UNSUPPORTED) { - tr_warn("Power on failed. Try to power off/on."); - _cb_data.error = _power->off(); - if (_cb_data.error != NSAPI_ERROR_OK && _cb_data.error != NSAPI_ERROR_UNSUPPORTED) { - tr_error("Power off failed!"); - } + _cb_data.error = _cellularDevice.hard_power_on(); + if (_cb_data.error != NSAPI_ERROR_OK) { + tr_warn("Hard power on failed."); return false; } return true; @@ -143,15 +131,10 @@ void CellularStateMachine::set_plmn(const char *plmn) bool CellularStateMachine::open_sim() { - if (!_sim) { - // can only fail with allocation with new and then it's critical error - _sim = _cellularDevice.open_sim(); - } - - CellularSIM::SimState state = CellularSIM::SimStateUnknown; + CellularDevice::SimState state = CellularDevice::SimStateUnknown; // wait until SIM is readable // here you could add wait(secs) if you know start delay of your SIM - _cb_data.error = _sim->get_sim_state(state); + _cb_data.error = _cellularDevice.get_sim_state(state); if (_cb_data.error != NSAPI_ERROR_OK) { tr_info("Waiting for SIM (err while reading)..."); return false; @@ -163,10 +146,10 @@ bool CellularStateMachine::open_sim() _event_status_cb((nsapi_event_t)CellularSIMStatusChanged, (intptr_t)&_cb_data); } - if (state == CellularSIM::SimStatePinNeeded) { - if (strlen(_sim_pin)) { - tr_info("Entering PIN to open SIM."); - _cb_data.error = _sim->set_pin(_sim_pin); + if (state == CellularDevice::SimStatePinNeeded) { + if (_sim_pin) { + tr_info("Entering PIN to open SIM"); + _cb_data.error = _cellularDevice.set_pin(_sim_pin); if (_cb_data.error) { tr_error("Failed to set PIN: error %d", _cb_data.error); } @@ -178,7 +161,7 @@ bool CellularStateMachine::open_sim() } } - return state == CellularSIM::SimStateReady; + return state == CellularDevice::SimStateReady; } bool CellularStateMachine::is_registered() @@ -195,7 +178,7 @@ bool CellularStateMachine::is_registered() } _cb_data.status_data = status; - return is_registered || _network_status; + return is_registered || _status; } bool CellularStateMachine::get_network_registration(CellularNetwork::RegistrationType type, @@ -347,10 +330,8 @@ void CellularStateMachine::state_init() { _cellularDevice.set_timeout(TIMEOUT_POWER_ON); tr_info("Start connecting (timeout %d s)", TIMEOUT_POWER_ON / 1000); - if (!_power) { - _power = _cellularDevice.open_power(); - } - _cb_data.error = _power->is_device_ready(); + _cb_data.error = _cellularDevice.is_ready(); + _status = _cb_data.error ? 0 : DEVICE_READY; if (_cb_data.error != NSAPI_ERROR_OK) { _event_timeout = _start_time; if (_start_time > 0) { @@ -377,9 +358,6 @@ void CellularStateMachine::state_power_on() bool CellularStateMachine::device_ready() { tr_info("Modem ready"); - if (_cellularDevice.init_module() != NSAPI_ERROR_OK) { - return false; - } if (!_network) { _network = _cellularDevice.open_network(); @@ -398,26 +376,29 @@ bool CellularStateMachine::device_ready() if (_event_status_cb) { _event_status_cb((nsapi_event_t)CellularDeviceReady, (intptr_t)&_cb_data); } - - _power->remove_device_ready_urc_cb(mbed::callback(this, &CellularStateMachine::ready_urc_cb)); - _cellularDevice.close_power(); - _power = NULL; + _cellularDevice.set_ready_cb(0); return true; } void CellularStateMachine::state_device_ready() { _cellularDevice.set_timeout(TIMEOUT_POWER_ON); - _cb_data.error = _power->set_at_mode(); + if (!(_status & DEVICE_READY)) { + tr_debug("Device was not ready, calling soft_power_on()"); + _cb_data.error = _cellularDevice.soft_power_on(); + } if (_cb_data.error == NSAPI_ERROR_OK) { - if (device_ready()) { - enter_to_state(STATE_SIM_PIN); - } else { - retry_state_or_fail(); + _cb_data.error = _cellularDevice.init(); + if (_cb_data.error == NSAPI_ERROR_OK) { + if (device_ready()) { + _status = 0; + enter_to_state(STATE_SIM_PIN); + } } - } else { + } + if (_cb_data.error != NSAPI_ERROR_OK) { if (_retry_count == 0) { - _power->set_device_ready_urc_cb(mbed::callback(this, &CellularStateMachine::ready_urc_cb)); + _cellularDevice.set_ready_cb(callback(this, &CellularStateMachine::device_ready_cb)); } retry_state_or_fail(); } @@ -443,13 +424,13 @@ void CellularStateMachine::state_sim_pin() } if (_network->is_active_context()) { // check if context was already activated - tr_debug("ACTIVE CONTEXT FOUND, skip registering."); - _network_status |= ACTIVE_PDP_CONTEXT; + tr_debug("Active context found."); + _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."); + _status |= ATTACHED_TO_NETWORK; + tr_debug("Cellular already attached."); } if (_plmn) { enter_to_state(STATE_MANUAL_REGISTERING_NETWORK); @@ -508,12 +489,10 @@ void CellularStateMachine::state_attaching() { _cellularDevice.set_timeout(TIMEOUT_CONNECT); tr_info("Attaching network (timeout %d s)", TIMEOUT_CONNECT / 1000); - if (_network_status != ATTACHED_TO_NETWORK) { + if (_status != ATTACHED_TO_NETWORK) { _cb_data.error = _network->set_attach(); } if (_cb_data.error == NSAPI_ERROR_OK) { - _cellularDevice.close_sim(); - _sim = NULL; if (_event_status_cb) { _cb_data.status_data = CellularNetwork::Attached; _event_status_cb(_current_event, (intptr_t)&_cb_data); @@ -543,9 +522,15 @@ void CellularStateMachine::continue_from_state(CellularState state) nsapi_error_t CellularStateMachine::run_to_state(CellularStateMachine::CellularState state) { _mutex.lock(); + + CellularState tmp_state = state; + if (_plmn && tmp_state == STATE_REGISTERING_NETWORK) { + tmp_state = STATE_MANUAL_REGISTERING_NETWORK; + } // call pre_event via queue so that it's in same thread and it's safe to decisions - int id = _queue.call_in(0, this, &CellularStateMachine::pre_event, state); + int id = _queue.call_in(0, this, &CellularStateMachine::pre_event, tmp_state); if (!id) { + report_failure("Failed to call queue."); stop(); _mutex.unlock(); return NSAPI_ERROR_NO_MEMORY; @@ -586,7 +571,11 @@ bool CellularStateMachine::get_current_status(CellularStateMachine::CellularStat _mutex.lock(); current_state = _state; target_state = _target_state; - is_running = _event_id != -1; + if (_event_id == -1 || _event_id == STM_STOPPED) { + is_running = false; + } else { + is_running = true; + } _mutex.unlock(); return is_running; } @@ -596,9 +585,8 @@ void CellularStateMachine::event() #if MBED_CONF_MBED_TRACE_ENABLE if (_network) { int rssi; - int ber; - if (_network->get_signal_quality(rssi, ber) == NSAPI_ERROR_OK) { - if (rssi == 0) { + if (_network->get_signal_quality(rssi) == NSAPI_ERROR_OK) { + if (rssi == CellularNetwork::SignalQualityUnknown) { tr_info("RSSI unknown"); } else { tr_info("RSSI %d dBm", rssi); @@ -644,7 +632,7 @@ void CellularStateMachine::event() break; } - if ((_target_state == _state && _cb_data.error == NSAPI_ERROR_OK && !_is_retry) || _event_id == STM_STOPPED) { + if (check_is_target_reached()) { _event_id = -1; return; } @@ -675,6 +663,7 @@ nsapi_error_t CellularStateMachine::start_dispatch() _queue_thread = new rtos::Thread(osPriorityNormal, 2048, NULL, "stm_queue"); if (_queue_thread->start(callback(&_queue, &events::EventQueue::dispatch_forever)) != osOK) { + report_failure("Failed to start thread."); stop(); return NSAPI_ERROR_NO_MEMORY; } @@ -687,6 +676,20 @@ void CellularStateMachine::set_cellular_callback(mbed::Callbackset_at_mode() == NSAPI_ERROR_OK) { + tr_debug("Device ready callback"); + if (_state == STATE_DEVICE_READY && _cellularDevice.init() == NSAPI_ERROR_OK) { tr_debug("State was STATE_DEVICE_READY and at mode ready, cancel state and move to next"); _queue.cancel(_event_id); + _event_id = -1; if (device_ready()) { - continue_from_state(STATE_SIM_PIN); + _is_retry = false; + _status = 0; + if (!check_is_target_reached()) { + continue_from_state(STATE_SIM_PIN); + } } else { continue_from_state(STATE_DEVICE_READY); } } } -void CellularStateMachine::set_retry_timeout_array(uint16_t timeout[], int array_len) +void CellularStateMachine::set_retry_timeout_array(const uint16_t timeout[], int array_len) { + if (!timeout || array_len <= 0) { + tr_warn("set_retry_timeout_array, timeout array null or invalid length"); + return; + } _retry_array_length = array_len > RETRY_ARRAY_SIZE ? RETRY_ARRAY_SIZE : array_len; for (int i = 0; i < _retry_array_length; i++) { diff --git a/features/cellular/framework/device/CellularStateMachine.h b/features/cellular/framework/device/CellularStateMachine.h index 386b39dcc4d..a2c815a6c54 100644 --- a/features/cellular/framework/device/CellularStateMachine.h +++ b/features/cellular/framework/device/CellularStateMachine.h @@ -28,8 +28,6 @@ class Thread; namespace mbed { -class CellularPower; -class CellularSIM; class CellularDevice; const int RETRY_ARRAY_SIZE = 10; @@ -43,6 +41,7 @@ class CellularStateMachine { // friend of CellularDevice so that it's the only way to close/delete this class. friend class CellularDevice; friend class AT_CellularDevice; + friend class UT_CellularStateMachine; // for unit tests /** Constructor * * @param device reference to CellularDevice @@ -99,7 +98,7 @@ class CellularStateMachine { * @param timeout timeout array using seconds * @param array_len length of the array */ - void set_retry_timeout_array(uint16_t timeout[], int array_len); + void set_retry_timeout_array(const uint16_t timeout[], int array_len); /** Sets the operator plmn which is used when registering to a network specified by plmn. If plmn is not set then automatic * registering is used when registering to a cellular network. Does not start any operations. @@ -155,8 +154,9 @@ class CellularStateMachine { bool is_registered_to_plmn(); void report_failure(const char *msg); void event(); - void ready_urc_cb(); + void device_ready_cb(); void pre_event(CellularState state); + bool check_is_target_reached(); CellularDevice &_cellularDevice; CellularState _state; @@ -166,8 +166,6 @@ class CellularStateMachine { Callback _event_status_cb; CellularNetwork *_network; - CellularPower *_power; - CellularSIM *_sim; events::EventQueue &_queue; rtos::Thread *_queue_thread; @@ -185,7 +183,7 @@ class CellularStateMachine { bool _is_retry; cell_callback_data_t _cb_data; nsapi_event_t _current_event; - int _network_status; // Is there any active context or is modem attached to a network? + int _status; 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 1dd1e58cf98..26d7feb9f1c 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp @@ -15,13 +15,12 @@ * limitations under the License. */ -#include "GEMALTO_CINTERION_CellularNetwork.h" #include "GEMALTO_CINTERION_CellularContext.h" +#include "GEMALTO_CINTERION_CellularInformation.h" #include "GEMALTO_CINTERION.h" -#include "AT_CellularInformation.h" +#include "AT_CellularNetwork.h" #include "CellularLog.h" - using namespace mbed; using namespace events; @@ -33,22 +32,26 @@ GEMALTO_CINTERION::GEMALTO_CINTERION(FileHandle *fh) : AT_CellularDevice(fh) { } -GEMALTO_CINTERION::~GEMALTO_CINTERION() +AT_CellularContext *GEMALTO_CINTERION::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) { + return new GEMALTO_CINTERION_CellularContext(at, this, apn, cp_req, nonip_req); } -AT_CellularNetwork *GEMALTO_CINTERION::open_network_impl(ATHandler &at) +AT_CellularInformation *GEMALTO_CINTERION::open_information_impl(ATHandler &at) { - return new GEMALTO_CINTERION_CellularNetwork(at); + if (_module == ModuleBGS2) { + return new GEMALTO_CINTERION_CellularInformation(at); + } + return AT_CellularDevice::open_information_impl(at); } -AT_CellularContext *GEMALTO_CINTERION::create_context_impl(ATHandler &at, const char *apn) +nsapi_error_t GEMALTO_CINTERION::init() { - return new GEMALTO_CINTERION_CellularContext(at, this, apn); -} + nsapi_error_t err = AT_CellularDevice::init(); + if (err != NSAPI_ERROR_OK) { + return err; + } -nsapi_error_t GEMALTO_CINTERION::init_module() -{ CellularInformation *information = open_information(); if (!information) { return NSAPI_ERROR_NO_MEMORY; @@ -89,31 +92,67 @@ GEMALTO_CINTERION::Module GEMALTO_CINTERION::get_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 + static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable, // C_EREG + AT_CellularNetwork::RegistrationModeEnable, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; - AT_CellularBase::set_unsupported_features(unsupported_features); + AT_CellularBase::set_cellular_properties(cellular_properties); _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 + static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable, // C_EREG + AT_CellularNetwork::RegistrationModeEnable, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 1, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; - AT_CellularBase::set_unsupported_features(unsupported_features); + AT_CellularBase::set_cellular_properties(cellular_properties); _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 + static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeLAC, // C_EREG + AT_CellularNetwork::RegistrationModeDisable, // C_GREG + AT_CellularNetwork::RegistrationModeDisable, // C_REG + 1, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 1, // PROPERTY_IPV6_STACK + 1, // PROPERTY_IPV4V6_STACK }; - AT_CellularBase::set_unsupported_features(unsupported_features); + AT_CellularBase::set_cellular_properties(cellular_properties); _module = ModuleEMS31; } + +#if MBED_CONF_GEMALTO_CINTERION_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() +{ + static UARTSerial serial(MBED_CONF_GEMALTO_CINTERION_TX, MBED_CONF_GEMALTO_CINTERION_RX, MBED_CONF_GEMALTO_CINTERION_BAUDRATE); +#if defined (MBED_CONF_UBLOX_AT_RTS) && defined(MBED_CONF_UBLOX_AT_CTS) + tr_debug("GEMALTO_CINTERION flow control: RTS %d CTS %d", MBED_CONF_GEMALTO_CINTERION_RTS, MBED_CONF_GEMALTO_CINTERION_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_GEMALTO_CINTERION_RTS, MBED_CONF_GEMALTO_CINTERION_CTS); +#endif + static GEMALTO_CINTERION device(&serial); + return &device; +} +#endif diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.h b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.h index 2a58da242b9..d02fbf102f7 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.h +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.h @@ -18,22 +18,22 @@ #ifndef GEMALTO_CINTERION_H_ #define GEMALTO_CINTERION_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_GEMALTO_CINTERION_TX +#define MBED_CONF_GEMALTO_CINTERION_TX D1 +#endif +#ifndef MBED_CONF_GEMALTO_CINTERION_RX +#define MBED_CONF_GEMALTO_CINTERION_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" namespace mbed { class GEMALTO_CINTERION : public AT_CellularDevice { public: - GEMALTO_CINTERION(FileHandle *fh); - virtual ~GEMALTO_CINTERION(); - -protected: // AT_CellularDevice - virtual AT_CellularNetwork *open_network_impl(ATHandler &at); - virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); -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. @@ -46,6 +46,14 @@ class GEMALTO_CINTERION : public AT_CellularDevice { }; static Module get_module(); +protected: // AT_CellularDevice + virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false); + virtual AT_CellularInformation *open_information_impl(ATHandler &at); + +protected: + virtual uint16_t get_send_delay() const; + virtual nsapi_error_t init(); + private: static Module _module; void init_module_bgs2(); 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 bce1fb077dc..9878e2eb218 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp @@ -16,12 +16,12 @@ */ #include "GEMALTO_CINTERION_CellularContext.h" #include "GEMALTO_CINTERION_CellularStack.h" -#include "GEMALTO_CINTERION.h" +#include "CellularLog.h" namespace mbed { GEMALTO_CINTERION_CellularContext::GEMALTO_CINTERION_CellularContext(ATHandler &at, CellularDevice *device, - const char *apn) : AT_CellularContext(at, device, apn) + const char *apn, bool cp_req, bool nonip_req) : AT_CellularContext(at, device, apn, cp_req, nonip_req) { } @@ -32,19 +32,16 @@ GEMALTO_CINTERION_CellularContext::~GEMALTO_CINTERION_CellularContext() #if !NSAPI_PPP_AVAILABLE NetworkStack *GEMALTO_CINTERION_CellularContext::get_stack() { + if (_pdp_type == NON_IP_PDP_TYPE || _cp_in_use) { + tr_error("Requesting stack for NON-IP context! Should request control plane netif: get_cp_netif()"); + return NULL; + } + if (!_stack) { - _stack = new GEMALTO_CINTERION_CellularStack(_at, _apn, _cid, _ip_stack_type); + _stack = new GEMALTO_CINTERION_CellularStack(_at, _apn, _cid, (nsapi_ip_stack_t)_pdp_type); } return _stack; } #endif // NSAPI_PPP_AVAILABLE -bool GEMALTO_CINTERION_CellularContext::stack_type_supported(nsapi_ip_stack_t requested_stack) -{ - if (GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleBGS2) { - return (requested_stack == IPV4_STACK); - } - return (requested_stack == IPV4_STACK || requested_stack == IPV6_STACK); -} - } /* namespace mbed */ diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.h b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.h index c77c5af703a..86209eda599 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.h +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.h @@ -23,14 +23,13 @@ namespace mbed { class GEMALTO_CINTERION_CellularContext: public AT_CellularContext { public: - GEMALTO_CINTERION_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); + GEMALTO_CINTERION_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req = false, bool nonip_req = false); virtual ~GEMALTO_CINTERION_CellularContext(); protected: #if !NSAPI_PPP_AVAILABLE virtual NetworkStack *get_stack(); #endif // NSAPI_PPP_AVAILABLE - virtual bool stack_type_supported(nsapi_ip_stack_t requested_stack); }; } /* namespace mbed */ diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.cpp new file mode 100644 index 00000000000..3f81221401c --- /dev/null +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.cpp @@ -0,0 +1,37 @@ +/* + * 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 "GEMALTO_CINTERION_CellularInformation.h" + +namespace mbed { + +GEMALTO_CINTERION_CellularInformation::GEMALTO_CINTERION_CellularInformation(ATHandler &at) : AT_CellularInformation(at) +{ +} + +nsapi_error_t GEMALTO_CINTERION_CellularInformation::get_iccid(char *buf, size_t buf_size) +{ + _at.lock(); + _at.cmd_start("AT^SCID"); + _at.cmd_stop(); + _at.resp_start("^SCID:"); + _at.read_string(buf, buf_size); + _at.resp_stop(); + return _at.unlock_return_error(); +} + +} /* namespace mbed */ diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.h b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.h new file mode 100644 index 00000000000..ef9fabc37b5 --- /dev/null +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.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 GEMALTO_CINTERION_CELLULARINFORMATION_H_ +#define GEMALTO_CINTERION_CELLULARINFORMATION_H_ + +#include "AT_CellularInformation.h" + +namespace mbed { + +class GEMALTO_CINTERION_CellularInformation: public AT_CellularInformation { +public: + GEMALTO_CINTERION_CellularInformation(ATHandler &at); + +public: // AT_CellularInformation + virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); +}; + +} /* namespace mbed */ + +#endif /* GEMALTO_CINTERION_CELLULARINFORMATION_H_ */ diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.cpp deleted file mode 100644 index baf4b47be76..00000000000 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.cpp +++ /dev/null @@ -1,49 +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 "GEMALTO_CINTERION_CellularNetwork.h" -#include "GEMALTO_CINTERION.h" - -using namespace mbed; - -GEMALTO_CINTERION_CellularNetwork::GEMALTO_CINTERION_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) -{ -} - -GEMALTO_CINTERION_CellularNetwork::~GEMALTO_CINTERION_CellularNetwork() -{ -} - -AT_CellularNetwork::RegistrationMode GEMALTO_CINTERION_CellularNetwork::has_registration(RegistrationType reg_type) -{ - if (GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleEMS31) { - return (reg_type == C_EREG) ? RegistrationModeLAC : RegistrationModeDisable; - } - if (GEMALTO_CINTERION::get_module() == GEMALTO_CINTERION::ModuleBGS2) { - if (reg_type == C_GREG) { - return RegistrationModeEnable; - } - return (reg_type == C_REG) ? RegistrationModeLAC : RegistrationModeDisable; - } - return (reg_type == C_REG || reg_type == C_GREG || reg_type == C_EREG) ? RegistrationModeLAC : RegistrationModeDisable; -} - -nsapi_error_t GEMALTO_CINTERION_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opsAct) -{ - _op_act = RAT_UNKNOWN; - return NSAPI_ERROR_UNSUPPORTED; -} diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.h b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.h deleted file mode 100644 index e01c7e81877..00000000000 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularNetwork.h +++ /dev/null @@ -1,37 +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. - */ - -#ifndef GEMALTO_CINTERION_CELLULAR_NETWORK_H_ -#define GEMALTO_CINTERION_CELLULAR_NETWORK_H_ - -#include "AT_CellularNetwork.h" - -namespace mbed { - -class GEMALTO_CINTERION_CellularNetwork : public AT_CellularNetwork { -public: - GEMALTO_CINTERION_CellularNetwork(ATHandler &atHandler); - virtual ~GEMALTO_CINTERION_CellularNetwork(); - -protected: - virtual RegistrationMode has_registration(RegistrationType reg_type); - virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology opsAct); -}; - -} // namespace mbed - -#endif // GEMALTO_CINTERION_CELLULAR_NETWORK_H_ 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 14fb6543fc5..24b466ad1a8 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp @@ -39,24 +39,9 @@ GEMALTO_CINTERION_CellularStack::GEMALTO_CINTERION_CellularStack(ATHandler &atHa GEMALTO_CINTERION_CellularStack::~GEMALTO_CINTERION_CellularStack() { - _at.remove_urc_handler("^SIS:"); - _at.remove_urc_handler("^SISW:"); - _at.remove_urc_handler("^SISR:"); -} - -GEMALTO_CINTERION_CellularStack::CellularSocket *GEMALTO_CINTERION_CellularStack::find_socket(int sock_id) -{ - CellularSocket *sock = NULL; - for (int i = 0; i < SOCKET_MAX; i++) { - if (_socket[i] && _socket[i]->id == sock_id) { - sock = _socket[i]; - break; - } - } - if (!sock) { - tr_error("Socket not found %d", sock_id); - } - return sock; + _at.set_urc_handler("^SIS:", 0); + _at.set_urc_handler("^SISW:", 0); + _at.set_urc_handler("^SISR:", 0); } void GEMALTO_CINTERION_CellularStack::urc_sis() @@ -175,56 +160,11 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::socket_close_impl(int sock_id) } nsapi_error_t GEMALTO_CINTERION_CellularStack::socket_open_defer(CellularSocket *socket, const SocketAddress *address) -{ - // host address (IPv4) and local+remote port is needed only for BGS2 which does not support UDP server socket - char sock_addr[sizeof("sockudp://") - 1 + NSAPI_IPv6_SIZE + sizeof("[]:12345;port=12345") - 1 + 1]; - - if (socket->proto == NSAPI_UDP) { - 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()); - } - } else { - if (address->get_ip_version() == NSAPI_IPv4) { - std::sprintf(sock_addr, "socktcp://%s:%u", address->get_ip_address(), address->get_port()); - } else { - std::sprintf(sock_addr, "socktcp://[%s]:%u", address->get_ip_address(), address->get_port()); - } - } - - _at.cmd_start("AT^SISS="); - _at.write_int(socket->id); - _at.write_string("address", false); - _at.write_string(sock_addr); - _at.cmd_stop_read_resp(); - - _at.cmd_start("AT^SISO="); - _at.write_int(socket->id); - _at.cmd_stop_read_resp(); - - if (_at.get_last_error()) { - tr_error("Socket %d open failed!", socket->id); - _at.clear_error(); - socket_close_impl(socket->id); // socket may already be open on modem if app and modem are not in sync, as a recovery, try to close the socket so open succeeds the next time - return NSAPI_ERROR_NO_SOCKET; - } - - socket->created = true; - tr_debug("Cinterion open %d (err %d)", socket->id, _at.get_last_error()); - - return _at.get_last_error(); -} - -// To open socket: -// 1. Select URC mode or polling mode with AT^SCFG -// 2. create a GPRS connection profile with AT^SICS (must have PDP) -// 3. create service profile with AT^SISS and map connectionID to serviceID -// 4. open internet session with AT^SISO (ELS61 tries to attach to a packet domain) -nsapi_error_t GEMALTO_CINTERION_CellularStack::create_socket_impl(CellularSocket *socket) { int connection_profile_id = CONNECTION_PROFILE_ID; + int retry_open = 1; +retry_open: // setup internet session profile int internet_service_id = socket->id; bool foundSrvType = false; @@ -285,6 +225,56 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::create_socket_impl(CellularSocket _at.cmd_stop_read_resp(); } + // host address (IPv4) and local+remote port is needed only for BGS2 which does not support UDP server socket + char sock_addr[sizeof("sockudp://") - 1 + NSAPI_IPv6_SIZE + sizeof("[]:12345;port=12345") - 1 + 1]; + + if (socket->proto == NSAPI_UDP) { + 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()); + } + } else { + if (address->get_ip_version() == NSAPI_IPv4) { + std::sprintf(sock_addr, "socktcp://%s:%u", address->get_ip_address(), address->get_port()); + } else { + std::sprintf(sock_addr, "socktcp://[%s]:%u", address->get_ip_address(), address->get_port()); + } + } + + _at.cmd_start("AT^SISS="); + _at.write_int(socket->id); + _at.write_string("address", false); + _at.write_string(sock_addr); + _at.cmd_stop_read_resp(); + + _at.cmd_start("AT^SISO="); + _at.write_int(socket->id); + _at.cmd_stop_read_resp(); + + if (_at.get_last_error()) { + tr_error("Socket %d open failed!", socket->id); + _at.clear_error(); + socket_close_impl(socket->id); // socket may already be open on modem if app and modem are not in sync, as a recovery, try to close the socket so open succeeds the next time + if (retry_open--) { + goto retry_open; + } + return NSAPI_ERROR_NO_SOCKET; + } + + socket->created = true; + tr_debug("Cinterion open %d (err %d)", socket->id, _at.get_last_error()); + + return _at.get_last_error(); +} + +// To open socket: +// 1. Select URC mode or polling mode with AT^SCFG +// 2. create a GPRS connection profile with AT^SICS (must have PDP) +// 3. create service profile with AT^SISS and map connectionID to serviceID +// 4. open internet session with AT^SISO (ELS61 tries to attach to a packet domain) +nsapi_error_t GEMALTO_CINTERION_CellularStack::create_socket_impl(CellularSocket *socket) +{ if (socket->proto == NSAPI_UDP) { if (GEMALTO_CINTERION::get_module() != GEMALTO_CINTERION::ModuleBGS2) { return socket_open_defer(socket); @@ -335,13 +325,13 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_sendto_impl(Cellul } } if (!socket->started || !socket->tx_ready) { - tr_debug("Socket %d would block (started %d, tx %d)", socket->id, socket->started, socket->tx_ready); + tr_debug("Socket %d send would block (started %d, tx %d)", socket->id, socket->started, socket->tx_ready); return NSAPI_ERROR_WOULD_BLOCK; } if (size > UDP_PACKET_SIZE) { - tr_warn("Sending UDP packet size %d (max %d)", size, UDP_PACKET_SIZE); - size = UDP_PACKET_SIZE; + tr_error("sendto size %d (max %d)", size, UDP_PACKET_SIZE); + return NSAPI_ERROR_PARAMETER; } _at.set_at_timeout(FAILURE_TIMEOUT); @@ -413,13 +403,12 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_recvfrom_impl(Cell if (!socket->rx_avail) { _at.process_oob(); // check for ^SISR URC if (!socket->rx_avail) { - tr_debug("Socket %d would block", socket->id); + tr_debug("Socekt %d recv would block", socket->id); return NSAPI_ERROR_WOULD_BLOCK; } } if (size > UDP_PACKET_SIZE) { - tr_debug("Socket recvfrom size %d > %d", size, UDP_PACKET_SIZE); size = UDP_PACKET_SIZE; } @@ -459,6 +448,7 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_recvfrom_impl(Cell } socket->rx_avail = false; if (len >= (nsapi_size_or_error_t)size) { + len = (nsapi_size_or_error_t)size; int remain_len = _at.read_int(); if (remain_len > 0) { socket->rx_avail = true; @@ -470,7 +460,7 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_recvfrom_impl(Cell 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) { - tr_error("Socket %d recvfrom addr!", socket->id); + tr_error("Socket %d recvfrom addr (len %d)", socket->id, ip_len); return NSAPI_ERROR_DEVICE_ERROR; } if (address) { diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h index aab3c436e3d..9d4e156e143 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h @@ -48,9 +48,6 @@ class GEMALTO_CINTERION_CellularStack : public AT_CellularStack { virtual nsapi_error_t socket_connect(nsapi_socket_t handle, const SocketAddress &address); private: - // find the socket handle based on socket identifier - CellularSocket *find_socket(int sock_id); - // socket URC handlers as per Cinterion AT manuals void urc_sis(); void urc_sisw(); diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/mbed_lib.json b/features/cellular/framework/targets/GEMALTO/CINTERION/mbed_lib.json new file mode 100644 index 00000000000..132526d15c3 --- /dev/null +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "GEMALTO_CINTERION", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.cpp b/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.cpp new file mode 100644 index 00000000000..a7203fb0c43 --- /dev/null +++ b/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.cpp @@ -0,0 +1,53 @@ +/* + * 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 "GENERIC_AT3GPP.h" +#include "AT_CellularNetwork.h" + +using namespace mbed; + +// by default all properties are supported +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeLAC, // C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 1, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 1, // PROPERTY_IPV6_STACK + 1, // PROPERTY_IPV4V6_STACK +}; + +GENERIC_AT3GPP::GENERIC_AT3GPP(FileHandle *fh) : AT_CellularDevice(fh) +{ + AT_CellularBase::set_cellular_properties(cellular_properties); +} + +#if MBED_CONF_GENERIC_AT3GPP_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() +{ + static UARTSerial serial(MBED_CONF_GENERIC_AT3GPP_TX, MBED_CONF_GENERIC_AT3GPP_RX, MBED_CONF_GENERIC_AT3GPP_BAUDRATE); +#if defined (MBED_CONF_GENERIC_AT3GPP_RTS) && defined(MBED_CONF_GENERIC_AT3GPP_CTS) + tr_debug("GENERIC_AT3GPP flow control: RTS %d CTS %d", MBED_CONF_GENERIC_AT3GPP_RTS, MBED_CONF_GENERIC_AT3GPP_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_GENERIC_AT3GPP_RTS, MBED_CONF_GENERIC_AT3GPP_CTS); +#endif + static GENERIC_AT3GPP device(&serial); + return &device; +} +#endif diff --git a/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.h b/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.h new file mode 100644 index 00000000000..692f735ed37 --- /dev/null +++ b/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.h @@ -0,0 +1,52 @@ +/* + * 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 GENERIC_AT3GPP_H_ +#define GENERIC_AT3GPP_H_ + +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_GENERIC_AT3GPP_TX +#define MBED_CONF_GENERIC_AT3GPP_TX D1 +#endif +#ifndef MBED_CONF_GENERIC_AT3GPP_RX +#define MBED_CONF_GENERIC_AT3GPP_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + +#include "AT_CellularDevice.h" + +namespace mbed { + +/** + * Generic Cellular module which can be used as a default module when porting new cellular module. + * GENERIC_AT3GPP uses standard 3GPP AT commands (3GPP TS 27.007 V14.5.0 (2017-09)) to communicate with the modem. + * + * GENERIC_AT3GPP can be used as a shield for example on top K64F. + * Cellular example can be used for testing: https://github.com/ARMmbed/mbed-os-example-cellular + * Define in mbed_app.json "target_overrides" correct pins and other setup for your modem. + * + * If new target don't work with GENERIC_AT3GPP then it needs some customizations. + * First thing to try can be checking/modifying cellular_properties array in GENERIC_AT3GPP.cpp, does the module support + * these commands or not? Modify array and if that's not enough then some AT_xxx classes might need to be created and + * methods overridden. Check help how other modules are done what methods they have overridden. Happy porting! + */ +class GENERIC_AT3GPP : public AT_CellularDevice { +public: + GENERIC_AT3GPP(FileHandle *fh); +}; +} // namespace mbed +#endif // GENERIC_AT3GPP_H_ diff --git a/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/mbed_lib.json b/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/mbed_lib.json new file mode 100644 index 00000000000..ed4b9173ff9 --- /dev/null +++ b/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "GENERIC_AT3GPP", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.cpp b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.cpp index c91941fc61b..55fe2df1de2 100644 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.cpp +++ b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.cpp @@ -17,25 +17,25 @@ #include "SARA4_PPP.h" #include "SARA4_PPP_CellularNetwork.h" -#include "SARA4_PPP_CellularPower.h" -#include "SARA4_PPP_CellularContext.h" using namespace mbed; 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 +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 0, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; SARA4_PPP::SARA4_PPP(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_unsupported_features(unsupported_features); -} - -SARA4_PPP::~SARA4_PPP() -{ + AT_CellularBase::set_cellular_properties(cellular_properties); } AT_CellularNetwork *SARA4_PPP::open_network_impl(ATHandler &at) @@ -43,12 +43,16 @@ AT_CellularNetwork *SARA4_PPP::open_network_impl(ATHandler &at) return new SARA4_PPP_CellularNetwork(at); } -AT_CellularPower *SARA4_PPP::open_power_impl(ATHandler &at) -{ - return new SARA4_PPP_CellularPower(at); -} - -AT_CellularContext *SARA4_PPP::create_context_impl(ATHandler &at, const char *apn) +#if MBED_CONF_SARA4_PPP_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() { - return new SARA4_PPP_CellularContext(at, this, apn); + static UARTSerial serial(MBED_CONF_SARA4_PPP_TX, MBED_CONF_SARA4_PPP_RX, MBED_CONF_SARA4_PPP_BAUDRATE); +#if defined (MBED_CONF_SARA4_PPP_RTS) && defined (MBED_CONF_SARA4_PPP_CTS) + tr_debug("SARA4_PPP flow control: RTS %d CTS %d", MBED_CONF_SARA4_PPP_RTS, MBED_CONF_SARA4_PPP_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_SARA4_PPP_RTS, MBED_CONF_SARA4_PPP_CTS); +#endif + static SARA4_PPP device(&serial); + return &device; } +#endif diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.h b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.h index 6a9f346d7a1..e4f49e30857 100644 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.h +++ b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.h @@ -18,6 +18,15 @@ #ifndef SARA4_PPP_H_ #define SARA4_PPP_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_SARA4_PPP_TX +#define MBED_CONF_SARA4_PPP_TX D1 +#endif +#ifndef MBED_CONF_SARA4_PPP_RX +#define MBED_CONF_SARA4_PPP_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" namespace mbed { @@ -26,12 +35,9 @@ class SARA4_PPP : public AT_CellularDevice { public: SARA4_PPP(FileHandle *fh); - virtual ~SARA4_PPP(); public: // CellularDevice virtual AT_CellularNetwork *open_network_impl(ATHandler &at); - virtual AT_CellularPower *open_power_impl(ATHandler &at); - virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); }; } // namespace mbed diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularContext.cpp b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularContext.cpp deleted file mode 100644 index 4616099faf3..00000000000 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularContext.cpp +++ /dev/null @@ -1,35 +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 "SARA4_PPP_CellularContext.h" - -namespace mbed { - -SARA4_PPP_CellularContext::SARA4_PPP_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularContext(at, device, apn) -{ -} - -SARA4_PPP_CellularContext::~SARA4_PPP_CellularContext() -{ -} - -bool SARA4_PPP_CellularContext::stack_type_supported(nsapi_ip_stack_t requested_stack) -{ - return requested_stack == IPV4_STACK ? true : false; -} - -} /* namespace mbed */ diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularContext.h b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularContext.h deleted file mode 100644 index be4a1779120..00000000000 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularContext.h +++ /dev/null @@ -1,35 +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. - */ -#ifndef SARA4_PPP_CELLULARCONTEXT_H_ -#define SARA4_PPP_CELLULARCONTEXT_H_ - -#include "AT_CellularContext.h" - -namespace mbed { - -class SARA4_PPP_CellularContext: public AT_CellularContext { -public: - SARA4_PPP_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); - virtual ~SARA4_PPP_CellularContext(); - -protected: - virtual bool stack_type_supported(nsapi_ip_stack_t requested_stack); -}; - -} /* namespace mbed */ - -#endif // SARA4_PPP_CELLULARCONTEXT_H_ diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.cpp b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.cpp index 5e2c891cb8d..a505d6f09c9 100644 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.cpp +++ b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.cpp @@ -27,11 +27,6 @@ SARA4_PPP_CellularNetwork::~SARA4_PPP_CellularNetwork() { } -AT_CellularNetwork::RegistrationMode SARA4_PPP_CellularNetwork::has_registration(RegistrationType reg_type) -{ - return (reg_type == C_REG || reg_type == C_GREG) ? RegistrationModeLAC : RegistrationModeDisable; -} - nsapi_error_t SARA4_PPP_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opRat) { _op_act = RAT_CATM1; diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.h b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.h index 123b15d387a..2799bb58e68 100644 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.h +++ b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.h @@ -28,8 +28,6 @@ class SARA4_PPP_CellularNetwork : public AT_CellularNetwork { virtual ~SARA4_PPP_CellularNetwork(); protected: - virtual RegistrationMode has_registration(RegistrationType rat); - virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology opRat); }; diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularPower.cpp b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularPower.cpp deleted file mode 100644 index 7cb16844814..00000000000 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularPower.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2017, 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 "SARA4_PPP_CellularPower.h" - -#include "onboard_modem_api.h" - -using namespace mbed; - -SARA4_PPP_CellularPower::SARA4_PPP_CellularPower(ATHandler &atHandler) : AT_CellularPower(atHandler) -{ - -} - -SARA4_PPP_CellularPower::~SARA4_PPP_CellularPower() -{ - -} - -nsapi_error_t SARA4_PPP_CellularPower::on() -{ -#if MODEM_ON_BOARD - ::onboard_modem_init(); - ::onboard_modem_power_up(); -#endif - return NSAPI_ERROR_OK; -} - -nsapi_error_t SARA4_PPP_CellularPower::off() -{ -#if MODEM_ON_BOARD - ::onboard_modem_power_down(); -#endif - return NSAPI_ERROR_OK; -} diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularPower.h b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularPower.h deleted file mode 100644 index 39abd60fad5..00000000000 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularPower.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2017, 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 SARA4_PPP_CELLULARPOWER_H_ -#define SARA4_PPP_CELLULARPOWER_H_ - -#include "AT_CellularPower.h" - -namespace mbed { - -class SARA4_PPP_CellularPower : public AT_CellularPower { -public: - SARA4_PPP_CellularPower(ATHandler &atHandler); - virtual ~SARA4_PPP_CellularPower(); - -public: //from CellularPower - - virtual nsapi_error_t on(); - - virtual nsapi_error_t off(); -}; - -} // namespace mbed - -#endif // SARA4_PPP_CELLULARPOWER_H_ diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/mbed_lib.json b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/mbed_lib.json new file mode 100644 index 00000000000..8ebfad7a3e1 --- /dev/null +++ b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "SARA4_PPP", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.cpp index 6a586974787..a76aedccb94 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.cpp @@ -16,33 +16,50 @@ */ #include "QUECTEL_BC95_CellularNetwork.h" -#include "QUECTEL_BC95_CellularPower.h" -#include "QUECTEL_BC95_CellularSIM.h" #include "QUECTEL_BC95_CellularContext.h" +#include "QUECTEL_BC95_CellularInformation.h" #include "QUECTEL_BC95.h" +#include "CellularLog.h" #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 - using namespace events; using namespace mbed; -static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGAUTH, // BC95_AT_Commands_Manual_V1.9 - AT_CellularBase::SUPPORTED_FEATURE_END_MARK +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeLAC, // C_EREG + AT_CellularNetwork::RegistrationModeDisable, // C_GREG + AT_CellularNetwork::RegistrationModeDisable, // C_REG + 1, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 0, // AT_CGAUTH, BC95_AT_Commands_Manual_V1.9 + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; QUECTEL_BC95::QUECTEL_BC95(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_unsupported_features(unsupported_features); + AT_CellularBase::set_cellular_properties(cellular_properties); } -QUECTEL_BC95::~QUECTEL_BC95() +nsapi_error_t QUECTEL_BC95::get_sim_state(SimState &state) { + _at->lock(); + _at->flush(); + _at->cmd_start("AT+NCCID?"); + _at->cmd_stop(); + _at->resp_start("+NCCID:"); + if (_at->info_resp()) { + state = SimStateReady; + } else { + tr_warn("SIM not readable."); + state = SimStateUnknown; // SIM may not be ready yet + } + _at->resp_stop(); + return _at->unlock_return_error(); } AT_CellularNetwork *QUECTEL_BC95::open_network_impl(ATHandler &at) @@ -50,17 +67,40 @@ AT_CellularNetwork *QUECTEL_BC95::open_network_impl(ATHandler &at) return new QUECTEL_BC95_CellularNetwork(at); } -AT_CellularPower *QUECTEL_BC95::open_power_impl(ATHandler &at) +AT_CellularContext *QUECTEL_BC95::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) +{ + return new QUECTEL_BC95_CellularContext(at, this, apn, cp_req, nonip_req); +} + +AT_CellularInformation *QUECTEL_BC95::open_information_impl(ATHandler &at) { - return new QUECTEL_BC95_CellularPower(at); + return new QUECTEL_BC95_CellularInformation(at); } -AT_CellularSIM *QUECTEL_BC95::open_sim_impl(ATHandler &at) +nsapi_error_t QUECTEL_BC95::init() { - return new QUECTEL_BC95_CellularSIM(at); + _at->lock(); + _at->flush(); + _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(); } -AT_CellularContext *QUECTEL_BC95::create_context_impl(ATHandler &at, const char *apn) +#if MBED_CONF_QUECTEL_BC95_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() { - return new QUECTEL_BC95_CellularContext(at, this, apn); + static UARTSerial serial(MBED_CONF_QUECTEL_BC95_TX, MBED_CONF_QUECTEL_BC95_RX, MBED_CONF_QUECTEL_BC95_BAUDRATE); +#if defined (MBED_CONF_UBLOX_AT_RTS) && defined(MBED_CONF_UBLOX_AT_CTS) + tr_debug("QUECTEL_BC95 flow control: RTS %d CTS %d", MBED_CONF_QUECTEL_BC95_RTS, MBED_CONF_QUECTEL_BC95_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_QUECTEL_BC95_RTS, MBED_CONF_QUECTEL_BC95_CTS); +#endif + static QUECTEL_BC95 device(&serial); + return &device; } +#endif diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.h index 7dd9937f4ca..84a017ca6f5 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.h +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.h @@ -18,6 +18,15 @@ #ifndef QUECTEL_BC95_H_ #define QUECTEL_BC95_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_QUECTEL_BC95_TX +#define MBED_CONF_QUECTEL_BC95_TX D1 +#endif +#ifndef MBED_CONF_QUECTEL_BC95_RX +#define MBED_CONF_QUECTEL_BC95_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" namespace mbed { @@ -25,13 +34,15 @@ namespace mbed { class QUECTEL_BC95 : public AT_CellularDevice { public: QUECTEL_BC95(FileHandle *fh); - virtual ~QUECTEL_BC95(); + +public: // AT_CellularDevice + virtual nsapi_error_t get_sim_state(SimState &state); 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); + virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false); + virtual AT_CellularInformation *open_information_impl(ATHandler &at); + virtual nsapi_error_t init(); public: // NetworkInterface void handle_urc(FileHandle *fh); 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 0f87bac48cf..6dad2a12062 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp @@ -16,11 +16,12 @@ */ #include "QUECTEL_BC95_CellularContext.h" #include "QUECTEL_BC95_CellularStack.h" +#include "CellularLog.h" namespace mbed { -QUECTEL_BC95_CellularContext::QUECTEL_BC95_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularContext(at, device, apn) +QUECTEL_BC95_CellularContext::QUECTEL_BC95_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : + AT_CellularContext(at, device, apn, cp_req, nonip_req) { } @@ -31,16 +32,16 @@ QUECTEL_BC95_CellularContext::~QUECTEL_BC95_CellularContext() #if !NSAPI_PPP_AVAILABLE NetworkStack *QUECTEL_BC95_CellularContext::get_stack() { + if (_pdp_type == NON_IP_PDP_TYPE || _cp_in_use) { + tr_error("Requesting stack for NON-IP context! Should request control plane netif: get_cp_netif()"); + return NULL; + } + if (!_stack) { - _stack = new QUECTEL_BC95_CellularStack(_at, _cid, _ip_stack_type); + _stack = new QUECTEL_BC95_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); } return _stack; } #endif // #if !NSAPI_PPP_AVAILABLE -bool QUECTEL_BC95_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) -{ - return stack_type == IPV4_STACK ? true : false; -} - } /* namespace mbed */ 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 d1421c20b5d..074066124d6 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.h +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.h @@ -23,14 +23,13 @@ namespace mbed { class QUECTEL_BC95_CellularContext: public AT_CellularContext { public: - QUECTEL_BC95_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); + QUECTEL_BC95_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req = false, bool nonip_req = false); 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); }; } /* namespace mbed */ diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.cpp new file mode 100644 index 00000000000..8bc51c5aefc --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.cpp @@ -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. + */ +#include "QUECTEL_BC95_CellularInformation.h" + +namespace mbed { + +QUECTEL_BC95_CellularInformation::QUECTEL_BC95_CellularInformation(ATHandler &at) : AT_CellularInformation(at) +{ +} + +QUECTEL_BC95_CellularInformation::~QUECTEL_BC95_CellularInformation() +{ +} + +// According to BC95_AT_Commands_Manual_V1.9 +nsapi_error_t QUECTEL_BC95_CellularInformation::get_iccid(char *buf, size_t buf_size) +{ + _at.lock(); + _at.cmd_start("AT+NCCID?"); + _at.cmd_stop(); + _at.resp_start("+NCCID:"); + _at.read_string(buf, buf_size); + _at.resp_stop(); + return _at.unlock_return_error(); +} + +} /* namespace mbed */ diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.h new file mode 100644 index 00000000000..833649eee9b --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.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_BC95_CELLULARINFORMATION_H_ +#define QUECTEL_BC95_CELLULARINFORMATION_H_ + +#include "AT_CellularInformation.h" + +namespace mbed { + +class QUECTEL_BC95_CellularInformation : public AT_CellularInformation { +public: + QUECTEL_BC95_CellularInformation(ATHandler &at); + virtual ~QUECTEL_BC95_CellularInformation(); + +public: + virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); +}; + +} /* namespace mbed */ + +#endif /* QUECTEL_BC95_CELLULARINFORMATION_H_ */ diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.cpp index cfceacc291a..440c7b519e6 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.cpp @@ -28,11 +28,6 @@ QUECTEL_BC95_CellularNetwork::~QUECTEL_BC95_CellularNetwork() { } -AT_CellularNetwork::RegistrationMode QUECTEL_BC95_CellularNetwork::has_registration(RegistrationType reg_tech) -{ - return (reg_tech == C_EREG) ? RegistrationModeLAC : RegistrationModeDisable; -} - nsapi_error_t QUECTEL_BC95_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opRat) { if (opRat != RAT_NB1) { diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.h index 30ab188d643..7058e2af5ba 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.h +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.h @@ -29,7 +29,6 @@ class QUECTEL_BC95_CellularNetwork : public AT_CellularNetwork { protected: virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology opRat); - virtual RegistrationMode has_registration(RegistrationType reg_type); }; } // namespace mbed #endif // QUECTEL_BC95_CELLULAR_NETWORK_H_ diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularPower.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularPower.cpp deleted file mode 100644 index fc27d257e89..00000000000 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularPower.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2017, 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_BC95_CellularPower.h" - -using namespace mbed; - -QUECTEL_BC95_CellularPower::QUECTEL_BC95_CellularPower(ATHandler &atHandler) : AT_CellularPower(atHandler) -{ - -} - -QUECTEL_BC95_CellularPower::~QUECTEL_BC95_CellularPower() -{ - -} - -nsapi_error_t QUECTEL_BC95_CellularPower::set_at_mode() -{ - _at.lock(); - _at.flush(); - _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_BC95_CellularPower::reset() -{ - _at.lock(); - _at.cmd_start("AT+NRB"); // reset to full power levels - _at.cmd_stop(); - _at.resp_start("REBOOTING", true); - return _at.unlock_return_error(); -} diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularPower.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularPower.h deleted file mode 100644 index a10ab3e5d36..00000000000 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularPower.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2017, 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_BC95_CELLULAR_POWER_H_ -#define QUECTEL_BC95_CELLULAR_POWER_H_ - -#include "AT_CellularPower.h" - -namespace mbed { - -class QUECTEL_BC95_CellularPower : public AT_CellularPower { -public: - QUECTEL_BC95_CellularPower(ATHandler &atHandler); - virtual ~QUECTEL_BC95_CellularPower(); - -public: //from CellularPower - virtual nsapi_error_t set_at_mode(); - - virtual nsapi_error_t reset(); -}; - -} // namespace mbed - -#endif // QUECTEL_BC95_CELLULAR_POWER_H_ diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularSIM.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularSIM.cpp deleted file mode 100644 index 6da7e5f554c..00000000000 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularSIM.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2017, 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_BC95_CellularSIM.h" -#include "CellularLog.h" - -using namespace mbed; - -QUECTEL_BC95_CellularSIM::QUECTEL_BC95_CellularSIM(ATHandler &atHandler) : AT_CellularSIM(atHandler) -{ - -} - -QUECTEL_BC95_CellularSIM::~QUECTEL_BC95_CellularSIM() -{ - -} - -nsapi_error_t QUECTEL_BC95_CellularSIM::get_sim_state(SimState &state) -{ - _at.lock(); - _at.flush(); - _at.cmd_start("AT+NCCID?"); - _at.cmd_stop(); - _at.resp_start("+NCCID:"); - if (_at.info_resp()) { - state = SimStateReady; - } else { - tr_warn("SIM not readable."); - state = SimStateUnknown; // SIM may not be ready yet - } - _at.resp_stop(); - return _at.unlock_return_error(); -} - -// According to BC95_AT_Commands_Manual_V1.9 -nsapi_error_t QUECTEL_BC95_CellularSIM::get_iccid(char *buf, size_t buf_size) -{ - _at.lock(); - _at.cmd_start("AT+NCCID?"); - _at.cmd_stop(); - _at.resp_start("+NCCID:"); - _at.read_string(buf, buf_size); - _at.resp_stop(); - return _at.unlock_return_error(); -} - -nsapi_error_t QUECTEL_BC95_CellularSIM::change_pin(const char *sim_pin, const char *new_pin) -{ - return NSAPI_ERROR_UNSUPPORTED; -} - -nsapi_error_t QUECTEL_BC95_CellularSIM::set_pin_query(const char *sim_pin, bool query_pin) -{ - return NSAPI_ERROR_UNSUPPORTED; -} diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularSIM.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularSIM.h deleted file mode 100644 index 498be768172..00000000000 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularSIM.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2017, 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_BC95_CELLULAR_SIM_H_ -#define QUECTEL_BC95_CELLULAR_SIM_H_ - -#include "AT_CellularSIM.h" - -namespace mbed { - -class QUECTEL_BC95_CellularSIM : public AT_CellularSIM { -public: - QUECTEL_BC95_CellularSIM(ATHandler &atHandler); - virtual ~QUECTEL_BC95_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_BC95_CELLULAR_SIM_H_ diff --git a/features/cellular/framework/targets/QUECTEL/BC95/mbed_lib.json b/features/cellular/framework/targets/QUECTEL/BC95/mbed_lib.json new file mode 100644 index 00000000000..d435e5e0850 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/BC95/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "QUECTEL_BC95", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 9600 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp index e07b7001c0d..092652f354a 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp @@ -18,8 +18,7 @@ #include "QUECTEL_BG96.h" #include "QUECTEL_BG96_CellularNetwork.h" #include "QUECTEL_BG96_CellularStack.h" -#include "QUECTEL_BG96_CellularSIM.h" -#include "QUECTEL_BG96_CellularPower.h" +#include "QUECTEL_BG96_CellularInformation.h" #include "QUECTEL_BG96_CellularContext.h" using namespace mbed; @@ -29,22 +28,24 @@ using namespace events; #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 +#define DEVICE_READY_URC "CPIN:" -static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::AT_CGDATA, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeLAC, // C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 0, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK + 1, // PROPERTY_NON_IP_PDP_TYPE }; QUECTEL_BG96::QUECTEL_BG96(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_unsupported_features(unsupported_features); -} - -QUECTEL_BG96::~QUECTEL_BG96() -{ + AT_CellularBase::set_cellular_properties(cellular_properties); } AT_CellularNetwork *QUECTEL_BG96::open_network_impl(ATHandler &at) @@ -52,18 +53,31 @@ AT_CellularNetwork *QUECTEL_BG96::open_network_impl(ATHandler &at) return new QUECTEL_BG96_CellularNetwork(at); } -AT_CellularSIM *QUECTEL_BG96::open_sim_impl(ATHandler &at) +AT_CellularContext *QUECTEL_BG96::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) { - return new QUECTEL_BG96_CellularSIM(at); + return new QUECTEL_BG96_CellularContext(at, this, apn, cp_req, nonip_req); } -AT_CellularPower *QUECTEL_BG96::open_power_impl(ATHandler &at) +AT_CellularInformation *QUECTEL_BG96::open_information_impl(ATHandler &at) { - return new QUECTEL_BG96_CellularPower(at); + return new QUECTEL_BG96_CellularInformation(at); } -AT_CellularContext *QUECTEL_BG96::create_context_impl(ATHandler &at, const char *apn) +void QUECTEL_BG96::set_ready_cb(Callback callback) { - return new QUECTEL_BG96_CellularContext(at, this, apn); + _at->set_urc_handler(DEVICE_READY_URC, callback); } +#if MBED_CONF_QUECTEL_BG96_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() +{ + static UARTSerial serial(MBED_CONF_QUECTEL_BG96_TX, MBED_CONF_QUECTEL_BG96_RX, MBED_CONF_QUECTEL_BG96_BAUDRATE); +#if defined (MBED_CONF_QUECTEL_BG96_RTS) && defined(MBED_CONF_QUECTEL_BG96_CTS) + tr_debug("QUECTEL_BG96 flow control: RTS %d CTS %d", MBED_CONF_QUECTEL_BG96_RTS, MBED_CONF_QUECTEL_BG96_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_QUECTEL_BG96_RTS, MBED_CONF_QUECTEL_BG96_CTS); +#endif + static QUECTEL_BG96 device(&serial); + return &device; +} +#endif diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.h index 86eb63bd4cf..324de491c81 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.h +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.h @@ -18,6 +18,15 @@ #ifndef QUECTEL_BG96_H_ #define QUECTEL_BG96_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_QUECTEL_BG96_TX +#define MBED_CONF_QUECTEL_BG96_TX D1 +#endif +#ifndef MBED_CONF_QUECTEL_BG96_RX +#define MBED_CONF_QUECTEL_BG96_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" namespace mbed { @@ -25,13 +34,13 @@ namespace mbed { class QUECTEL_BG96 : public AT_CellularDevice { public: QUECTEL_BG96(FileHandle *fh); - virtual ~QUECTEL_BG96(); protected: // AT_CellularDevice virtual AT_CellularNetwork *open_network_impl(ATHandler &at); - virtual AT_CellularSIM *open_sim_impl(ATHandler &at); - virtual AT_CellularPower *open_power_impl(ATHandler &at); - virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); + virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false); + virtual AT_CellularInformation *open_information_impl(ATHandler &at); + virtual void set_ready_cb(Callback callback); + public: void handle_urc(FileHandle *fh); }; 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 73a971df529..dd3ea30e29e 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp @@ -16,36 +16,57 @@ */ #include "QUECTEL_BG96_CellularContext.h" #include "QUECTEL_BG96_CellularStack.h" +#include "QUECTEL_BG96_ControlPlane_netif.h" +#include "CellularLog.h" + +#include "Semaphore.h" namespace mbed { -QUECTEL_BG96_CellularContext::QUECTEL_BG96_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularContext(at, device, apn) -{ -} +// Non-IP context supported only for context id 1 +#define NIDD_PDP_CONTEXT_ID 1 +// Timeout to wait for URC indicating NIDD connection opening +#define NIDD_OPEN_URC_TIMEOUT 3000 -QUECTEL_BG96_CellularContext::~QUECTEL_BG96_CellularContext() +QUECTEL_BG96_CellularContext::QUECTEL_BG96_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : + AT_CellularContext(at, device, apn, cp_req, nonip_req) { + if (_nonip_req) { + _at.set_urc_handler("+QIND:", mbed::Callback(this, &QUECTEL_BG96_CellularContext::urc_nidd)); + } } -bool QUECTEL_BG96_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) +QUECTEL_BG96_CellularContext::~QUECTEL_BG96_CellularContext() { - if (stack_type == IPV4_STACK) { - return true; + if (_nonip_req) { + _at.set_urc_handler("+QIND:", 0); } - return false; } #if !NSAPI_PPP_AVAILABLE NetworkStack *QUECTEL_BG96_CellularContext::get_stack() { + if (_pdp_type == NON_IP_PDP_TYPE || (_nonip_req && _pdp_type != DEFAULT_PDP_TYPE)) { + tr_error("Requesting stack for NON-IP context! Should request control plane netif: get_cp_netif()"); + return NULL; + } + if (!_stack) { - _stack = new QUECTEL_BG96_CellularStack(_at, _cid, _ip_stack_type); + _stack = new QUECTEL_BG96_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); } + return _stack; } #endif // #if !NSAPI_PPP_AVAILABLE +ControlPlane_netif *QUECTEL_BG96_CellularContext::get_cp_netif() +{ + if (!_cp_netif) { + _cp_netif = new QUECTEL_BG96_ControlPlane_netif(_at, _cid); + } + return _cp_netif; +} + nsapi_error_t QUECTEL_BG96_CellularContext::do_user_authentication() { if (_pwd && _uname) { @@ -67,4 +88,110 @@ nsapi_error_t QUECTEL_BG96_CellularContext::do_user_authentication() return NSAPI_ERROR_OK; } +nsapi_error_t QUECTEL_BG96_CellularContext::activate_non_ip_context() +{ + _at.lock(); + + // Open the NIDD connection + _at.cmd_start("AT+QCFGEXT=\"nipd\",1"); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + nsapi_size_or_error_t ret = _at.get_last_error(); + + _at.unlock(); + + if (ret == NSAPI_ERROR_OK) { + _semaphore.wait(NIDD_OPEN_URC_TIMEOUT); + if (_cid == -1) { + return NSAPI_ERROR_NO_CONNECTION; + } + } + + return (ret == NSAPI_ERROR_OK) ? NSAPI_ERROR_OK : NSAPI_ERROR_NO_CONNECTION; +} + +void QUECTEL_BG96_CellularContext::deactivate_non_ip_context() +{ + // Close the NIDD connection + _at.cmd_start("AT+QCFGEXT=\"nipd\",0"); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + +} + +void QUECTEL_BG96_CellularContext::urc_nidd() +{ + char nipd_string[6]; + + // skip "nipd" + _at.skip_param(); + _at.read_string(nipd_string, sizeof(nipd_string)); + + if (!strcmp(nipd_string, "recv")) { + cp_data_received(); + } else if (!strcmp(nipd_string, "open")) { + urc_nidd_open(); + } else if (!strcmp(nipd_string, "close")) { + urc_nidd_close(); + } +} + +void QUECTEL_BG96_CellularContext::urc_nidd_open() +{ + int err = _at.read_int(); + if (!err) { + _is_context_active = true; + _is_context_activated = true; + _cid = NIDD_PDP_CONTEXT_ID; + } else { + tr_error("NIDD connection open failed with error: %d", err); + } + _semaphore.release(); +} + +void QUECTEL_BG96_CellularContext::urc_nidd_close() +{ + set_disconnect(); +} + +nsapi_error_t QUECTEL_BG96_CellularContext::setup_control_plane_opt() +{ + _at.lock(); + + _at.cmd_start("AT+QCFGEXT=\"pdp_type\","); + _at.write_int(NIDD_PDP_CONTEXT_ID); + _at.write_string("Non-IP"); + _at.write_string(_apn); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + _at.cmd_start("AT+CFUN=0"); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + _at.cmd_start("AT+CFUN=1"); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + // Configure Non-IP outgoing data type - 0 for no exception data + _at.cmd_start("AT+QCFGEXT=\"nipdcfg\",0,"); + _at.write_string(_apn); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + if (_at.get_last_error() == NSAPI_ERROR_OK) { + _cp_in_use = true; + if (_nonip_req) { + _pdp_type = NON_IP_PDP_TYPE; + } + } + + return _at.unlock_return_error(); +} + } /* namespace mbed */ 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 89d20fc2310..032ebf0771d 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.h +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.h @@ -23,15 +23,24 @@ namespace mbed { class QUECTEL_BG96_CellularContext: public AT_CellularContext { public: - QUECTEL_BG96_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); + QUECTEL_BG96_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req = false, bool nonip_req = false); virtual ~QUECTEL_BG96_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 ControlPlane_netif *get_cp_netif(); virtual nsapi_error_t do_user_authentication(); + virtual nsapi_error_t activate_non_ip_context(); + virtual nsapi_error_t setup_control_plane_opt(); + virtual void deactivate_non_ip_context(); + rtos::Semaphore _semaphore; + +private: + void urc_nidd(); + void urc_nidd_open(); + void urc_nidd_close(); }; } /* namespace mbed */ diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.cpp new file mode 100644 index 00000000000..c8f4319ce61 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.cpp @@ -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. + */ +#include "QUECTEL_BG96_CellularInformation.h" + +namespace mbed { + +QUECTEL_BG96_CellularInformation::QUECTEL_BG96_CellularInformation(ATHandler &at) : AT_CellularInformation(at) +{ +} + +QUECTEL_BG96_CellularInformation::~QUECTEL_BG96_CellularInformation() +{ +} + +// According to BG96_AT_Commands_Manual_V2.0 +nsapi_error_t QUECTEL_BG96_CellularInformation::get_iccid(char *buf, size_t buf_size) +{ + _at.lock(); + _at.cmd_start("AT+QCCID"); + _at.cmd_stop(); + _at.resp_start("+QCCID:"); + _at.read_string(buf, buf_size); + _at.resp_stop(); + return _at.unlock_return_error(); +} + +} /* namespace mbed */ diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.h new file mode 100644 index 00000000000..c952eac33e6 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.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_BG96_CELLULARINFORMATION_H_ +#define QUECTEL_BG96_CELLULARINFORMATION_H_ + +#include "AT_CellularInformation.h" + +namespace mbed { + +class QUECTEL_BG96_CellularInformation: public AT_CellularInformation { +public: + QUECTEL_BG96_CellularInformation(ATHandler &at); + virtual ~QUECTEL_BG96_CellularInformation(); + +public: // AT_CellularInformation + virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); +}; + +} /* namespace mbed */ + +#endif /* QUECTEL_BG96_CELLULARINFORMATION_H_ */ diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularPower.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularPower.cpp deleted file mode 100644 index f6e35196a05..00000000000 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularPower.cpp +++ /dev/null @@ -1,36 +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 "QUECTEL_BG96_CellularPower.h" - -#define DEVICE_READY_URC "CPIN:" - -using namespace mbed; - -QUECTEL_BG96_CellularPower::QUECTEL_BG96_CellularPower(ATHandler &atHandler) : AT_CellularPower(atHandler) -{ -} - -nsapi_error_t QUECTEL_BG96_CellularPower::set_device_ready_urc_cb(mbed::Callback callback) -{ - return _at.set_urc_handler(DEVICE_READY_URC, callback); -} - -void QUECTEL_BG96_CellularPower::remove_device_ready_urc_cb(mbed::Callback callback) -{ - _at.remove_urc_handler(DEVICE_READY_URC); -} diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularPower.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularPower.h deleted file mode 100644 index ec7368cbfe5..00000000000 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularPower.h +++ /dev/null @@ -1,36 +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. - */ - -#ifndef QUECTEL_BG96_CELLULAR_POWER_H_ -#define QUECTEL_BG96_CELLULAR_POWER_H_ - -#include "AT_CellularPower.h" - -namespace mbed { - -class QUECTEL_BG96_CellularPower : public AT_CellularPower { -public: - QUECTEL_BG96_CellularPower(ATHandler &atHandler); - -public: //from CellularPower - virtual nsapi_error_t set_device_ready_urc_cb(mbed::Callback callback); - virtual void remove_device_ready_urc_cb(mbed::Callback callback); -}; - -} // namespace mbed - -#endif // QUECTEL_BG96_CELLULAR_POWER_H_ diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularSIM.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularSIM.cpp deleted file mode 100644 index 80cae03db59..00000000000 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularSIM.cpp +++ /dev/null @@ -1,43 +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 "QUECTEL_BG96_CellularSIM.h" -#include "CellularLog.h" - -using namespace mbed; - -QUECTEL_BG96_CellularSIM::QUECTEL_BG96_CellularSIM(ATHandler &atHandler) : AT_CellularSIM(atHandler) -{ - -} - -QUECTEL_BG96_CellularSIM::~QUECTEL_BG96_CellularSIM() -{ - -} - -// According to BG96_AT_Commands_Manual_V2.0 -nsapi_error_t QUECTEL_BG96_CellularSIM::get_iccid(char *buf, size_t buf_size) -{ - _at.lock(); - _at.cmd_start("AT+QCCID"); - _at.cmd_stop(); - _at.resp_start("+QCCID:"); - _at.read_string(buf, buf_size); - _at.resp_stop(); - return _at.unlock_return_error(); -} diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularSIM.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularSIM.h deleted file mode 100644 index efbcf5b3edc..00000000000 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularSIM.h +++ /dev/null @@ -1,36 +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. - */ - -#ifndef QUECTEL_BG96_CELLULAR_SIM_H_ -#define QUECTEL_BG96_CELLULAR_SIM_H_ - -#include "AT_CellularSIM.h" - -namespace mbed { - -class QUECTEL_BG96_CellularSIM : public AT_CellularSIM { -public: - QUECTEL_BG96_CellularSIM(ATHandler &atHandler); - virtual ~QUECTEL_BG96_CellularSIM(); - -public: //from CellularSIM - virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); -}; - -} // namespace mbed - -#endif // QUECTEL_BG96_CELLULAR_SIM_H_ 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..8bc393128a0 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,10 @@ 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; + } + int sent_len = 0; int sent_len_before = 0; int sent_len_after = 0; @@ -296,6 +312,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 +324,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 > (nsapi_size_or_error_t)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/BG96/QUECTEL_BG96_ControlPlane_netif.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_ControlPlane_netif.cpp new file mode 100644 index 00000000000..5d2036c76a1 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_ControlPlane_netif.cpp @@ -0,0 +1,68 @@ +#include "QUECTEL_BG96_ControlPlane_netif.h" + +namespace mbed { + +QUECTEL_BG96_ControlPlane_netif::QUECTEL_BG96_ControlPlane_netif(ATHandler &at, int cid) : AT_ControlPlane_netif(at, cid) +{} + +nsapi_size_or_error_t QUECTEL_BG96_ControlPlane_netif::send(const void *data, nsapi_size_t size) +{ + _at.lock(); + + _at.cmd_start("AT+QCFGEXT=\"nipds\",0,"); + _at.write_string((char *)data); + _at.write_int(size); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + + nsapi_error_t err = _at.get_last_error(); + + _at.unlock(); + + if (err == NSAPI_ERROR_OK) { + return size; + } + + return err; +} + +nsapi_size_or_error_t QUECTEL_BG96_ControlPlane_netif::recv(void *buffer, nsapi_size_t size) +{ + _at.lock(); + + _at.cmd_start("AT+QCFGEXT=\"nipdr\",0"); + _at.cmd_stop(); + _at.resp_start("+QCFGEXT: "); + // skip 3 params: "nipdr",, + _at.skip_param(3); + // get to + int unread_length = _at.read_int(); + _at.resp_stop(); + + if (!unread_length || unread_length == -1) { + _at.unlock(); + return NSAPI_ERROR_WOULD_BLOCK; + } + + _at.cmd_start("AT+QCFGEXT=\"nipdr\","); + _at.write_int(unread_length); + _at.cmd_stop(); + + _at.resp_start("+QCFGEXT:"); + // skip "nipdr" + _at.skip_param(); + int read_length = _at.read_int(); + _at.read_string((char *)buffer, read_length); + _at.resp_stop(); + nsapi_error_t err = _at.get_last_error(); + _at.unlock(); + + if (err == NSAPI_ERROR_OK && read_length) { + return read_length; + } + + return NSAPI_ERROR_WOULD_BLOCK; +} + +} // mbed namespace diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_ControlPlane_netif.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_ControlPlane_netif.h new file mode 100644 index 00000000000..917a7428087 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_ControlPlane_netif.h @@ -0,0 +1,36 @@ +/* + * 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_BG96_CONTROLPLANE_NETIF_H_ +#define QUECTEL_BG96_CONTROLPLANE_NETIF_H_ + +#include "AT_ControlPlane_netif.h" + +namespace mbed { + +class QUECTEL_BG96_ControlPlane_netif: public AT_ControlPlane_netif { +public: + QUECTEL_BG96_ControlPlane_netif(ATHandler &at, int cid); + virtual ~QUECTEL_BG96_ControlPlane_netif() {}; + +// ControlPlane_netif + nsapi_size_or_error_t send(const void *data, nsapi_size_t size); + nsapi_size_or_error_t recv(void *buffer, nsapi_size_t size); +}; + +} /* namespace mbed */ + +#endif // QUECTEL_BG96_CONTROLPLANE_NETIF_H_ diff --git a/features/cellular/framework/targets/QUECTEL/BG96/mbed_lib.json b/features/cellular/framework/targets/QUECTEL/BG96/mbed_lib.json new file mode 100644 index 00000000000..9ad92a2ee6c --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/BG96/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "QUECTEL_BG96", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp index a5efe042d9a..612628a7a03 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp @@ -1,4 +1,5 @@ /* +#include * Copyright (c) 2018, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 * @@ -15,53 +16,93 @@ * limitations under the License. */ -#include "QUECTEL_M26_CellularNetwork.h" -#include "QUECTEL_M26_CellularPower.h" -#include "QUECTEL_M26_CellularSIM.h" +#include "AT_CellularNetwork.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 +#include "CellularLog.h" -#define MAX_STARTUP_TRIALS 5 -#define MAX_RESET_TRIALS 5 +using namespace mbed; -static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::AT_CGAUTH, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeDisable,// C_REG + 0, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 0, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; QUECTEL_M26::QUECTEL_M26(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_unsupported_features(unsupported_features); + AT_CellularBase::set_cellular_properties(cellular_properties); } -QUECTEL_M26::~QUECTEL_M26() +nsapi_error_t QUECTEL_M26::get_sim_state(SimState &state) { -} + char buf[13]; -AT_CellularNetwork *QUECTEL_M26::open_network_impl(ATHandler &at) -{ - return new QUECTEL_M26_CellularNetwork(at); + _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(); } -AT_CellularPower *QUECTEL_M26::open_power_impl(ATHandler &at) +AT_CellularContext *QUECTEL_M26::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) { - return new QUECTEL_M26_CellularPower(at); + return new QUECTEL_M26_CellularContext(at, this, apn, cp_req, nonip_req); } -AT_CellularSIM *QUECTEL_M26::open_sim_impl(ATHandler &at) +nsapi_error_t QUECTEL_M26::shutdown() { - return new QUECTEL_M26_CellularSIM(at); + _at->lock(); + _at->cmd_start("AT+QPOWD=0"); + _at->cmd_stop(); + _at->resp_start(); + _at->resp_stop(); + + return _at->unlock_return_error();; } -AT_CellularContext *QUECTEL_M26::create_context_impl(ATHandler &at, const char *apn) + +#if MBED_CONF_QUECTEL_M26_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() { - return new QUECTEL_M26_CellularContext(at, this, apn); + static UARTSerial serial(MBED_CONF_QUECTEL_M26_TX, MBED_CONF_QUECTEL_M26_RX, MBED_CONF_QUECTEL_M26_BAUDRATE); +#if defined (MBED_CONF_QUECTEL_M26_RTS) && defined(MBED_CONF_QUECTEL_M26_CTS) + tr_debug("QUECTEL_M26 flow control: RTS %d CTS %d", MBED_CONF_QUECTEL_M26_RTS, MBED_CONF_QUECTEL_M26_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_QUECTEL_M26_RTS, MBED_CONF_QUECTEL_M26_CTS); +#endif + static QUECTEL_M26 device(&serial); + return &device; } +#endif diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.h index 05053e0308f..e60aeb34c75 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.h +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.h @@ -18,6 +18,15 @@ #ifndef QUECTEL_M26_H_ #define QUECTEL_M26_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_QUECTEL_M26_TX +#define MBED_CONF_QUECTEL_M26_TX D1 +#endif +#ifndef MBED_CONF_QUECTEL_M26_RX +#define MBED_CONF_QUECTEL_M26_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" namespace mbed { @@ -25,13 +34,11 @@ 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); + virtual nsapi_error_t get_sim_state(SimState &state); + virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false); + virtual nsapi_error_t shutdown(); public: // NetworkInterface void handle_urc(FileHandle *fh); diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp index 04d0cb21eec..852f2c437b8 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp @@ -19,25 +19,16 @@ 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(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : + AT_CellularContext(at, device, apn, cp_req, nonip_req) { } -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); + _stack = new QUECTEL_M26_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); } return _stack; } diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.h index ae66b9fd31a..ba27bc59834 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.h +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.h @@ -23,11 +23,9 @@ namespace mbed { class QUECTEL_M26_CellularContext: public AT_CellularContext { public: - QUECTEL_M26_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); - virtual ~QUECTEL_M26_CellularContext(); + QUECTEL_M26_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req = false, bool nonip_req = false); 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 diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.cpp new file mode 100644 index 00000000000..f55edcc9610 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.cpp @@ -0,0 +1,37 @@ +/* + * 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_CellularInformation.h" + +using namespace mbed; + +QUECTEL_M26_CellularInformation::QUECTEL_M26_CellularInformation(ATHandler &atHandler) : AT_CellularInformation(atHandler) +{ + +} + +// According to M26_AT_Commands_Manual_V1.9 +nsapi_error_t QUECTEL_M26_CellularInformation::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(); +} diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.h new file mode 100644 index 00000000000..a1a48a6f233 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.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_INFORMATION_H_ +#define QUECTEL_M26_CELLULAR_INFORMATION_H_ + +#include "AT_CellularInformation.h" + +namespace mbed { + +class QUECTEL_M26_CellularInformation : public AT_CellularInformation { +public: + QUECTEL_M26_CellularInformation(ATHandler &atHandler); + +public: //from CellularInformation + virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); +}; + +} // namespace mbed + +#endif // QUECTEL_M26_CELLULAR_INFORMATION_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 deleted file mode 100644 index 0ee5464fd85..00000000000 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularNetwork.cpp +++ /dev/null @@ -1,45 +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 "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 deleted file mode 100644 index 0aff1e3e36a..00000000000 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularNetwork.h +++ /dev/null @@ -1,35 +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. - */ - -#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 deleted file mode 100644 index 2ab2b9a1dd4..00000000000 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.cpp +++ /dev/null @@ -1,60 +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 "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/QUECTEL/M26/QUECTEL_M26_CellularPower.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.h deleted file mode 100644 index c62a7f5be87..00000000000 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularPower.h +++ /dev/null @@ -1,40 +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. - */ - -#ifndef QUECTEL_M26_CELLULAR_POWER_H_ -#define QUECTEL_M26_CELLULAR_POWER_H_ - -#include "AT_CellularPower.h" - -namespace mbed { - -class QUECTEL_M26_CellularPower : public AT_CellularPower { -public: - 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 // 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 deleted file mode 100644 index 0b4fa846598..00000000000 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularSIM.cpp +++ /dev/null @@ -1,88 +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 "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 deleted file mode 100644 index 8cf227a70cd..00000000000 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularSIM.h +++ /dev/null @@ -1,39 +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. - */ - -#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 index 20515438a2f..b4edfe014c0 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp @@ -15,18 +15,37 @@ * limitations under the License. */ +#include "rtos/Kernel.h" #include "QUECTEL/M26/QUECTEL_M26_CellularStack.h" #include "CellularLog.h" +#define SOCKET_SEND_READY_TIMEOUT (30*1000) +#define SOCKET_READ_TIMEOUT 1000 + 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)); + _at.set_urc_handler("+QIRDI:", Callback(this, &QUECTEL_M26_CellularStack::urc_qiurc)); + + _at.set_urc_handler("0, CLOSED", Callback(this, &QUECTEL_M26_CellularStack::socket_closed_0)); + _at.set_urc_handler("1, CLOSED", Callback(this, &QUECTEL_M26_CellularStack::socket_closed_1)); + _at.set_urc_handler("2, CLOSED", Callback(this, &QUECTEL_M26_CellularStack::socket_closed_2)); + _at.set_urc_handler("3, CLOSED", Callback(this, &QUECTEL_M26_CellularStack::socket_closed_3)); + _at.set_urc_handler("4, CLOSED", Callback(this, &QUECTEL_M26_CellularStack::socket_closed_4)); + _at.set_urc_handler("5, CLOSED", Callback(this, &QUECTEL_M26_CellularStack::socket_closed_5)); } QUECTEL_M26_CellularStack::~QUECTEL_M26_CellularStack() { + _at.set_urc_handler("5, CLOSED", NULL); + _at.set_urc_handler("4, CLOSED", NULL); + _at.set_urc_handler("3, CLOSED", NULL); + _at.set_urc_handler("2, CLOSED", NULL); + _at.set_urc_handler("1, CLOSED", NULL); + _at.set_urc_handler("0, CLOSED", NULL); + + _at.set_urc_handler("+QIRDI:", NULL); } nsapi_error_t QUECTEL_M26_CellularStack::socket_listen(nsapi_socket_t handle, int backlog) @@ -44,6 +63,45 @@ nsapi_error_t QUECTEL_M26_CellularStack::socket_bind(nsapi_socket_t handle, cons return NSAPI_ERROR_UNSUPPORTED; } +void QUECTEL_M26_CellularStack::socket_closed(int sock_id) +{ + CellularSocket *sock = find_socket(sock_id); + if (sock) { + tr_info("Socket closed %d", sock_id); + sock->closed = true; + } +} + +void QUECTEL_M26_CellularStack::socket_closed_0() +{ + socket_closed(0); +} + +void QUECTEL_M26_CellularStack::socket_closed_1() +{ + socket_closed(1); +} + +void QUECTEL_M26_CellularStack::socket_closed_2() +{ + socket_closed(2); +} + +void QUECTEL_M26_CellularStack::socket_closed_3() +{ + socket_closed(3); +} + +void QUECTEL_M26_CellularStack::socket_closed_4() +{ + socket_closed(4); +} + +void QUECTEL_M26_CellularStack::socket_closed_5() +{ + socket_closed(5); +} + void QUECTEL_M26_CellularStack::urc_qiurc() { int sock_id = 0; @@ -348,7 +406,6 @@ nsapi_error_t QUECTEL_M26_CellularStack::create_socket_impl(CellularSocket *sock 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; } @@ -360,7 +417,7 @@ nsapi_error_t QUECTEL_M26_CellularStack::create_socket_impl(CellularSocket *sock 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_len = size; int sent_acked = 0; int sent_nacked = 0; int sent_len_before = 0; @@ -369,7 +426,7 @@ nsapi_size_or_error_t QUECTEL_M26_CellularStack::socket_sendto_impl(CellularSock tr_debug("QUECTEL_M26_CellularStack:%s:%u:[%d-%d]", __FUNCTION__, __LINE__, sent_len, size); - if (sent_len == 0) { + if (sent_len == 0 || size > M26_SENT_BYTE_MAX) { tr_error("QUECTEL_M26_CellularStack:%s:%u:[NSAPI_ERROR_PARAMETER]", __FUNCTION__, __LINE__); return NSAPI_ERROR_PARAMETER; } @@ -385,23 +442,28 @@ nsapi_size_or_error_t QUECTEL_M26_CellularStack::socket_sendto_impl(CellularSock } 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(); + bool ready_to_send = false; + uint64_t start_time = rtos::Kernel::get_ms_count(); + while (!ready_to_send && start_time < rtos::Kernel::get_ms_count() + SOCKET_SEND_READY_TIMEOUT) { + _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 (_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; + if (sent_nacked == 0) { + ready_to_send = true; + } else { + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[NSAPI_ERROR_WOULD_BLOCK]", __FUNCTION__, __LINE__); + } } } @@ -455,35 +517,53 @@ nsapi_size_or_error_t QUECTEL_M26_CellularStack::socket_sendto_impl(CellularSock 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); + uint64_t start_time = rtos::Kernel::get_ms_count(); + nsapi_size_t len = 0; + for (; len < size;) { + int read_len = (size - len > M26_RECV_BYTE_MAX) ? M26_RECV_BYTE_MAX : size - len; + _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(read_len); + _at.cmd_stop(); + + nsapi_size_t recv_len = 0; + _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 = _at.read_int(); + _at.read_bytes((uint8_t *)buffer + len, recv_len); + len += recv_len; + } + _at.resp_stop(); + + if (_at.get_last_error() != NSAPI_ERROR_OK) { + tr_warn("QUECTEL_M26_CellularStack:%s:%u:[ERROR NSAPI_ERROR_OK]", __FUNCTION__, __LINE__); + return NSAPI_ERROR_DEVICE_ERROR; + } + + if (rtos::Kernel::get_ms_count() > start_time + SOCKET_READ_TIMEOUT) { + tr_warn("QUECTEL_M26_CellularStack:%s:%u:[ERROR NSAPI_ERROR_TIMEOUT]", __FUNCTION__, __LINE__); + return NSAPI_ERROR_TIMEOUT; + } + + if (recv_len == 0 || recv_len < read_len) { + break; } } - _at.resp_stop(); - if (!recv_len_after || (_at.get_last_error() != NSAPI_ERROR_OK)) { + if (len == 0) { tr_debug("QUECTEL_M26_CellularStack:%s:%u:[ERROR NSAPI_ERROR_WOULD_BLOCK]", __FUNCTION__, __LINE__); return NSAPI_ERROR_WOULD_BLOCK; } @@ -493,6 +573,6 @@ nsapi_size_or_error_t QUECTEL_M26_CellularStack::socket_recvfrom_impl(CellularSo address->set_port(port); } - tr_debug("QUECTEL_M26_CellularStack:%s:%u:[%d]", __FUNCTION__, __LINE__, recv_len_after); - return recv_len_after; + tr_debug("QUECTEL_M26_CellularStack:%s:%u:[%d]", __FUNCTION__, __LINE__, len); + return len; } diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h index 822c4967c35..958aa2223ad 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h @@ -25,7 +25,7 @@ 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 +#define M26_RECV_BYTE_MAX 1024 class QUECTEL_M26_CellularStack : public AT_CellularStack { public: @@ -62,9 +62,15 @@ class QUECTEL_M26_CellularStack : public AT_CellularStack { void *buffer, nsapi_size_t size); private: - // URC handlers // URC handlers void urc_qiurc(); + void socket_closed(int sock_id); + void socket_closed_0(); + void socket_closed_1(); + void socket_closed_2(); + void socket_closed_3(); + void socket_closed_4(); + void socket_closed_5(); void handle_open_socket_response(int &modem_connect_id, int &err); }; diff --git a/features/cellular/framework/targets/QUECTEL/M26/mbed_lib.json b/features/cellular/framework/targets/QUECTEL/M26/mbed_lib.json new file mode 100644 index 00000000000..656c9e1306c --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/M26/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "QUECTEL_M26", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.cpp b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.cpp index 4e69e0a8ede..695ce9f5025 100644 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.cpp +++ b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.cpp @@ -15,10 +15,10 @@ * limitations under the License. */ +#include "onboard_modem_api.h" #include "QUECTEL_UG96.h" -#include "QUECTEL_UG96_CellularNetwork.h" -#include "QUECTEL_UG96_CellularPower.h" #include "QUECTEL_UG96_CellularContext.h" +#include "AT_CellularNetwork.h" using namespace mbed; using namespace events; @@ -27,28 +27,39 @@ using namespace events; #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 intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 1, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK +}; QUECTEL_UG96::QUECTEL_UG96(FileHandle *fh) : AT_CellularDevice(fh) { + AT_CellularBase::set_cellular_properties(cellular_properties); } -QUECTEL_UG96::~QUECTEL_UG96() +AT_CellularContext *QUECTEL_UG96::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) { + return new QUECTEL_UG96_CellularContext(at, this, apn, cp_req, nonip_req); } -AT_CellularNetwork *QUECTEL_UG96::open_network_impl(ATHandler &at) +#if MBED_CONF_QUECTEL_UG96_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() { - return new QUECTEL_UG96_CellularNetwork(at); + static UARTSerial serial(MBED_CONF_QUECTEL_UG96_TX, MBED_CONF_QUECTEL_UG96_RX, MBED_CONF_QUECTEL_UG96_BAUDRATE); +#if defined (MBED_CONF_QUECTEL_UG96_RTS) && defined (MBED_CONF_QUECTEL_UG96_CTS) + tr_debug("QUECTEL_UG96 flow control: RTS %d CTS %d", MBED_CONF_QUECTEL_UG96_RTS, MBED_CONF_QUECTEL_UG96_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_QUECTEL_UG96_RTS, MBED_CONF_QUECTEL_UG96_CTS); +#endif + static QUECTEL_UG96 device(&serial); + return &device; } +#endif -AT_CellularPower *QUECTEL_UG96::open_power_impl(ATHandler &at) -{ - return new QUECTEL_UG96_CellularPower(at); -} - -AT_CellularContext *QUECTEL_UG96::create_context_impl(ATHandler &at, const char *apn) -{ - return new QUECTEL_UG96_CellularContext(at, this, apn); -} diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.h b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.h index 84ad9a2bfa2..fbd47a6e348 100644 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.h +++ b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.h @@ -18,6 +18,15 @@ #ifndef QUECTEL_UG96_H_ #define QUECTEL_UG96_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_QUECTEL_UG96_TX +#define MBED_CONF_QUECTEL_UG96_TX D1 +#endif +#ifndef MBED_CONF_QUECTEL_UG96_RX +#define MBED_CONF_QUECTEL_UG96_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" namespace mbed { @@ -33,16 +42,12 @@ namespace mbed { class QUECTEL_UG96 : public AT_CellularDevice { public: QUECTEL_UG96(FileHandle *fh); - virtual ~QUECTEL_UG96(); protected: // AT_CellularDevice - virtual AT_CellularNetwork *open_network_impl(ATHandler &at); - virtual AT_CellularPower *open_power_impl(ATHandler &at); - virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); + virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false); public: // NetworkInterface void handle_urc(FileHandle *fh); - }; } // namespace mbed diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularContext.cpp b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularContext.cpp index 9f65d78f9ab..7c61b6b25b6 100644 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularContext.cpp @@ -18,8 +18,8 @@ namespace mbed { -QUECTEL_UG96_CellularContext::QUECTEL_UG96_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularContext(at, device, apn) +QUECTEL_UG96_CellularContext::QUECTEL_UG96_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : + AT_CellularContext(at, device, apn, cp_req, nonip_req) { } @@ -27,11 +27,6 @@ QUECTEL_UG96_CellularContext::~QUECTEL_UG96_CellularContext() { } -bool QUECTEL_UG96_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) -{ - return stack_type == IPV4_STACK ? true : false; -} - nsapi_error_t QUECTEL_UG96_CellularContext::do_user_authentication() { if (_pwd && _uname) { diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularContext.h b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularContext.h index 0ec4232071f..1310fef4da0 100644 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularContext.h +++ b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularContext.h @@ -23,11 +23,10 @@ namespace mbed { class QUECTEL_UG96_CellularContext: public AT_CellularContext { public: - QUECTEL_UG96_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); + QUECTEL_UG96_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req = false, bool nonip_req = false); virtual ~QUECTEL_UG96_CellularContext(); protected: - virtual bool stack_type_supported(nsapi_ip_stack_t stack_type); virtual nsapi_error_t do_user_authentication(); }; diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularNetwork.cpp b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularNetwork.cpp deleted file mode 100644 index 08e7e2fc6de..00000000000 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularNetwork.cpp +++ /dev/null @@ -1,39 +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 "QUECTEL_UG96_CellularNetwork.h" - -using namespace mbed; - -QUECTEL_UG96_CellularNetwork::QUECTEL_UG96_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) -{ -} - -QUECTEL_UG96_CellularNetwork::~QUECTEL_UG96_CellularNetwork() -{ -} - -AT_CellularNetwork::RegistrationMode QUECTEL_UG96_CellularNetwork::has_registration(RegistrationType reg_type) -{ - return (reg_type == C_REG || reg_type == C_GREG) ? RegistrationModeLAC : RegistrationModeDisable; -} - -nsapi_error_t QUECTEL_UG96_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opRat) -{ - _op_act = RAT_UNKNOWN; - return NSAPI_ERROR_UNSUPPORTED; -} diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularNetwork.h b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularNetwork.h deleted file mode 100644 index e9708f3f49d..00000000000 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularNetwork.h +++ /dev/null @@ -1,37 +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. - */ - -#ifndef QUECTEL_UG96_CELLULAR_NETWORK_H_ -#define QUECTEL_UG96_CELLULAR_NETWORK_H_ - -#include "AT_CellularNetwork.h" - -namespace mbed { - -class QUECTEL_UG96_CellularNetwork : public AT_CellularNetwork { -public: - QUECTEL_UG96_CellularNetwork(ATHandler &atHandler); - virtual ~QUECTEL_UG96_CellularNetwork(); - -protected: - virtual RegistrationMode has_registration(RegistrationType rat); - virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology opRat); -}; - -} // namespace mbed - -#endif // QUECTEL_UG96_CELLULAR_NETWORK_H_ diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularPower.cpp b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularPower.cpp deleted file mode 100644 index a7b754cd3c8..00000000000 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularPower.cpp +++ /dev/null @@ -1,49 +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 "QUECTEL_UG96_CellularPower.h" - -#include "onboard_modem_api.h" - -using namespace mbed; - -QUECTEL_UG96_CellularPower::QUECTEL_UG96_CellularPower(ATHandler &atHandler) : AT_CellularPower(atHandler) -{ - -} - -QUECTEL_UG96_CellularPower::~QUECTEL_UG96_CellularPower() -{ - -} - -nsapi_error_t QUECTEL_UG96_CellularPower::on() -{ -#if MODEM_ON_BOARD - ::onboard_modem_init(); - ::onboard_modem_power_up(); -#endif - return NSAPI_ERROR_OK; -} - -nsapi_error_t QUECTEL_UG96_CellularPower::off() -{ -#if MODEM_ON_BOARD - ::onboard_modem_power_down(); -#endif - return NSAPI_ERROR_OK; -} diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularPower.h b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularPower.h deleted file mode 100644 index f28943c97df..00000000000 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96_CellularPower.h +++ /dev/null @@ -1,39 +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. - */ - -#ifndef QUECTEL_UG96_CELLULARPOWER_H_ -#define QUECTEL_UG96_CELLULARPOWER_H_ - -#include "AT_CellularPower.h" - -namespace mbed { - -class QUECTEL_UG96_CellularPower : public AT_CellularPower { -public: - QUECTEL_UG96_CellularPower(ATHandler &atHandler); - virtual ~QUECTEL_UG96_CellularPower(); - -public: //from CellularPower - - virtual nsapi_error_t on(); - - virtual nsapi_error_t off(); -}; - -} // namespace mbed - -#endif // QUECTEL_UG96_CELLULARPOWER_H_ diff --git a/features/cellular/framework/targets/QUECTEL/UG96/mbed_lib.json b/features/cellular/framework/targets/QUECTEL/UG96/mbed_lib.json new file mode 100644 index 00000000000..143d761a914 --- /dev/null +++ b/features/cellular/framework/targets/QUECTEL/UG96/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "QUECTEL_UG96", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.cpp b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.cpp index d3feca74d3d..cd25409d82b 100644 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.cpp +++ b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.cpp @@ -16,45 +16,56 @@ */ #include "TELIT_HE910.h" -#include "TELIT_HE910_CellularPower.h" -#include "TELIT_HE910_CellularNetwork.h" -#include "TELIT_HE910_CellularContext.h" +#include "AT_CellularNetwork.h" using namespace mbed; using namespace events; -static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, // HE910/UE910/UL865/UE866 AT Commands Reference Guide Rev. 11-2006-10-14 - AT_CellularBase::AT_CGAUTH, // HE910/UE910/UL865/UE866 AT Commands Reference Guide Rev. 11-2006-10-14 - AT_CellularBase::SUPPORTED_FEATURE_END_MARK +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 0, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; TELIT_HE910::TELIT_HE910(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_unsupported_features(unsupported_features); + AT_CellularBase::set_cellular_properties(cellular_properties); } -TELIT_HE910::~TELIT_HE910() -{ -} - -AT_CellularNetwork *TELIT_HE910::open_network_impl(ATHandler &at) +uint16_t TELIT_HE910::get_send_delay() const { - return new TELIT_HE910_CellularNetwork(at); + return DEFAULT_DELAY_BETWEEN_AT_COMMANDS; } -AT_CellularPower *TELIT_HE910::open_power_impl(ATHandler &at) +nsapi_error_t TELIT_HE910::init() { - return new TELIT_HE910_CellularPower(at); -} + nsapi_error_t err = AT_CellularDevice::init(); + if (err != NSAPI_ERROR_OK) { + return err; + } + _at->lock(); + _at->cmd_start("AT&K0;&C1;&D0"); + _at->cmd_stop_read_resp(); -AT_CellularContext *TELIT_HE910::create_context_impl(ATHandler &at, const char *apn) -{ - return new TELIT_HE910_CellularContext(at, this, apn); + return _at->unlock_return_error(); } -uint16_t TELIT_HE910::get_send_delay() const +#if MBED_CONF_TELIT_HE910_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() { - return DEFAULT_DELAY_BETWEEN_AT_COMMANDS; + static UARTSerial serial(MBED_CONF_TELIT_HE910_TX, MBED_CONF_TELIT_HE910_RX, MBED_CONF_TELIT_HE910_BAUDRATE); +#if defined (MBED_CONF_TELIT_HE910_RTS) && defined (MBED_CONF_TELIT_HE910_CTS) + tr_debug("TELIT_HE910 flow control: RTS %d CTS %d", MBED_CONF_TELIT_HE910_RTS, MBED_CONF_TELIT_HE910_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_TELIT_HE910_RTS, MBED_CONF_TELIT_HE910_CTS); +#endif + static TELIT_HE910 device(&serial); + return &device; } - +#endif diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.h b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.h index b09f525608d..4f34637a426 100644 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.h +++ b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.h @@ -18,6 +18,15 @@ #ifndef CELLULAR_TARGETS_TELIT_HE910_TELIT_HE910_H_ #define CELLULAR_TARGETS_TELIT_HE910_TELIT_HE910_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_TELIT_HE910_TX +#define MBED_CONF_TELIT_HE910_TX D1 +#endif +#ifndef MBED_CONF_TELIT_HE910_RX +#define MBED_CONF_TELIT_HE910_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" //the delay between sending AT commands @@ -28,15 +37,10 @@ namespace mbed { class TELIT_HE910 : public AT_CellularDevice { public: TELIT_HE910(FileHandle *fh); - virtual ~TELIT_HE910(); protected: // AT_CellularDevice - virtual AT_CellularNetwork *open_network_impl(ATHandler &at); - virtual AT_CellularPower *open_power_impl(ATHandler &at); - virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); - -public: // from CellularDevice virtual uint16_t get_send_delay() const; + virtual nsapi_error_t init(); }; } // namespace mbed #endif /* CELLULAR_TARGETS_TELIT_HE910_TELIT_HE910_H_ */ diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularContext.cpp b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularContext.cpp deleted file mode 100644 index b9ec13eb060..00000000000 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularContext.cpp +++ /dev/null @@ -1,35 +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 "TELIT_HE910_CellularContext.h" - -namespace mbed { - -TELIT_HE910_CellularContext::TELIT_HE910_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularContext(at, device, apn) -{ -} - -TELIT_HE910_CellularContext::~TELIT_HE910_CellularContext() -{ -} - -bool TELIT_HE910_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) -{ - return stack_type == IPV4_STACK ? true : false; -} - -} /* namespace mbed */ diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularContext.h b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularContext.h deleted file mode 100644 index 774fada8c93..00000000000 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularContext.h +++ /dev/null @@ -1,35 +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. - */ -#ifndef TELIT_HE910_CELLULARCONTEXT_H_ -#define TELIT_HE910_CELLULARCONTEXT_H_ - -#include "AT_CellularContext.h" - -namespace mbed { - -class TELIT_HE910_CellularContext: public AT_CellularContext { -public: - TELIT_HE910_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); - virtual ~TELIT_HE910_CellularContext(); - -protected: - virtual bool stack_type_supported(nsapi_ip_stack_t stack_type); -}; - -} /* namespace mbed */ - -#endif // TELIT_HE910_CELLULARCONTEXT_H_ diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularNetwork.cpp b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularNetwork.cpp deleted file mode 100644 index 5957d26b596..00000000000 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularNetwork.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2017, 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 "TELIT_HE910_CellularNetwork.h" - -using namespace mbed; - -TELIT_HE910_CellularNetwork::TELIT_HE910_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) -{ -} - -TELIT_HE910_CellularNetwork::~TELIT_HE910_CellularNetwork() -{ -} - -AT_CellularNetwork::RegistrationMode TELIT_HE910_CellularNetwork::has_registration(RegistrationType reg_type) -{ - return (reg_type == C_REG || reg_type == C_GREG) ? RegistrationModeLAC : RegistrationModeDisable; -} - -nsapi_error_t TELIT_HE910_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opRat) -{ - _op_act = RAT_UNKNOWN; - return NSAPI_ERROR_UNSUPPORTED; -} diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularNetwork.h b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularNetwork.h deleted file mode 100644 index 6cdbba7cd30..00000000000 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularNetwork.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2017, 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 TELIT_HE910_CELLULAR_NETWORK_H_ -#define TELIT_HE910_CELLULAR_NETWORK_H_ - -#include "AT_CellularNetwork.h" - -namespace mbed { - -class TELIT_HE910_CellularNetwork : public AT_CellularNetwork { -public: - TELIT_HE910_CellularNetwork(ATHandler &atHandler); - virtual ~TELIT_HE910_CellularNetwork(); - -protected: - virtual RegistrationMode has_registration(RegistrationType rat); - virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology opRat); -}; - -} // namespace mbed - -#endif // TELIT_HE910_CELLULAR_NETWORK_H_ diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularPower.cpp b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularPower.cpp deleted file mode 100644 index 68a397743d1..00000000000 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularPower.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2017, 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 "TELIT_HE910_CellularPower.h" -// for modem powering up&down -#include "onboard_modem_api.h" - -using namespace mbed; - -TELIT_HE910_CellularPower::TELIT_HE910_CellularPower(ATHandler &atHandler) : AT_CellularPower(atHandler) -{ - -} - -TELIT_HE910_CellularPower::~TELIT_HE910_CellularPower() -{ - -} - -nsapi_error_t TELIT_HE910_CellularPower::on() -{ -#if MODEM_ON_BOARD - ::onboard_modem_init(); - ::onboard_modem_power_up(); -#endif - return NSAPI_ERROR_OK; -} - -nsapi_error_t TELIT_HE910_CellularPower::off() -{ -#if MODEM_ON_BOARD - ::onboard_modem_power_down(); -#endif - return NSAPI_ERROR_OK; -} - -/** - * Set AT command mode. - * @remark must be called after power on to prepare correct AT mode - * @return blocking until success or failure - */ -nsapi_error_t TELIT_HE910_CellularPower::set_at_mode() -{ - nsapi_error_t err = AT_CellularPower::set_at_mode(); - if (err != NSAPI_ERROR_OK) { - return err; - } - _at.lock(); - _at.cmd_start("AT&K0;&C1;&D0"); - _at.cmd_stop_read_resp(); - - return _at.unlock_return_error(); -} diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularPower.h b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularPower.h deleted file mode 100644 index e60f1620cec..00000000000 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910_CellularPower.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2017, 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 TELIT_HE910_CELLULAR_POWER_H_ -#define TELIT_HE910_CELLULAR_POWER_H_ - -#include "AT_CellularPower.h" - -namespace mbed { - -class TELIT_HE910_CellularPower : public AT_CellularPower { -public: - TELIT_HE910_CellularPower(ATHandler &atHandler); - virtual ~TELIT_HE910_CellularPower(); - -public: //from CellularPower - - virtual nsapi_error_t on(); - - virtual nsapi_error_t off(); - - virtual nsapi_error_t set_at_mode(); -}; - -} // namespace mbed - -#endif // TELIT_HE910_CELLULAR_POWER_H_ diff --git a/features/cellular/framework/targets/TELIT/HE910/mbed_lib.json b/features/cellular/framework/targets/TELIT/HE910/mbed_lib.json new file mode 100644 index 00000000000..f5c8498ef27 --- /dev/null +++ b/features/cellular/framework/targets/TELIT/HE910/mbed_lib.json @@ -0,0 +1,30 @@ +{ + "name": "TELIT_HE910", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} + diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp index 5532b45b938..b4bb6cbfb3d 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp @@ -17,28 +17,40 @@ #include "UBLOX_AT.h" #include "UBLOX_AT_CellularNetwork.h" -#include "UBLOX_AT_CellularPower.h" #include "UBLOX_AT_CellularContext.h" using namespace mbed; using namespace events; #ifdef TARGET_UBLOX_C030_R41XM -static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH, + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK +}; +#else +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 1, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; #endif UBLOX_AT::UBLOX_AT(FileHandle *fh) : AT_CellularDevice(fh) { -#ifdef TARGET_UBLOX_C030_R41XM - AT_CellularBase::set_unsupported_features(unsupported_features); -#endif -} - -UBLOX_AT::~UBLOX_AT() -{ + AT_CellularBase::set_cellular_properties(cellular_properties); } AT_CellularNetwork *UBLOX_AT::open_network_impl(ATHandler &at) @@ -46,12 +58,22 @@ AT_CellularNetwork *UBLOX_AT::open_network_impl(ATHandler &at) return new UBLOX_AT_CellularNetwork(at); } -AT_CellularPower *UBLOX_AT::open_power_impl(ATHandler &at) +AT_CellularContext *UBLOX_AT::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) { - return new UBLOX_AT_CellularPower(at); + return new UBLOX_AT_CellularContext(at, this, apn, cp_req, nonip_req); } -AT_CellularContext *UBLOX_AT::create_context_impl(ATHandler &at, const char *apn) +#if MBED_CONF_UBLOX_AT_PROVIDE_DEFAULT +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() { - return new UBLOX_AT_CellularContext(at, this, apn); + static UARTSerial serial(MBED_CONF_UBLOX_AT_TX, MBED_CONF_UBLOX_AT_RX, MBED_CONF_UBLOX_AT_BAUDRATE); +#if defined (MBED_CONF_UBLOX_AT_RTS) && defined(MBED_CONF_UBLOX_AT_CTS) + tr_debug("UBLOX_AT flow control: RTS %d CTS %d", MBED_CONF_UBLOX_AT_RTS, MBED_CONF_UBLOX_AT_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_UBLOX_AT_RTS, MBED_CONF_UBLOX_AT_CTS); +#endif + static UBLOX_AT device(&serial); + return &device; } +#endif + diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.h b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.h index 1ee455a8a83..01950cb482d 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.h +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.h @@ -18,6 +18,15 @@ #ifndef UBLOX_AT_H_ #define UBLOX_AT_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_UBLOX_AT_TX +#define MBED_CONF_UBLOX_AT_TX D1 +#endif +#ifndef MBED_CONF_UBLOX_AT_RX +#define MBED_CONF_UBLOX_AT_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" namespace mbed { @@ -25,12 +34,10 @@ namespace mbed { class UBLOX_AT : public AT_CellularDevice { public: UBLOX_AT(FileHandle *fh); - virtual ~UBLOX_AT(); protected: // AT_CellularDevice virtual AT_CellularNetwork *open_network_impl(ATHandler &at); - virtual AT_CellularPower *open_power_impl(ATHandler &at); - virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); + virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false); public: // NetworkInterface void handle_urc(FileHandle *fh); }; 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 c06cf6d119c..214b9ebe72a 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp @@ -17,11 +17,12 @@ #include "UBLOX_AT_CellularContext.h" #include "UBLOX_AT_CellularStack.h" #include "APN_db.h" +#include "CellularLog.h" namespace mbed { -UBLOX_AT_CellularContext::UBLOX_AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularContext(at, device, apn) +UBLOX_AT_CellularContext::UBLOX_AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : + AT_CellularContext(at, device, apn, cp_req, nonip_req) { // The authentication to use _auth = NSAPI_SECURITY_UNKNOWN; @@ -33,15 +34,15 @@ UBLOX_AT_CellularContext::~UBLOX_AT_CellularContext() NetworkStack *UBLOX_AT_CellularContext::get_stack() { + if (_pdp_type == NON_IP_PDP_TYPE || _cp_in_use) { + tr_error("Requesting stack for NON-IP context! Should request control plane netif: get_cp_netif()"); + return NULL; + } if (!_stack) { - _stack = new UBLOX_AT_CellularStack(_at, _cid, _ip_stack_type); + _stack = new UBLOX_AT_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); } - return _stack; -} -bool UBLOX_AT_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) -{ - return stack_type == IPV4_STACK ? true : false; + return _stack; } void UBLOX_AT_CellularContext::do_connect() @@ -67,7 +68,7 @@ void UBLOX_AT_CellularContext::do_connect() _at.unlock(); if (_status_cb) { - call_network_cb(_connect_status); + _status_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, _connect_status); } } diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.h b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.h index d6cd4731b1f..b330abead17 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.h +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.h @@ -23,7 +23,7 @@ namespace mbed { class UBLOX_AT_CellularContext: public AT_CellularContext { public: - UBLOX_AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); + UBLOX_AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req = false, bool nonip_req = false); virtual ~UBLOX_AT_CellularContext(); virtual void do_connect(); @@ -31,7 +31,6 @@ class UBLOX_AT_CellularContext: public AT_CellularContext { protected: virtual NetworkStack *get_stack(); - virtual bool stack_type_supported(nsapi_ip_stack_t stack_type); private: 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 1491deee604..c0b1324226b 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp @@ -31,13 +31,10 @@ UBLOX_AT_CellularNetwork::~UBLOX_AT_CellularNetwork() } } -AT_CellularNetwork::RegistrationMode UBLOX_AT_CellularNetwork::has_registration(RegistrationType reg_type) -{ - return (reg_type == C_REG || reg_type == C_GREG) ? RegistrationModeLAC : RegistrationModeDisable; -} - 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: @@ -63,9 +60,9 @@ nsapi_error_t UBLOX_AT_CellularNetwork::set_access_technology_impl(RadioAccessTe #endif default: { _op_act = RAT_UNKNOWN; - return NSAPI_ERROR_UNSUPPORTED; + ret = NSAPI_ERROR_UNSUPPORTED; } } - return NSAPI_ERROR_OK; + return(ret); } diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.h b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.h index ac9ba299f62..b1f49d376c5 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.h +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.h @@ -29,7 +29,6 @@ class UBLOX_AT_CellularNetwork : public AT_CellularNetwork { protected: virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology opRat); - virtual RegistrationMode has_registration(RegistrationType rat); }; } // namespace mbed diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularPower.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularPower.cpp deleted file mode 100644 index aaec18f084e..00000000000 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularPower.cpp +++ /dev/null @@ -1,47 +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 "UBLOX_AT_CellularPower.h" - -#include "onboard_modem_api.h" - -using namespace mbed; - -UBLOX_AT_CellularPower::UBLOX_AT_CellularPower(ATHandler &atHandler) : AT_CellularPower(atHandler) -{ -} - -UBLOX_AT_CellularPower::~UBLOX_AT_CellularPower() -{ -} - -nsapi_error_t UBLOX_AT_CellularPower::on() -{ -#if MODEM_ON_BOARD - ::onboard_modem_init(); - ::onboard_modem_power_up(); -#endif - return NSAPI_ERROR_OK; -} - -nsapi_error_t UBLOX_AT_CellularPower::off() -{ -#if MODEM_ON_BOARD - ::onboard_modem_power_down(); -#endif - return NSAPI_ERROR_OK; -} diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularPower.h b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularPower.h deleted file mode 100644 index b3218225066..00000000000 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularPower.h +++ /dev/null @@ -1,39 +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. - */ - -#ifndef UBLOX_AT_CELLULARPOWER_H_ -#define UBLOX_AT_CELLULARPOWER_H_ - -#include "AT_CellularPower.h" - -namespace mbed { - -class UBLOX_AT_CellularPower : public AT_CellularPower { -public: - UBLOX_AT_CellularPower(ATHandler &atHandler); - virtual ~UBLOX_AT_CellularPower(); - -public: //from CellularPower - - virtual nsapi_error_t on(); - - virtual nsapi_error_t off(); -}; - -} // namespace mbed - -#endif // UBLOX_AT_CELLULARPOWER_H_ diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp index 33e92ca4110..60cea8a5ebd 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp @@ -468,7 +468,7 @@ const char *UBLOX_AT_CellularStack::get_ip_address() return _ip; } -nsapi_error_t UBLOX_AT_CellularStack::gethostbyname(const char *host, SocketAddress *address, nsapi_version_t version) +nsapi_error_t UBLOX_AT_CellularStack::gethostbyname(const char *host, SocketAddress *address, nsapi_version_t version, const char *interface_name) { char ipAddress[NSAPI_IP_SIZE]; nsapi_error_t err = NSAPI_ERROR_NO_CONNECTION; diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h index ef08660008f..3638559670d 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h @@ -33,7 +33,7 @@ class UBLOX_AT_CellularStack : public AT_CellularStack { virtual const char *get_ip_address(); virtual nsapi_error_t gethostbyname(const char *host, - SocketAddress *address, nsapi_version_t version = NSAPI_UNSPEC); + SocketAddress *address, nsapi_version_t version = NSAPI_UNSPEC, const char *interface_name = NULL); protected: virtual nsapi_error_t socket_listen(nsapi_socket_t handle, int backlog); diff --git a/features/cellular/framework/targets/UBLOX/AT/mbed_lib.json b/features/cellular/framework/targets/UBLOX/AT/mbed_lib.json new file mode 100644 index 00000000000..4db0d2f28e5 --- /dev/null +++ b/features/cellular/framework/targets/UBLOX/AT/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "UBLOX_AT", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.cpp b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.cpp index d71c80d63b1..0acc86b7c5b 100644 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.cpp +++ b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.cpp @@ -16,42 +16,57 @@ */ #include "UBLOX_PPP.h" -#include "UBLOX_PPP_CellularNetwork.h" -#include "UBLOX_PPP_CellularPower.h" -#include "UBLOX_PPP_CellularContext.h" +#include "AT_CellularNetwork.h" using namespace mbed; using namespace events; #ifdef TARGET_UBLOX_C027 -static const AT_CellularBase::SupportedFeature unsupported_features[] = { - AT_CellularBase::AT_CGSN_WITH_TYPE, - AT_CellularBase::SUPPORTED_FEATURE_END_MARK +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 0, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK +}; +#else +static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + AT_CellularNetwork::RegistrationModeDisable,// C_EREG + AT_CellularNetwork::RegistrationModeLAC, // C_GREG + AT_CellularNetwork::RegistrationModeLAC, // C_REG + 1, // AT_CGSN_WITH_TYPE + 1, // AT_CGDATA + 1, // AT_CGAUTH + 1, // PROPERTY_IPV4_STACK + 0, // PROPERTY_IPV6_STACK + 0, // PROPERTY_IPV4V6_STACK }; #endif UBLOX_PPP::UBLOX_PPP(FileHandle *fh) : AT_CellularDevice(fh) { -#ifdef TARGET_UBLOX_C027 - AT_CellularBase::set_unsupported_features(unsupported_features); -#endif + AT_CellularBase::set_cellular_properties(cellular_properties); } -UBLOX_PPP::~UBLOX_PPP() -{ -} +#if MBED_CONF_UBLOX_PPP_PROVIDE_DEFAULT -AT_CellularNetwork *UBLOX_PPP::open_network_impl(ATHandler &at) -{ - return new UBLOX_PPP_CellularNetwork(at); -} - -AT_CellularPower *UBLOX_PPP::open_power_impl(ATHandler &at) -{ - return new UBLOX_PPP_CellularPower(at); -} +#if !NSAPI_PPP_AVAILABLE +#error Must define lwip.ppp-enabled +#endif -AT_CellularContext *UBLOX_PPP::create_context_impl(ATHandler &at, const char *apn) +#include "UARTSerial.h" +CellularDevice *CellularDevice::get_default_instance() { - return new UBLOX_PPP_CellularContext(at, this, apn); + static UARTSerial serial(MBED_CONF_UBLOX_PPP_TX, MBED_CONF_UBLOX_PPP_RX, MBED_CONF_UBLOX_PPP_BAUDRATE); +#if defined (MBED_CONF_UBLOX_AT_RTS) && defined(MBED_CONF_UBLOX_AT_CTS) + tr_debug("UBLOX_PPP flow control: RTS %d CTS %d", MBED_CONF_UBLOX_PPP_RTS, MBED_CONF_UBLOX_PPP_CTS); + serial.set_flow_control(SerialBase::RTSCTS, MBED_CONF_UBLOX_PPP_RTS, MBED_CONF_UBLOX_PPP_CTS); +#endif + static UBLOX_PPP device(&serial); + return &device; } +#endif diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.h b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.h index 33f8ace12bb..882d3066ab0 100644 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.h +++ b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.h @@ -18,6 +18,15 @@ #ifndef UBLOX_PPP_H_ #define UBLOX_PPP_H_ +#ifdef TARGET_FF_ARDUINO +#ifndef MBED_CONF_UBLOX_PPP_TX +#define MBED_CONF_UBLOX_PPP_TX D1 +#endif +#ifndef MBED_CONF_UBLOX_PPP_RX +#define MBED_CONF_UBLOX_PPP_RX D0 +#endif +#endif /* TARGET_FF_ARDUINO */ + #include "AT_CellularDevice.h" namespace mbed { @@ -25,12 +34,6 @@ namespace mbed { class UBLOX_PPP : public AT_CellularDevice { public: UBLOX_PPP(FileHandle *fh); - virtual ~UBLOX_PPP(); - -protected: // AT_CellularDevice - virtual AT_CellularNetwork *open_network_impl(ATHandler &at); - virtual AT_CellularPower *open_power_impl(ATHandler &at); - virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn); }; } // namespace mbed diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularContext.cpp b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularContext.cpp deleted file mode 100644 index d360df7dfc5..00000000000 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularContext.cpp +++ /dev/null @@ -1,35 +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 "UBLOX_PPP_CellularContext.h" - -namespace mbed { - -UBLOX_PPP_CellularContext::UBLOX_PPP_CellularContext(ATHandler &at, CellularDevice *device, const char *apn) : - AT_CellularContext(at, device, apn) -{ -} - -UBLOX_PPP_CellularContext::~UBLOX_PPP_CellularContext() -{ -} - -bool UBLOX_PPP_CellularContext::stack_type_supported(nsapi_ip_stack_t stack_type) -{ - return stack_type == IPV4_STACK ? true : false; -} - -} /* namespace mbed */ diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularContext.h b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularContext.h deleted file mode 100644 index 37ac1bb8ee3..00000000000 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularContext.h +++ /dev/null @@ -1,35 +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. - */ -#ifndef UBLOX_PPP_CELLULARCONTEXT_H_ -#define UBLOX_PPP_CELLULARCONTEXT_H_ - -#include "AT_CellularContext.h" - -namespace mbed { - -class UBLOX_PPP_CellularContext: public AT_CellularContext { -public: - UBLOX_PPP_CellularContext(ATHandler &at, CellularDevice *device, const char *apn); - virtual ~UBLOX_PPP_CellularContext(); - -protected: - virtual bool stack_type_supported(nsapi_ip_stack_t stack_type); -}; - -} /* namespace mbed */ - -#endif // UBLOX_PPP_CELLULARCONTEXT_H_ diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularNetwork.cpp b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularNetwork.cpp deleted file mode 100644 index 9ada418ae36..00000000000 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularNetwork.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2017, 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 "UBLOX_PPP_CellularNetwork.h" - -using namespace mbed; - -UBLOX_PPP_CellularNetwork::UBLOX_PPP_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) -{ -} - -UBLOX_PPP_CellularNetwork::~UBLOX_PPP_CellularNetwork() -{ -} - -AT_CellularNetwork::RegistrationMode UBLOX_PPP_CellularNetwork::has_registration(RegistrationType reg_type) -{ - return (reg_type == C_REG || reg_type == C_GREG) ? RegistrationModeLAC : RegistrationModeDisable; -} - -nsapi_error_t UBLOX_PPP_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opRat) -{ - _op_act = RAT_UNKNOWN; - return NSAPI_ERROR_UNSUPPORTED; -} diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularNetwork.h b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularNetwork.h deleted file mode 100644 index 89ea42efad0..00000000000 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularNetwork.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2017, 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 UBLOX_PPP_CELLULAR_NETWORK_H_ -#define UBLOX_PPP_CELLULAR_NETWORK_H_ - -#include "AT_CellularNetwork.h" - -namespace mbed { - -class UBLOX_PPP_CellularNetwork : public AT_CellularNetwork { -public: - UBLOX_PPP_CellularNetwork(ATHandler &atHandler); - virtual ~UBLOX_PPP_CellularNetwork(); - -protected: - virtual RegistrationMode has_registration(RegistrationType rat); - virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology opRat); -}; - -} // namespace mbed - -#endif // UBLOX_PPP_CELLULAR_NETWORK_H_ diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularPower.cpp b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularPower.cpp deleted file mode 100644 index 8cb78aab2fe..00000000000 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularPower.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2017, 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 "UBLOX_PPP_CellularPower.h" - -#include "onboard_modem_api.h" - -using namespace mbed; - -UBLOX_PPP_CellularPower::UBLOX_PPP_CellularPower(ATHandler &atHandler) : AT_CellularPower(atHandler) -{ - -} - -UBLOX_PPP_CellularPower::~UBLOX_PPP_CellularPower() -{ - -} - -nsapi_error_t UBLOX_PPP_CellularPower::on() -{ -#if MODEM_ON_BOARD - ::onboard_modem_init(); - ::onboard_modem_power_up(); -#endif - return NSAPI_ERROR_OK; -} - -nsapi_error_t UBLOX_PPP_CellularPower::off() -{ -#if MODEM_ON_BOARD - ::onboard_modem_power_down(); -#endif - return NSAPI_ERROR_OK; -} diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularPower.h b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularPower.h deleted file mode 100644 index c9d701ca64f..00000000000 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP_CellularPower.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2017, 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 UBLOX_PPP_CELLULARPOWER_H_ -#define UBLOX_PPP_CELLULARPOWER_H_ - -#include "AT_CellularPower.h" - -namespace mbed { - -class UBLOX_PPP_CellularPower : public AT_CellularPower { -public: - UBLOX_PPP_CellularPower(ATHandler &atHandler); - virtual ~UBLOX_PPP_CellularPower(); - -public: //from CellularPower - - virtual nsapi_error_t on(); - - virtual nsapi_error_t off(); -}; - -} // namespace mbed - -#endif // UBLOX_PPP_CELLULARPOWER_H_ diff --git a/features/cellular/framework/targets/UBLOX/PPP/mbed_lib.json b/features/cellular/framework/targets/UBLOX/PPP/mbed_lib.json new file mode 100644 index 00000000000..7c8bae14386 --- /dev/null +++ b/features/cellular/framework/targets/UBLOX/PPP/mbed_lib.json @@ -0,0 +1,29 @@ +{ + "name": "UBLOX_PPP", + "config": { + "tx": { + "help": "TX pin for serial connection. D1 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rx": { + "help": "RX pin for serial connection. D0 assumed if Arduino Form Factor, needs to be set/overwritten otherwise.", + "value": null + }, + "rts": { + "help": "RTS pin for serial connection", + "value": null + }, + "cts": { + "help": "CTS pin for serial connection", + "value": null + }, + "baudrate" : { + "help": "Serial connection baud rate", + "value": 115200 + }, + "provide-default": { + "help": "Provide as default CellularDevice [true/false]", + "value": false + } + } +} diff --git a/features/cellular/mbed_lib.json b/features/cellular/mbed_lib.json index cc41f2dbe49..669521b1a2f 100644 --- a/features/cellular/mbed_lib.json +++ b/features/cellular/mbed_lib.json @@ -16,6 +16,10 @@ "radio-access-technology": { "help": "Radio access technology to use. Value in integer: GSM=0, GSM_COMPACT=1, UTRAN=2, EGPRS=3, HSDPA=4, HSUPA=5, HSDPA_HSUPA=6, E_UTRAN=7, CATM1=8 ,NB1=9", "value": null + }, + "control-plane-opt": { + "help": "Enables control plane CIoT EPS optimization", + "value": false } } } diff --git a/features/device_key/source/DeviceKey.cpp b/features/device_key/source/DeviceKey.cpp index 3d9b8dac07b..f49ca44e5ee 100644 --- a/features/device_key/source/DeviceKey.cpp +++ b/features/device_key/source/DeviceKey.cpp @@ -19,6 +19,7 @@ #if DEVICEKEY_ENABLED #include "mbedtls/config.h" #include "mbedtls/cmac.h" +#include "mbedtls/platform.h" #include "KVStore.h" #include "TDBStore.h" #include "KVMap.h" @@ -59,15 +60,25 @@ namespace mbed { DeviceKey::DeviceKey() { + int ret = kv_init_storage_config(); if (ret != MBED_SUCCESS) { tr_error("DeviceKey: Fail to initialize KvStore configuration."); } +#if defined(MBEDTLS_PLATFORM_C) + ret = mbedtls_platform_setup(NULL); + if (ret != MBED_SUCCESS) { + tr_error("DeviceKey: Fail in mbedtls_platform_setup."); + } +#endif /* MBEDTLS_PLATFORM_C */ return; } DeviceKey::~DeviceKey() { +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ return; } @@ -260,7 +271,7 @@ int DeviceKey::generate_key_by_random(uint32_t *output, size_t size) return DEVICEKEY_INVALID_PARAM; } -#if 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); @@ -276,6 +287,7 @@ int DeviceKey::generate_key_by_random(uint32_t *output, size_t size) mbedtls_entropy_free(entropy); delete entropy; + #endif return ret; diff --git a/features/frameworks/greentea-client/mbed_lib.json b/features/frameworks/greentea-client/mbed_lib.json new file mode 100644 index 00000000000..368181c1f29 --- /dev/null +++ b/features/frameworks/greentea-client/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "greentea-client" +} diff --git a/features/frameworks/mbed-client-cli/mbed_lib.json b/features/frameworks/mbed-client-cli/mbed_lib.json new file mode 100644 index 00000000000..d3a4054289a --- /dev/null +++ b/features/frameworks/mbed-client-cli/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "mbed-client-cli" +} diff --git a/features/frameworks/mbed-client-randlib/mbed_lib.json b/features/frameworks/mbed-client-randlib/mbed_lib.json new file mode 100644 index 00000000000..7859ff4a428 --- /dev/null +++ b/features/frameworks/mbed-client-randlib/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "mbed-client-randlib" +} 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 7da355071f9..4e0355bf700 100644 --- a/features/frameworks/mbed-coap/CHANGELOG.md +++ b/features/frameworks/mbed-coap/CHANGELOG.md @@ -1,5 +1,15 @@ # 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 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/mbed_lib.json b/features/frameworks/mbed-coap/mbed_lib.json new file mode 100644 index 00000000000..2fae9c9874d --- /dev/null +++ b/features/frameworks/mbed-coap/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "mbed-coap" +} 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 0a87eb3f1a1..773216bf290 100644 --- a/features/frameworks/mbed-coap/source/sn_coap_protocol.c +++ b/features/frameworks/mbed-coap/source/sn_coap_protocol.c @@ -738,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/nanostack-libservice/mbed-client-libservice/ns_list.h b/features/frameworks/nanostack-libservice/mbed-client-libservice/ns_list.h index 090cecefa58..0030d56dea6 100644 --- a/features/frameworks/nanostack-libservice/mbed-client-libservice/ns_list.h +++ b/features/frameworks/nanostack-libservice/mbed-client-libservice/ns_list.h @@ -96,6 +96,9 @@ typedef struct ns_list { * always assign returned entry pointers to a properly typed pointer variable. * This assignment will be then type-checked where the compiler supports it, and * will dereference correctly on compilers that don't support this extension. + * + * If you need to support C++03 compilers that cannot return properly-typed + * pointers, such as IAR 7, you need to use NS_LIST_TYPECOERCE to force the type. * ~~~ * NS_LIST_HEAD(example_entry_t, link) my_list; * @@ -199,6 +202,27 @@ union \ #define NS_LIST_TYPECAST_(list, val) (0 ? (list)->type : (val)) #endif +/** \brief Macro to force correct type if necessary. + * + * In C, doesn't matter if NS_LIST_TYPECAST_ works or not, as it's legal + * to assign void * to a pointer. In C++, we can't do that, so need + * a back-up plan for C++03. This forces the type, so breaks type-safety - + * only activate when needed, meaning we still get typechecks on other + * toolchains. + * + * If a straight assignment of a ns_list function to a pointer fails + * on a C++03 compiler, use the following construct. This will not be + * required with C++11 compilers. + * ~~~ + * type *elem = NS_LIST_TYPECOERCE(type *, ns_list_get_first(list)); + * ~~~ + */ +#if defined(NS_LIST_PTR_TYPE_) || !defined(__cplusplus) +#define NS_LIST_TYPECOERCE(type, val) (val) +#else +#define NS_LIST_TYPECOERCE(type, val) (type) (val) +#endif + /** \brief Internal macro to check types of input entry pointer. */ #define NS_LIST_TYPECHECK_(list, entry) \ (NS_PTR_MATCH_((list)->type, (entry), "incorrect entry type for list"), (entry)) @@ -480,7 +504,8 @@ typedef struct ns_list_link { * \param list `(const list_t *)` Pointer to list - evaluated multiple times. */ #define ns_list_foreach(type, e, list) \ - for (type *e = ns_list_get_first(list); e; e = ns_list_get_next(list, e)) + for (type *e = NS_LIST_TYPECOERCE(type *, ns_list_get_first(list)); \ + e; e = NS_LIST_TYPECOERCE(type *, ns_list_get_next(list, e))) /** \brief Iterate forwards over a list, where user may delete. * @@ -500,8 +525,8 @@ typedef struct ns_list_link { * \param list `(list_t *)` Pointer to list - evaluated multiple times. */ #define ns_list_foreach_safe(type, e, list) \ - for (type *e = ns_list_get_first(list), *_next##e; \ - e && (_next##e = ns_list_get_next(list, e), true); e = _next##e) + for (type *e = NS_LIST_TYPECOERCE(type *, ns_list_get_first(list)), *_next##e; \ + e && (_next##e = NS_LIST_TYPECOERCE(type *, ns_list_get_next(list, e)), true); e = _next##e) /** \brief Iterate backwards over a list. * @@ -509,7 +534,8 @@ typedef struct ns_list_link { * Iterating forwards is *slightly* more efficient. */ #define ns_list_foreach_reverse(type, e, list) \ - for (type *e = ns_list_get_last(list); e; e = ns_list_get_previous(list, e)) + for (type *e = NS_LIST_TYPECOERCE(type *, ns_list_get_last(list)); \ + e; e = NS_LIST_TYPECOERCE(type *, ns_list_get_previous(list, e))) /** \brief Iterate backwards over a list, where user may delete. * @@ -517,8 +543,8 @@ typedef struct ns_list_link { * Iterating forwards is *slightly* more efficient. */ #define ns_list_foreach_reverse_safe(type, e, list) \ - for (type *e = ns_list_get_last(list), *_next##e; \ - e && (_next##e = ns_list_get_previous(list, e), true); e = _next##e) + for (type *e = NS_LIST_TYPECOERCE(type *, ns_list_get_last(list)), *_next##e; \ + e && (_next##e = NS_LIST_TYPECOERCE(type *, ns_list_get_previous(list, e)), true); e = _next##e) /** \hideinitializer \brief Count entries on a list * diff --git a/features/frameworks/nanostack-libservice/mbed_lib.json b/features/frameworks/nanostack-libservice/mbed_lib.json new file mode 100644 index 00000000000..75957496a98 --- /dev/null +++ b/features/frameworks/nanostack-libservice/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "nanostack-libservice" +} diff --git a/features/frameworks/unity/mbed_lib.json b/features/frameworks/unity/mbed_lib.json new file mode 100644 index 00000000000..23575503e8a --- /dev/null +++ b/features/frameworks/unity/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "unity" +} diff --git a/features/lorawan/LoRaWANBase.h b/features/lorawan/LoRaWANBase.h index b4ce27bda45..5ab910d9786 100644 --- a/features/lorawan/LoRaWANBase.h +++ b/features/lorawan/LoRaWANBase.h @@ -15,487 +15,16 @@ * limitations under the License. */ +#ifndef LORAWANBASE_H_ +#define LORAWANBASE_H_ -#ifndef LORAWAN_BASE_H_ -#define LORAWAN_BASE_H_ - -#include "events/EventQueue.h" -#include "lorawan_types.h" - -class LoRaWANBase { - -public: - /** Initialize the LoRa stack. - * - * You must call this before using the LoRa stack. - * - * @param queue A pointer to EventQueue provided by the application. - * - * @return LORAWAN_STATUS_OK on success, a negative error code on failure: - * LORAWAN_STATUS_PARAMETER_INVALID is NULL queue is given. - */ - virtual lorawan_status_t initialize(events::EventQueue *queue) = 0; - - /** Connect OTAA or ABP using the Mbed OS config system - * - * Connect by Over The Air Activation or Activation By Personalization. - * You need to configure the connection properly using the Mbed OS configuration system. - * - * When connecting through OTAA, the return code for success (LORAWAN_STATUS_CONNECT_IN_PROGRESS) - * is negative. However, this is not a real error. It tells you that the connection is in progress, - * and an event will notify you of the completion. By default, after the Join Accept message is - * received, base stations may provide the node with a CF-List that replaces all user-configured - * channels except the Join/Default channels. A CF-List can configure a maximum of five channels - * other than the default channels. - * - * To configure more channels, we recommend that you use the `set_channel_plan()` API after the connection. - * By default, the PHY layers configure only the mandatory Join channels. The retransmission back-off - * restrictions on these channels are severe, and you may experience long delays or even failures - * in the confirmed traffic. If you add more channels, the aggregated duty cycle becomes much more - * relaxed as compared to the Join (default) channels only. - * - * **NOTES ON RECONNECTION:** - * Currently, the Mbed OS LoRaWAN implementation does not support non-volatile memory storage. - * Therefore, the state and frame counters cannot be restored after a power cycle. However, - * if you use the `disconnect()` API to shut down the LoRaWAN protocol, the state and frame - * counters are saved. Connecting again restores the previous session. According to the LoRaWAN - * 1.0.2 specification, the frame counters are always reset to 0 for OTAA, and a new Join request - * lets the network server know that the counters need a reset. The same is said about the ABP, - * but there is no way to convey this information to the network server. For a network server, - * an ABP device is always connected. That's why storing the frame counters is important for ABP. - * That's why we restore frame counters from session information after a disconnection. - * - * @return Common: LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_PARAMETER_INVALID if connection parameters are invalid. - * - * For ABP: If everything goes well, LORAWAN_STATUS_OK is returned for first call - * followed by a 'CONNECTED' event. Otherwise a negative error code is returned: - * Any subsequent call will return LORAWAN_STATUS_ALREADY_CONNECTED and no event follows. - * - * For OTAA: When a JoinRequest is sent, LORAWAN_STATUS_CONNECT_IN_PROGRESS is returned for - * the first call. Any subsequent call will return either LORAWAN_STATUS_BUSY - * (if the previous request for connection is still underway) or - * LORAWAN_STATUS_ALREADY_CONNECTED (if a network was already joined successfully). - * A 'CONNECTED' event is sent to the application when the JoinAccept is received. - */ - virtual lorawan_status_t connect() = 0; - - /** Connect OTAA or ABP with parameters - * - * All connection parameters are chosen by you and provided in the data structure passed down. - * - * When connecting using OTAA, the return code for success (LORAWAN_STATUS_CONNECT_IN_PROGRESS) - * is negative. However, this is not a real error. It tells you that connection is in progress, - * and an event will notify you of completion. By default, after Join Accept message is received, - * base stations may provide the node with a CF-List that replaces all user-configured channels - * except the Join/Default channels. A CF-List can configure a maximum of five channels other - * than the default channels. - * - * To configure more channels, we recommend that you use the `set_channel_plan()` API after - * the connection. By default, the PHY layers configure only the mandatory Join channels. - * The retransmission back-off restrictions on these channels are severe, and you may experience - * long delays or even failures in the confirmed traffic. If you add more channels, the aggregated - * duty cycle becomes much more relaxed as compared to the Join (default) channels only. - * - * **NOTES ON RECONNECTION:** - * Currently, the Mbed OS LoRaWAN implementation does not support non-volatile memory storage. - * Therefore, the state and frame counters cannot be restored after a power cycle. However, - * if you use the `disconnect()` API to shut down the LoRaWAN protocol, the state and frame - * counters are saved. Connecting again restores the previous session. According to the LoRaWAN - * 1.0.2 specification, the frame counters are always reset to zero for OTAA, and a new Join - * request lets the network server know that the counters need a reset. The same is said about - * the ABP, but there is no way to convey this information to the network server. For a network - * server, an ABP device is always connected. That's why storing the frame counters is important - * for ABP. That's why we restore frame counters from session information after a disconnection. - * - * @param connect Options for an end device connection to the gateway. - * - * @return Common: LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_PARAMETER_INVALID if connection parameters are invalid. - * - * For ABP: If everything goes well, LORAWAN_STATUS_OK is returned for first call followed - * by a 'CONNECTED' event. Otherwise a negative error code is returned. - * Any subsequent call will return LORAWAN_STATUS_ALREADY_CONNECTED and no event follows. - * - * For OTAA: When a JoinRequest is sent, LORAWAN_STATUS_CONNECT_IN_PROGRESS is returned for the - * first call. Any subsequent call will return either LORAWAN_STATUS_BUSY - * (if the previous request for connection is still underway) or LORAWAN_STATUS_ALREADY_CONNECTED - * (if a network was already joined successfully). - * A 'CONNECTED' event is sent to the application when the JoinAccept is received. - */ - virtual lorawan_status_t connect(const lorawan_connect_t &connect) = 0; - - /** Disconnect the current session. - * - * @return LORAWAN_STATUS_DEVICE_OFF on success, a negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - */ - virtual lorawan_status_t disconnect() = 0; - - /** Validate the connectivity with the network. - * - * Application may use this API to submit a request to the stack for validation of its connectivity - * to a Network Server. Under the hood, this API schedules a Link Check Request command (LinkCheckReq) - * for the network server and once the response, i.e., LinkCheckAns MAC command is received from - * the Network Server, user provided method is called. - * - * One way to use this API may be the validation of connectivity after a long deep sleep. - * Mbed LoRaWANStack follows the MAC commands with data frame payload, so the application needs - * to send something, and the Network Server may respond during the RX slots. - * - * This API is usable only when the application sets the 'link_check_resp' callback. - * See add_lora_app_callbacks API. If the above mentioned callback is not set, - * a LORAWAN_STATUS_PARAMETER_INVALID error is thrown. - * - * The first parameter to callback function is the demodulation margin, and the second parameter - * is the number of gateways that successfully received the last request. - * - * A 'Link Check Request' MAC command remains set for every subsequent transmission, until/unless - * the application explicitly turns it off using the remove_link_check_request() API. - * - * @return LORAWAN_STATUS_OK on successfully queuing a request, or - * a negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_PARAMETER_INVALID if link_check_resp callback method is not set. - * - */ - virtual lorawan_status_t add_link_check_request() = 0; - - /** Removes link check request sticky MAC command. - * - * Any already queued request may still be completed. However, no new requests will be made. - */ - virtual void remove_link_check_request() = 0; - - /** Sets up a particular data rate - * - * @param data_rate The intended data rate, for example DR_0 or DR_1. - * Please note that the macro DR_* can mean different things in different regions. - * @return LORAWAN_STATUS_OK if everything goes well, otherwise a negative error code: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_PARAMETER_INVALID if ADR is enabled or invalid data rate is given - */ - virtual lorawan_status_t set_datarate(uint8_t data_rate) = 0; - - /** Enables adaptive data rate (ADR) - * - * The underlying LoRaPHY and LoRaMac layers handle the data rate automatically - * based on the radio conditions (network congestion). - * - * @return LORAWAN_STATUS_OK on success, negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize() - */ - virtual lorawan_status_t enable_adaptive_datarate() = 0; - - /** Disables adaptive data rate - * - * When adaptive data rate (ADR) is disabled, either you can set a certain - * data rate, or the MAC layer selects a default value. - * - * @return LORAWAN_STATUS_OK on success, negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize() - */ - virtual lorawan_status_t disable_adaptive_datarate() = 0; - - /** Sets up the retry counter for confirmed messages. - * - * Valid for confirmed messages only. - * - * The number of trials to transmit the frame, if the LoRaMAC layer did not receive an - * acknowledgment. The MAC performs a data rate adaptation as in the LoRaWAN Specification - * V1.0.2, chapter 18.4, table on page 64. - * - * Note that if the number of retries is set to 1 or 2, MAC does not decrease the data rate, - * if the LoRaMAC layer did not receive an acknowledgment. - * - * @param count The number of retries for confirmed messages. - * - * @return LORAWAN_STATUS_OK or a negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize() - * LORAWAN_STATUS_PARAMETER_INVALID if count >= 255 - */ - virtual lorawan_status_t set_confirmed_msg_retries(uint8_t count) = 0; - - /** Sets the channel plan. - * - * You can provide a list of channels with appropriate parameters filled in. However, - * this list is not absolute. The stack applies a CF-List whenever available, which means - * that the network can overwrite your channel frequency settings right after Join Accept - * is received. You may try to set up any channel or channels after that, and if the channel - * requested is already active, the request is silently ignored. A negative error code is - * returned if there is any problem with parameters. - * - * Please note that you can also use this API to add a single channel to the existing channel plan. - * - * There is no reverse mechanism in the 1.0.2 specification for a node to request a particular - * channel. Only the network server can initiate such a request. - * You need to ensure that the corresponding base station supports the channel or channels being added. - * - * If your list includes a default channel (a channel where Join Requests are received), - * you cannot fully configure the channel parameters. Either leave the channel settings to default, - * or check your corresponding PHY layer implementation. For example, LoRaPHYE868. - * - * @param channel_plan The channel plan to set. - * - * @return LORAWAN_STATUS_OK on success, a negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_PARAMETER_INVALID if number of channels is exceeding the PHY limit, - * LORAWAN_STATUS_DATARATE_INVALID if invalid data rate is given, - * LORAWAN_STATUS_FREQUENCY_INVALID if invalid frequency is given, - * LORAWAN_STATUS_FREQ_AND_DR_INVALID if invalid data rate and freqency are given, - * LORAWAN_STATUS_BUSY if TX currently ongoing, - * LORAWAN_STATUS_SERVICE_UNKNOWN if custom channel plans are disabled in PHY - */ - virtual lorawan_status_t set_channel_plan(const lorawan_channelplan_t &channel_plan) = 0; - - /** Gets the channel plans from the LoRa stack. - * - * Once you have selected a particular PHY layer, a set of channels is automatically activated. - * Right after connecting, you can use this API to see the current plan. Otherwise, this API - * returns the channel plan that you have set using `set_channel_plan()`. - * - * @param channel_plan The current channel plan information. - * - * @return LORAWAN_STATUS_OK on success, a negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_SERVICE_UNKNOWN if custom channel plans are disabled in PHY - */ - virtual lorawan_status_t get_channel_plan(lorawan_channelplan_t &channel_plan) = 0; - - /** Removes an active channel plan. - * - * You cannot remove default channels (the channels the base stations are listening to). - * When a plan is abolished, only the non-default channels are removed. - * - * @return LORAWAN_STATUS_OK on success, negative error code on failure - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_BUSY if TX currently ongoing, - * LORAWAN_STATUS_SERVICE_UNKNOWN if custom channel plans are disabled in PHY - */ - virtual lorawan_status_t remove_channel_plan() = 0; - - /** Removes a single channel. - * - * You cannot remove default channels (the channels the base stations are listening to). - * - * @param index The channel index. - * - * @return LORAWAN_STATUS_OK on success, negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_PARAMETER_INVALID if invalid channel index is given, - * LORAWAN_STATUS_BUSY if TX currently ongoing, - * LORAWAN_STATUS_SERVICE_UNKNOWN if custom channel plans are disabled in PHY - */ - virtual lorawan_status_t remove_channel(uint8_t index) = 0; - - /** Send message to gateway - * - * @param port The application port number. Port numbers 0 and 224 are reserved, - * whereas port numbers from 1 to 223 (0x01 to 0xDF) are valid port numbers. - * Anything out of this range is illegal. - * - * @param data A pointer to the data being sent. The ownership of the buffer is not transferred. - * The data is copied to the internal buffers. - * - * @param length The size of data in bytes. - * - * @param flags A flag used to determine what type of message is being sent, for example: - * - * MSG_UNCONFIRMED_FLAG = 0x01 - * MSG_CONFIRMED_FLAG = 0x02 - * MSG_MULTICAST_FLAG = 0x04 - * MSG_PROPRIETARY_FLAG = 0x08 - * - * All flags are mutually exclusive, and MSG_MULTICAST_FLAG cannot be set. - * - * @return The number of bytes sent, or a negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_NO_ACTIVE_SESSIONS if connection is not open, - * LORAWAN_STATUS_WOULD_BLOCK if another TX is ongoing, - * LORAWAN_STATUS_PORT_INVALID if trying to send to an invalid port (e.g. to 0) - * LORAWAN_STATUS_PARAMETER_INVALID if NULL data pointer is given or flags are invalid. - */ - virtual int16_t send(uint8_t port, const uint8_t *data, - uint16_t length, int flags) = 0; - - /** Receives a message from the Network Server on a specific port. - * - * @param port The application port number. Port numbers 0 and 224 are reserved, - * whereas port numbers from 1 to 223 (0x01 to 0xDF) are valid port numbers. - * Anything out of this range is illegal. - * - * @param data A pointer to buffer where the received data will be stored. - * - * @param length The size of data in bytes. - * - * @param flags A flag is used to determine what type of message is being sent, for example: - * - * MSG_UNCONFIRMED_FLAG = 0x01 - * MSG_CONFIRMED_FLAG = 0x02 - * MSG_MULTICAST_FLAG = 0x04 - * MSG_PROPRIETARY_FLAG = 0x08 - * - * All flags can be used in conjunction with one another depending on the intended - * use case or reception expectation. - * - * For example, MSG_CONFIRMED_FLAG and MSG_UNCONFIRMED_FLAG are - * not mutually exclusive. In other words, the user can subscribe to - * receive both CONFIRMED AND UNCONFIRMED messages at the same time. - * - * @return It could be one of these: - * i) 0 if there is nothing else to read. - * ii) Number of bytes written to user buffer. - * iii) A negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_NO_ACTIVE_SESSIONS if connection is not open, - * LORAWAN_STATUS_WOULD_BLOCK if there is nothing available to read at the moment, - * LORAWAN_STATUS_PARAMETER_INVALID if NULL data or length is given, - * LORAWAN_STATUS_WOULD_BLOCK if incorrect port or flags are given, - */ - virtual int16_t receive(uint8_t port, uint8_t *data, uint16_t length, int flags) = 0; - - /** Receives a message from the Network Server on any port. - * - * @param data A pointer to buffer where the received data will be stored. - * - * @param length The size of data in bytes - * - * @param port Return the number of port from which message was received. - * - * @param flags Return flags to determine what type of message was received. - * MSG_UNCONFIRMED_FLAG = 0x01 - * MSG_CONFIRMED_FLAG = 0x02 - * MSG_MULTICAST_FLAG = 0x04 - * MSG_PROPRIETARY_FLAG = 0x08 - * - * @return It could be one of these: - * i) 0 if there is nothing else to read. - * ii) Number of bytes written to user buffer. - * iii) A negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_NO_ACTIVE_SESSIONS if connection is not open, - * LORAWAN_STATUS_PARAMETER_INVALID if NULL data or length is given, - * LORAWAN_STATUS_WOULD_BLOCK if there is nothing available to read at the moment. - */ - virtual int16_t receive(uint8_t *data, uint16_t length, uint8_t &port, int &flags) = 0; - - /** Add application callbacks to the stack. - * - * An example of using this API with a latch onto 'lorawan_events' could be: - * - * LoRaWANInterface lorawan(radio); - * lorawan_app_callbacks_t cbs; - * static void my_event_handler(); - * - * int main() - * { - * lorawan.initialize(); - * cbs.lorawan_events = mbed::callback(my_event_handler); - * lorawan.add_app_callbacks(&cbs); - * lorawan.connect(); - * } - * - * static void my_event_handler(lorawan_event_t event) - * { - * switch(event) { - * case CONNECTED: - * //do something - * break; - * case DISCONNECTED: - * //do something - * break; - * case TX_DONE: - * //do something - * break; - * default: - * break; - * } - * } - * - * @param callbacks A pointer to the structure containing application callbacks. - * - * @return LORAWAN_STATUS_OK on success, a negative error code on failure: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_PARAMETER_INVALID if events callback is not set - */ - virtual lorawan_status_t add_app_callbacks(lorawan_app_callbacks_t *callbacks) = 0; - - /** Change device class - * - * Change current device class. - * - * @param device_class The device class - * - * @return LORAWAN_STATUS_OK on success or other negative error code if request failed: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_UNSUPPORTED if requested class is not supported - */ - virtual lorawan_status_t set_device_class(device_class_t device_class) = 0; - - /** Get hold of TX meta-data - * - * Use this method to acquire any TX meta-data related to previous transmission. - * TX meta-data is only available right after the transmission is completed. - * In other words, you can check for TX meta-data right after receiving the TX_DONE event. - * - * @param metadata the inbound structure that will be filled if the meta-data is available. - * - * @return LORAWAN_STATUS_OK if the meta-data is available, - * otherwise other negative error code if request failed: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_METADATA_NOT_AVAILABLE if the meta-data is not available - */ - virtual lorawan_status_t get_tx_metadata(lorawan_tx_metadata &metadata) = 0; - - /** Get hold of RX meta-data - * - * Use this method to acquire any RX meta-data related to current reception. - * RX meta-data is only available right after the reception is completed. - * In other words, you can check for RX meta-data right after receiving the RX_DONE event. - * - * @param metadata the inbound structure that will be filled if the meta-data is available. - * - * @return LORAWAN_STATUS_OK if the meta-data is available, - * otherwise other negative error code if request failed: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_METADATA_NOT_AVAILABLE if the meta-data is not available - */ - virtual lorawan_status_t get_rx_metadata(lorawan_rx_metadata &metadata) = 0; - - /** Get hold of backoff time - * - * In the TX path, because of automatic duty cycling, the transmission is delayed by a certain - * amount of time, which is the backoff time. While the system schedules application data to be sent, - * the application can inquire about how much time is left in the actual transmission to happen. - * - * The system will provide you with a backoff time only if the application data is in the TX pipe. - * If however, the event is already queued for the transmission, this API returns a - * LORAWAN_STATUS_METADATA_NOT_AVAILABLE error code. - * - * @param backoff the inbound integer that will carry the backoff time if it is available. - * - * @return LORAWAN_STATUS_OK if the meta-data is available, - * otherwise other negative error code if request failed: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_METADATA_NOT_AVAILABLE if the meta-data is not available - */ - virtual lorawan_status_t get_backoff_metadata(int &backoff) = 0; +/** + * This class is deprecated and will be removed altogether after expiration of + * deprecation notice. + */ +#include "LoRaWANInterface.h" - /** Cancel outgoing transmission - * - * This API is used to cancel any outstanding transmission in the TX pipe. - * If an event for transmission is not already queued at the end of backoff timer, - * the system can cancel the outstanding outgoing packet. Otherwise, the system is - * busy sending and can't be held back. The system will not try to resend if the - * outgoing message was a CONFIRMED message even if the ack is not received. - * - * @return LORAWAN_STATUS_OK if the sending is canceled, otherwise - * other negative error code if request failed: - * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), - * LORAWAN_STATUS_BUSY if the send cannot be canceled - * LORAWAN_STATUS_NO_OP if the operation cannot be completed (nothing to cancel) - */ - virtual lorawan_status_t cancel_sending(void) = 0; -}; +MBED_DEPRECATED_SINCE("mbed-os-5.12", "Migrated to LoRaWANInterface") +typedef LoRaWANInterface LoRaWANBase; -#endif /* LORAWAN_BASE_H_ */ +#endif /* LORAWANBASE_H_ */ diff --git a/features/lorawan/LoRaWANInterface.cpp b/features/lorawan/LoRaWANInterface.cpp index 1c9c9aeaeab..f748fbfaed0 100644 --- a/features/lorawan/LoRaWANInterface.cpp +++ b/features/lorawan/LoRaWANInterface.cpp @@ -1,7 +1,7 @@ /** * @file * - * @brief Implementation of LoRaWANBase + * @brief A LoRaWAN network interface * * Copyright (c) 2017, Arm Limited and affiliates. * SPDX-License-Identifier: Apache-2.0 @@ -21,7 +21,10 @@ #include "LoRaWANInterface.h" #include "lorastack/phy/loraphy_target.h" +#include "mbed-trace/mbed_trace.h" +#define TRACE_GROUP "LSTK" +using namespace mbed; using namespace events; LoRaWANInterface::LoRaWANInterface(LoRaRadio &radio) diff --git a/features/lorawan/LoRaWANInterface.h b/features/lorawan/LoRaWANInterface.h index d2880d033f1..a55d80f9b4e 100644 --- a/features/lorawan/LoRaWANInterface.h +++ b/features/lorawan/LoRaWANInterface.h @@ -15,18 +15,28 @@ * limitations under the License. */ +/** @addtogroup LoRaWAN + * Mbed OS LoRaWAN Stack + * @{ + */ + #ifndef LORAWANINTERFACE_H_ #define LORAWANINTERFACE_H_ #include "platform/Callback.h" #include "platform/ScopedLock.h" +#include "events/EventQueue.h" #include "LoRaWANStack.h" #include "LoRaRadio.h" -#include "LoRaWANBase.h" +#include "lorawan_types.h" +// Forward declaration of LoRaPHY class class LoRaPHY; -class LoRaWANInterface: public LoRaWANBase { +/** LoRaWANInterface Class + * A network interface for LoRaWAN + */ +class LoRaWANInterface { public: @@ -48,46 +58,511 @@ class LoRaWANInterface: public LoRaWANBase { */ LoRaWANInterface(LoRaRadio &radio, LoRaPHY &phy); - virtual ~LoRaWANInterface(); - - // From LoRaWANBase: - virtual lorawan_status_t initialize(events::EventQueue *queue); - virtual lorawan_status_t connect(); - virtual lorawan_status_t connect(const lorawan_connect_t &connect); - virtual lorawan_status_t disconnect(); - virtual lorawan_status_t add_link_check_request(); - virtual void remove_link_check_request(); - virtual lorawan_status_t set_datarate(uint8_t data_rate); - virtual lorawan_status_t enable_adaptive_datarate(); - virtual lorawan_status_t disable_adaptive_datarate(); - virtual lorawan_status_t set_confirmed_msg_retries(uint8_t count); - virtual lorawan_status_t set_channel_plan(const lorawan_channelplan_t &channel_plan); - virtual lorawan_status_t get_channel_plan(lorawan_channelplan_t &channel_plan); - virtual lorawan_status_t remove_channel_plan(); - virtual lorawan_status_t remove_channel(uint8_t index); - virtual int16_t send(uint8_t port, const uint8_t *data, uint16_t length, int flags); - virtual int16_t receive(uint8_t port, uint8_t *data, uint16_t length, int flags); - virtual int16_t receive(uint8_t *data, uint16_t length, uint8_t &port, int &flags); - virtual lorawan_status_t add_app_callbacks(lorawan_app_callbacks_t *callbacks); - virtual lorawan_status_t set_device_class(const device_class_t device_class); - virtual lorawan_status_t get_tx_metadata(lorawan_tx_metadata &metadata); - virtual lorawan_status_t get_rx_metadata(lorawan_rx_metadata &metadata); - virtual lorawan_status_t get_backoff_metadata(int &backoff); - virtual lorawan_status_t cancel_sending(void); + ~LoRaWANInterface(); + + /** Initialize the LoRa stack. + * + * You must call this before using the LoRa stack. + * + * @param queue A pointer to EventQueue provided by the application. + * + * @return LORAWAN_STATUS_OK on success, a negative error code on failure: + * LORAWAN_STATUS_PARAMETER_INVALID is NULL queue is given. + */ + lorawan_status_t initialize(events::EventQueue *queue); + + /** Connect OTAA or ABP using the Mbed OS config system + * + * Connect by Over The Air Activation or Activation By Personalization. + * You need to configure the connection properly using the Mbed OS configuration system. + * + * When connecting through OTAA, the return code for success (LORAWAN_STATUS_CONNECT_IN_PROGRESS) + * is negative. However, this is not a real error. It tells you that the connection is in progress, + * and an event will notify you of the completion. By default, after the Join Accept message is + * received, base stations may provide the node with a CF-List that replaces all user-configured + * channels except the Join/Default channels. A CF-List can configure a maximum of five channels + * other than the default channels. + * + * To configure more channels, we recommend that you use the `set_channel_plan()` API after the connection. + * By default, the PHY layers configure only the mandatory Join channels. The retransmission back-off + * restrictions on these channels are severe, and you may experience long delays or even failures + * in the confirmed traffic. If you add more channels, the aggregated duty cycle becomes much more + * relaxed as compared to the Join (default) channels only. + * + * **NOTES ON RECONNECTION:** + * Currently, the Mbed OS LoRaWAN implementation does not support non-volatile memory storage. + * Therefore, the state and frame counters cannot be restored after a power cycle. However, + * if you use the `disconnect()` API to shut down the LoRaWAN protocol, the state and frame + * counters are saved. Connecting again restores the previous session. According to the LoRaWAN + * 1.0.2 specification, the frame counters are always reset to 0 for OTAA, and a new Join request + * lets the network server know that the counters need a reset. The same is said about the ABP, + * but there is no way to convey this information to the network server. For a network server, + * an ABP device is always connected. That's why storing the frame counters is important for ABP. + * That's why we restore frame counters from session information after a disconnection. + * + * @return Common: LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_PARAMETER_INVALID if connection parameters are invalid. + * + * For ABP: If everything goes well, LORAWAN_STATUS_OK is returned for first call + * followed by a 'CONNECTED' event. Otherwise a negative error code is returned: + * Any subsequent call will return LORAWAN_STATUS_ALREADY_CONNECTED and no event follows. + * + * For OTAA: When a JoinRequest is sent, LORAWAN_STATUS_CONNECT_IN_PROGRESS is returned for + * the first call. Any subsequent call will return either LORAWAN_STATUS_BUSY + * (if the previous request for connection is still underway) or + * LORAWAN_STATUS_ALREADY_CONNECTED (if a network was already joined successfully). + * A 'CONNECTED' event is sent to the application when the JoinAccept is received. + */ + lorawan_status_t connect(); + + /** Connect OTAA or ABP with parameters + * + * All connection parameters are chosen by you and provided in the data structure passed down. + * + * When connecting using OTAA, the return code for success (LORAWAN_STATUS_CONNECT_IN_PROGRESS) + * is negative. However, this is not a real error. It tells you that connection is in progress, + * and an event will notify you of completion. By default, after Join Accept message is received, + * base stations may provide the node with a CF-List that replaces all user-configured channels + * except the Join/Default channels. A CF-List can configure a maximum of five channels other + * than the default channels. + * + * To configure more channels, we recommend that you use the `set_channel_plan()` API after + * the connection. By default, the PHY layers configure only the mandatory Join channels. + * The retransmission back-off restrictions on these channels are severe, and you may experience + * long delays or even failures in the confirmed traffic. If you add more channels, the aggregated + * duty cycle becomes much more relaxed as compared to the Join (default) channels only. + * + * **NOTES ON RECONNECTION:** + * Currently, the Mbed OS LoRaWAN implementation does not support non-volatile memory storage. + * Therefore, the state and frame counters cannot be restored after a power cycle. However, + * if you use the `disconnect()` API to shut down the LoRaWAN protocol, the state and frame + * counters are saved. Connecting again restores the previous session. According to the LoRaWAN + * 1.0.2 specification, the frame counters are always reset to zero for OTAA, and a new Join + * request lets the network server know that the counters need a reset. The same is said about + * the ABP, but there is no way to convey this information to the network server. For a network + * server, an ABP device is always connected. That's why storing the frame counters is important + * for ABP. That's why we restore frame counters from session information after a disconnection. + * + * @param connect Options for an end device connection to the gateway. + * + * @return Common: LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_PARAMETER_INVALID if connection parameters are invalid. + * + * For ABP: If everything goes well, LORAWAN_STATUS_OK is returned for first call followed + * by a 'CONNECTED' event. Otherwise a negative error code is returned. + * Any subsequent call will return LORAWAN_STATUS_ALREADY_CONNECTED and no event follows. + * + * For OTAA: When a JoinRequest is sent, LORAWAN_STATUS_CONNECT_IN_PROGRESS is returned for the + * first call. Any subsequent call will return either LORAWAN_STATUS_BUSY + * (if the previous request for connection is still underway) or LORAWAN_STATUS_ALREADY_CONNECTED + * (if a network was already joined successfully). + * A 'CONNECTED' event is sent to the application when the JoinAccept is received. + */ + lorawan_status_t connect(const lorawan_connect_t &connect); + + /** Disconnect the current session. + * + * @return LORAWAN_STATUS_DEVICE_OFF on success, a negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + */ + lorawan_status_t disconnect(); + + /** Validate the connectivity with the network. + * + * Application may use this API to submit a request to the stack for validation of its connectivity + * to a Network Server. Under the hood, this API schedules a Link Check Request command (LinkCheckReq) + * for the network server and once the response, i.e., LinkCheckAns MAC command is received from + * the Network Server, user provided method is called. + * + * One way to use this API may be the validation of connectivity after a long deep sleep. + * Mbed LoRaWANStack follows the MAC commands with data frame payload, so the application needs + * to send something, and the Network Server may respond during the RX slots. + * + * This API is usable only when the application sets the 'link_check_resp' callback. + * See add_lora_app_callbacks API. If the above mentioned callback is not set, + * a LORAWAN_STATUS_PARAMETER_INVALID error is thrown. + * + * The first parameter to callback function is the demodulation margin, and the second parameter + * is the number of gateways that successfully received the last request. + * + * A 'Link Check Request' MAC command remains set for every subsequent transmission, until/unless + * the application explicitly turns it off using the remove_link_check_request() API. + * + * @return LORAWAN_STATUS_OK on successfully queuing a request, or + * a negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_PARAMETER_INVALID if link_check_resp callback method is not set. + * + */ + lorawan_status_t add_link_check_request(); + + /** Removes link check request sticky MAC command. + * + * Any already queued request may still be completed. However, no new requests will be made. + */ + void remove_link_check_request(); + + /** Sets up a particular data rate + * + * @param data_rate The intended data rate, for example DR_0 or DR_1. + * Please note that the macro DR_* can mean different things in different regions. + * @return LORAWAN_STATUS_OK if everything goes well, otherwise a negative error code: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_PARAMETER_INVALID if ADR is enabled or invalid data rate is given + */ + lorawan_status_t set_datarate(uint8_t data_rate); + + /** Enables adaptive data rate (ADR) + * + * The underlying LoRaPHY and LoRaMac layers handle the data rate automatically + * based on the radio conditions (network congestion). + * + * @return LORAWAN_STATUS_OK on success, negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize() + */ + lorawan_status_t enable_adaptive_datarate(); + + /** Disables adaptive data rate + * + * When adaptive data rate (ADR) is disabled, either you can set a certain + * data rate, or the MAC layer selects a default value. + * + * @return LORAWAN_STATUS_OK on success, negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize() + */ + lorawan_status_t disable_adaptive_datarate(); + + /** Sets up the retry counter for confirmed messages. + * + * Valid for confirmed messages only. + * + * The number of trials to transmit the frame, if the LoRaMAC layer did not receive an + * acknowledgment. The MAC performs a data rate adaptation as in the LoRaWAN Specification + * V1.0.2, chapter 18.4, table on page 64. + * + * Note that if the number of retries is set to 1 or 2, MAC does not decrease the data rate, + * if the LoRaMAC layer did not receive an acknowledgment. + * + * @param count The number of retries for confirmed messages. + * + * @return LORAWAN_STATUS_OK or a negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize() + * LORAWAN_STATUS_PARAMETER_INVALID if count >= 255 + */ + lorawan_status_t set_confirmed_msg_retries(uint8_t count); + + /** Sets the channel plan. + * + * You can provide a list of channels with appropriate parameters filled in. However, + * this list is not absolute. The stack applies a CF-List whenever available, which means + * that the network can overwrite your channel frequency settings right after Join Accept + * is received. You may try to set up any channel or channels after that, and if the channel + * requested is already active, the request is silently ignored. A negative error code is + * returned if there is any problem with parameters. + * + * Please note that you can also use this API to add a single channel to the existing channel plan. + * + * There is no reverse mechanism in the 1.0.2 specification for a node to request a particular + * channel. Only the network server can initiate such a request. + * You need to ensure that the corresponding base station supports the channel or channels being added. + * + * If your list includes a default channel (a channel where Join Requests are received), + * you cannot fully configure the channel parameters. Either leave the channel settings to default, + * or check your corresponding PHY layer implementation. For example, LoRaPHYE868. + * + * @param channel_plan The channel plan to set. + * + * @return LORAWAN_STATUS_OK on success, a negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_PARAMETER_INVALID if number of channels is exceeding the PHY limit, + * LORAWAN_STATUS_DATARATE_INVALID if invalid data rate is given, + * LORAWAN_STATUS_FREQUENCY_INVALID if invalid frequency is given, + * LORAWAN_STATUS_FREQ_AND_DR_INVALID if invalid data rate and freqency are given, + * LORAWAN_STATUS_BUSY if TX currently ongoing, + * LORAWAN_STATUS_SERVICE_UNKNOWN if custom channel plans are disabled in PHY + */ + lorawan_status_t set_channel_plan(const lorawan_channelplan_t &channel_plan); + + /** Gets the channel plans from the LoRa stack. + * + * Once you have selected a particular PHY layer, a set of channels is automatically activated. + * Right after connecting, you can use this API to see the current plan. Otherwise, this API + * returns the channel plan that you have set using `set_channel_plan()`. + * + * @param channel_plan The current channel plan information. + * + * @return LORAWAN_STATUS_OK on success, a negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_SERVICE_UNKNOWN if custom channel plans are disabled in PHY + */ + lorawan_status_t get_channel_plan(lorawan_channelplan_t &channel_plan); + + /** Removes an active channel plan. + * + * You cannot remove default channels (the channels the base stations are listening to). + * When a plan is abolished, only the non-default channels are removed. + * + * @return LORAWAN_STATUS_OK on success, negative error code on failure + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_BUSY if TX currently ongoing, + * LORAWAN_STATUS_SERVICE_UNKNOWN if custom channel plans are disabled in PHY + */ + lorawan_status_t remove_channel_plan(); + + /** Removes a single channel. + * + * You cannot remove default channels (the channels the base stations are listening to). + * + * @param index The channel index. + * + * @return LORAWAN_STATUS_OK on success, negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_PARAMETER_INVALID if invalid channel index is given, + * LORAWAN_STATUS_BUSY if TX currently ongoing, + * LORAWAN_STATUS_SERVICE_UNKNOWN if custom channel plans are disabled in PHY + */ + lorawan_status_t remove_channel(uint8_t index); + + /** Send message to gateway + * + * @param port The application port number. Port numbers 0 and 224 are reserved, + * whereas port numbers from 1 to 223 (0x01 to 0xDF) are valid port numbers. + * Anything out of this range is illegal. + * + * @param data A pointer to the data being sent. The ownership of the buffer is not transferred. + * The data is copied to the internal buffers. + * + * @param length The size of data in bytes. + * + * @param flags A flag used to determine what type of message is being sent, for example: + * + * MSG_UNCONFIRMED_FLAG = 0x01 + * MSG_CONFIRMED_FLAG = 0x02 + * MSG_MULTICAST_FLAG = 0x04 + * MSG_PROPRIETARY_FLAG = 0x08 + * + * All flags are mutually exclusive, and MSG_MULTICAST_FLAG cannot be set. + * + * @return The number of bytes sent, or a negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_NO_ACTIVE_SESSIONS if connection is not open, + * LORAWAN_STATUS_WOULD_BLOCK if another TX is ongoing, + * LORAWAN_STATUS_PORT_INVALID if trying to send to an invalid port (e.g. to 0) + * LORAWAN_STATUS_PARAMETER_INVALID if NULL data pointer is given or flags are invalid. + */ + int16_t send(uint8_t port, const uint8_t *data, uint16_t length, int flags); + + /** Receives a message from the Network Server on a specific port. + * + * @param port The application port number. Port numbers 0 and 224 are reserved, + * whereas port numbers from 1 to 223 (0x01 to 0xDF) are valid port numbers. + * Anything out of this range is illegal. + * + * @param data A pointer to buffer where the received data will be stored. + * + * @param length The size of data in bytes. + * + * @param flags A flag is used to determine what type of message is being sent, for example: + * + * MSG_UNCONFIRMED_FLAG = 0x01 + * MSG_CONFIRMED_FLAG = 0x02 + * MSG_MULTICAST_FLAG = 0x04 + * MSG_PROPRIETARY_FLAG = 0x08 + * + * All flags can be used in conjunction with one another depending on the intended + * use case or reception expectation. + * + * For example, MSG_CONFIRMED_FLAG and MSG_UNCONFIRMED_FLAG are + * not mutually exclusive. In other words, the user can subscribe to + * receive both CONFIRMED AND UNCONFIRMED messages at the same time. + * + * @return It could be one of these: + * i) 0 if there is nothing else to read. + * ii) Number of bytes written to user buffer. + * iii) A negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_NO_ACTIVE_SESSIONS if connection is not open, + * LORAWAN_STATUS_WOULD_BLOCK if there is nothing available to read at the moment, + * LORAWAN_STATUS_PARAMETER_INVALID if NULL data or length is given, + * LORAWAN_STATUS_WOULD_BLOCK if incorrect port or flags are given, + */ + int16_t receive(uint8_t port, uint8_t *data, uint16_t length, int flags); + + /** Receives a message from the Network Server on any port. + * + * @param data A pointer to buffer where the received data will be stored. + * + * @param length The size of data in bytes + * + * @param port Return the number of port from which message was received. + * + * @param flags Return flags to determine what type of message was received. + * MSG_UNCONFIRMED_FLAG = 0x01 + * MSG_CONFIRMED_FLAG = 0x02 + * MSG_MULTICAST_FLAG = 0x04 + * MSG_PROPRIETARY_FLAG = 0x08 + * + * @return It could be one of these: + * i) 0 if there is nothing else to read. + * ii) Number of bytes written to user buffer. + * iii) A negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_NO_ACTIVE_SESSIONS if connection is not open, + * LORAWAN_STATUS_PARAMETER_INVALID if NULL data or length is given, + * LORAWAN_STATUS_WOULD_BLOCK if there is nothing available to read at the moment. + */ + int16_t receive(uint8_t *data, uint16_t length, uint8_t &port, int &flags); + + /** Add application callbacks to the stack. + * + * An example of using this API with a latch onto 'lorawan_events' could be: + * + *\code + * LoRaWANInterface lorawan(radio); + * lorawan_app_callbacks_t cbs; + * static void my_event_handler(); + * + * int main() + * { + * lorawan.initialize(); + * cbs.lorawan_events = mbed::callback(my_event_handler); + * lorawan.add_app_callbacks(&cbs); + * lorawan.connect(); + * } + * + * static void my_event_handler(lorawan_event_t event) + * { + * switch(event) { + * case CONNECTED: + * //do something + * break; + * case DISCONNECTED: + * //do something + * break; + * case TX_DONE: + * //do something + * break; + * default: + * break; + * } + * } + * + *\endcode + * + * @param callbacks A pointer to the structure containing application callbacks. + * + * @return LORAWAN_STATUS_OK on success, a negative error code on failure: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_PARAMETER_INVALID if events callback is not set + */ + lorawan_status_t add_app_callbacks(lorawan_app_callbacks_t *callbacks); + + /** Change device class + * + * Change current device class. + * + * @param device_class The device class + * + * @return LORAWAN_STATUS_OK on success or other negative error code if request failed: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_UNSUPPORTED if requested class is not supported + */ + lorawan_status_t set_device_class(device_class_t device_class); + + /** Get hold of TX meta-data + * + * Use this method to acquire any TX meta-data related to previous transmission. + * TX meta-data is only available right after the transmission is completed. + * In other words, you can check for TX meta-data right after receiving the TX_DONE event. + * + * @param metadata the inbound structure that will be filled if the meta-data is available. + * + * @return LORAWAN_STATUS_OK if the meta-data is available, + * otherwise other negative error code if request failed: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_METADATA_NOT_AVAILABLE if the meta-data is not available + */ + lorawan_status_t get_tx_metadata(lorawan_tx_metadata &metadata); + + /** Get hold of RX meta-data + * + * Use this method to acquire any RX meta-data related to current reception. + * RX meta-data is only available right after the reception is completed. + * In other words, you can check for RX meta-data right after receiving the RX_DONE event. + * + * @param metadata the inbound structure that will be filled if the meta-data is available. + * + * @return LORAWAN_STATUS_OK if the meta-data is available, + * otherwise other negative error code if request failed: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_METADATA_NOT_AVAILABLE if the meta-data is not available + */ + lorawan_status_t get_rx_metadata(lorawan_rx_metadata &metadata); + + /** Get hold of backoff time + * + * In the TX path, because of automatic duty cycling, the transmission is delayed by a certain + * amount of time, which is the backoff time. While the system schedules application data to be sent, + * the application can inquire about how much time is left in the actual transmission to happen. + * + * The system will provide you with a backoff time only if the application data is in the TX pipe. + * If however, the event is already queued for the transmission, this API returns a + * LORAWAN_STATUS_METADATA_NOT_AVAILABLE error code. + * + * @param backoff the inbound integer that will carry the backoff time if it is available. + * + * @return LORAWAN_STATUS_OK if the meta-data is available, + * otherwise other negative error code if request failed: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_METADATA_NOT_AVAILABLE if the meta-data is not available + */ + lorawan_status_t get_backoff_metadata(int &backoff); + /** Cancel outgoing transmission + * + * This API is used to cancel any outstanding transmission in the TX pipe. + * If an event for transmission is not already queued at the end of backoff timer, + * the system can cancel the outstanding outgoing packet. Otherwise, the system is + * busy sending and can't be held back. The system will not try to resend if the + * outgoing message was a CONFIRMED message even if the ack is not received. + * + * @return LORAWAN_STATUS_OK if the sending is canceled, otherwise + * other negative error code if request failed: + * LORAWAN_STATUS_NOT_INITIALIZED if system is not initialized with initialize(), + * LORAWAN_STATUS_BUSY if the send cannot be canceled + * LORAWAN_STATUS_NO_OP if the operation cannot be completed (nothing to cancel) + */ + lorawan_status_t cancel_sending(void); + + /** Provides exclusive access to the stack. + * + * Use only if the stack is being run in it's own separate thread. + */ void lock(void) { _lw_stack.lock(); } + + /** Releases exclusive access to the stack. + * + * Use only if the stack is being run in it's own separate thread. + */ void unlock(void) { _lw_stack.unlock(); } - private: + /** ScopedLock object + * + * RAII style exclusive access + */ typedef mbed::ScopedLock Lock; + /** LoRaWANStack object + * + * Handle for the LoRaWANStack class + */ LoRaWANStack _lw_stack; /** PHY object if created by LoRaWANInterface @@ -99,3 +574,4 @@ class LoRaWANInterface: public LoRaWANBase { }; #endif /* LORAWANINTERFACE_H_ */ +/** @}*/ diff --git a/features/lorawan/LoRaWANStack.h b/features/lorawan/LoRaWANStack.h index e5ae4b26cc7..8d0d182f390 100644 --- a/features/lorawan/LoRaWANStack.h +++ b/features/lorawan/LoRaWANStack.h @@ -54,6 +54,9 @@ class LoRaPHY; +/** LoRaWANStack Class + * A controller layer for LoRaWAN MAC and PHY + */ class LoRaWANStack: private mbed::NonCopyable { public: diff --git a/features/lorawan/lorastack/mac/LoRaMac.h b/features/lorawan/lorastack/mac/LoRaMac.h index 395c41b0842..977843d912d 100644 --- a/features/lorawan/lorastack/mac/LoRaMac.h +++ b/features/lorawan/lorastack/mac/LoRaMac.h @@ -56,6 +56,9 @@ #include "platform/ScopedLock.h" +/** LoRaMac Class + * Implementation of LoRaWAN MAC layer + */ class LoRaMac { public: 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/mac/LoRaMacCommand.h b/features/lorawan/lorastack/mac/LoRaMacCommand.h index ce952a4bcd6..93f285efd7e 100644 --- a/features/lorawan/lorastack/mac/LoRaMacCommand.h +++ b/features/lorawan/lorastack/mac/LoRaMacCommand.h @@ -51,6 +51,9 @@ class LoRaMac; +/** LoRaMacCommand Class + * Helper class for LoRaMac layer to handle any MAC commands + */ class LoRaMacCommand { public: diff --git a/features/lorawan/lorastack/mac/LoRaMacCrypto.cpp b/features/lorawan/lorastack/mac/LoRaMacCrypto.cpp index 7b66144bae4..10507840892 100644 --- a/features/lorawan/lorastack/mac/LoRaMacCrypto.cpp +++ b/features/lorawan/lorastack/mac/LoRaMacCrypto.cpp @@ -28,12 +28,26 @@ #include "LoRaMacCrypto.h" #include "system/lorawan_data_structures.h" +#include "mbedtls/platform.h" #if defined(MBEDTLS_CMAC_C) && defined(MBEDTLS_AES_C) && defined(MBEDTLS_CIPHER_C) LoRaMacCrypto::LoRaMacCrypto() { +#if defined(MBEDTLS_PLATFORM_C) + int ret = mbedtls_platform_setup(NULL); + if (ret != 0) { + MBED_ASSERT(0 && "LoRaMacCrypto: Fail in mbedtls_platform_setup."); + } +#endif /* MBEDTLS_PLATFORM_C */ +} + +LoRaMacCrypto::~LoRaMacCrypto() +{ +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ } int LoRaMacCrypto::compute_mic(const uint8_t *buffer, uint16_t size, @@ -291,6 +305,10 @@ LoRaMacCrypto::LoRaMacCrypto() MBED_ASSERT(0 && "[LoRaCrypto] Must enable AES, CMAC & CIPHER from mbedTLS"); } +LoRaMacCrypto::~LoRaMacCrypto() +{ +} + // If mbedTLS is not configured properly, these dummies will ensure that // user knows what is wrong and in addition to that these ensure that // Mbed-OS compiles properly under normal conditions where LoRaWAN in conjunction diff --git a/features/lorawan/lorastack/mac/LoRaMacCrypto.h b/features/lorawan/lorastack/mac/LoRaMacCrypto.h index 845b8ee635e..9136ab2d1fe 100644 --- a/features/lorawan/lorastack/mac/LoRaMacCrypto.h +++ b/features/lorawan/lorastack/mac/LoRaMacCrypto.h @@ -30,6 +30,7 @@ SPDX-License-Identifier: BSD-3-Clause #ifndef MBED_LORAWAN_MAC_LORAMAC_CRYPTO_H__ #define MBED_LORAWAN_MAC_LORAMAC_CRYPTO_H__ +#include "mbedtls/config.h" #include "mbedtls/aes.h" #include "mbedtls/cmac.h" @@ -41,6 +42,11 @@ class LoRaMacCrypto { */ LoRaMacCrypto(); + /** + * Destructor + */ + ~LoRaMacCrypto(); + /** * Computes the LoRaMAC frame MIC field * diff --git a/features/lorawan/lorastack/phy/LoRaPHY.cpp b/features/lorawan/lorastack/phy/LoRaPHY.cpp index 1e6cc64169b..dd3cba92171 100644 --- a/features/lorawan/lorastack/phy/LoRaPHY.cpp +++ b/features/lorawan/lorastack/phy/LoRaPHY.cpp @@ -309,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]; @@ -973,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 @@ -1024,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 d6be36b1dc9..a522afc4f95 100644 --- a/features/lorawan/lorastack/phy/LoRaPHY.h +++ b/features/lorawan/lorastack/phy/LoRaPHY.h @@ -40,6 +40,9 @@ #include "LoRaRadio.h" #include "lora_phy_ds.h" +/** LoRaPHY Class + * Parent class for LoRa regional PHY implementations + */ class LoRaPHY : private mbed::NonCopyable { public: @@ -608,7 +611,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 diff --git a/features/lorawan/lorastack/phy/LoRaPHYAS923.h b/features/lorawan/lorastack/phy/LoRaPHYAS923.h index 2a9d3f89f3a..e222c0d9c98 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYAS923.h +++ b/features/lorawan/lorastack/phy/LoRaPHYAS923.h @@ -32,6 +32,8 @@ #ifndef MBED_OS_LORAPHY_AS923_H_ #define MBED_OS_LORAPHY_AS923_H_ +#if !(DOXYGEN_ONLY) + #include "LoRaPHY.h" /*! @@ -46,7 +48,6 @@ #define AS923_CHANNEL_MASK_SIZE 1 - class LoRaPHYAS923 : public LoRaPHY { public: @@ -68,4 +69,5 @@ class LoRaPHYAS923 : public LoRaPHY { uint16_t default_channel_mask[AS923_CHANNEL_MASK_SIZE]; }; +#endif /* DOXYGEN_ONLY*/ #endif /* MBED_OS_LORAPHY_AS923_H_ */ 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/LoRaPHYAU915.h b/features/lorawan/lorastack/phy/LoRaPHYAU915.h index 2fa0e453c09..cdcce73ea48 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYAU915.h +++ b/features/lorawan/lorastack/phy/LoRaPHYAU915.h @@ -33,6 +33,8 @@ #define MBED_OS_LORAPHY_AU915_H_ +#if !(DOXYGEN_ONLY) + #include "LoRaPHY.h" // Definitions @@ -48,7 +50,6 @@ #define AU915_CHANNEL_MASK_SIZE 5 - class LoRaPHYAU915 : public LoRaPHY { public: @@ -126,4 +127,6 @@ class LoRaPHYAU915 : public LoRaPHY { uint16_t default_channel_mask[AU915_CHANNEL_MASK_SIZE]; }; +#endif /* DOXYGEN_ONLY*/ #endif /* MBED_OS_LORAPHY_AU915_H_ */ + 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/LoRaPHYCN470.h b/features/lorawan/lorastack/phy/LoRaPHYCN470.h index 6e2a64103be..81d07a2b11b 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYCN470.h +++ b/features/lorawan/lorastack/phy/LoRaPHYCN470.h @@ -32,6 +32,8 @@ #ifndef MBED_OS_LORAPHY_CN470_H_ #define MBED_OS_LORAPHY_CN470_H_ +#if !(DOXYGEN_ONLY) + #include "LoRaPHY.h" // Definitions @@ -94,4 +96,5 @@ class LoRaPHYCN470 : public LoRaPHY { uint16_t default_channel_mask[CN470_CHANNEL_MASK_SIZE]; }; +#endif /* DOXYGEN_ONLY*/ #endif /* MBED_OS_LORAPHY_CN470_H_ */ diff --git a/features/lorawan/lorastack/phy/LoRaPHYCN779.h b/features/lorawan/lorastack/phy/LoRaPHYCN779.h index 1641b3d55ef..2531a8958fe 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYCN779.h +++ b/features/lorawan/lorastack/phy/LoRaPHYCN779.h @@ -32,6 +32,8 @@ #ifndef MBED_OS_LORAPHY_CN779_H_ #define MBED_OS_LORAPHY_CN779_H_ +#if !(DOXYGEN_ONLY) + #include "LoRaPHY.h" #define CN779_MAX_NB_CHANNELS 16 @@ -70,4 +72,5 @@ class LoRaPHYCN779 : public LoRaPHY { uint16_t default_channel_mask[CN779_CHANNEL_MASK_SIZE]; }; +#endif /* DOXYGEN_ONLY*/ #endif /* MBED_OS_LORAPHY_CN779_H_ */ diff --git a/features/lorawan/lorastack/phy/LoRaPHYEU433.h b/features/lorawan/lorastack/phy/LoRaPHYEU433.h index c924732886a..81417d97f6c 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYEU433.h +++ b/features/lorawan/lorastack/phy/LoRaPHYEU433.h @@ -32,6 +32,8 @@ #ifndef MBED_OS_LORAPHY_EU433_H_ #define MBED_OS_LORAPHY_EU433_H_ +#if !(DOXYGEN_ONLY) + #include "LoRaPHY.h" /*! @@ -76,5 +78,5 @@ class LoRaPHYEU433 : public LoRaPHY { uint16_t default_channel_mask[EU433_CHANNEL_MASK_SIZE]; }; - +#endif /* DOXYGEN_ONLY*/ #endif /* MBED_OS_LORAPHY_EU433_H_ */ diff --git a/features/lorawan/lorastack/phy/LoRaPHYEU868.h b/features/lorawan/lorastack/phy/LoRaPHYEU868.h index 89250412792..b3f8de85a4b 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYEU868.h +++ b/features/lorawan/lorastack/phy/LoRaPHYEU868.h @@ -32,6 +32,8 @@ #ifndef MBED_OS_LORAPHY_EU868_H_ #define MBED_OS_LORAPHY_EU868_H_ +#if !(DOXYGEN_ONLY) + #include "LoRaPHY.h" /*! @@ -79,4 +81,5 @@ class LoRaPHYEU868 : public LoRaPHY { uint16_t default_channel_mask[EU868_CHANNEL_MASK_SIZE]; }; +#endif /* DOXYGEN_ONLY*/ #endif /* MBED_OS_LORAPHY_EU868_H_ */ diff --git a/features/lorawan/lorastack/phy/LoRaPHYIN865.h b/features/lorawan/lorastack/phy/LoRaPHYIN865.h index 491364ec46f..d213c2e6712 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYIN865.h +++ b/features/lorawan/lorastack/phy/LoRaPHYIN865.h @@ -32,8 +32,9 @@ #ifndef MBED_OS_LORAPHY_IN865_H_ #define MBED_OS_LORAPHY_IN865_H_ -#include "LoRaPHY.h" +#if !(DOXYGEN_ONLY) +#include "LoRaPHY.h" /*! * LoRaMac maximum number of channels @@ -79,4 +80,5 @@ class LoRaPHYIN865 : public LoRaPHY { uint16_t default_channel_mask[IN865_CHANNEL_MASK_SIZE]; }; +#endif /* DOXYGEN_ONLY */ #endif /* MBED_OS_LORAPHY_IN865_H_ */ diff --git a/features/lorawan/lorastack/phy/LoRaPHYKR920.h b/features/lorawan/lorastack/phy/LoRaPHYKR920.h index 8fcc2556416..ae7af4624cd 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYKR920.h +++ b/features/lorawan/lorastack/phy/LoRaPHYKR920.h @@ -32,6 +32,8 @@ #ifndef MBED_OS_LORAPHY_KR920_H_ #define MBED_OS_LORAPHY_KR920_H_ +#if !(DOXYGEN_ONLY) + #include "LoRaPHY.h" /*! @@ -92,5 +94,6 @@ class LoRaPHYKR920 : public LoRaPHY { uint16_t default_channel_mask[KR920_CHANNEL_MASK_SIZE]; }; +#endif /* DOXYGEN_ONLY */ #endif // MBED_OS_LORAPHY_KR920_H_ 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/lorastack/phy/LoRaPHYUS915.h b/features/lorawan/lorastack/phy/LoRaPHYUS915.h index 5a48e374a9d..1896c4a96ac 100644 --- a/features/lorawan/lorastack/phy/LoRaPHYUS915.h +++ b/features/lorawan/lorastack/phy/LoRaPHYUS915.h @@ -32,6 +32,8 @@ #ifndef MBED_OS_LORAPHYUS_915_H_ #define MBED_OS_LORAPHYUS_915_H_ +#if !(DOXYGEN_ONLY) + #include "LoRaPHY.h" /*! @@ -129,4 +131,5 @@ class LoRaPHYUS915 : public LoRaPHY { uint16_t default_channel_mask[US915_CHANNEL_MASK_SIZE]; }; +#endif /* DOXYGEN_ONLY */ #endif /* MBED_OS_LORAPHY_US915_H_ */ diff --git a/features/lorawan/lorastack/phy/lora_phy_ds.h b/features/lorawan/lorastack/phy/lora_phy_ds.h index 8bf5e29a340..4bd5cff1d8c 100644 --- a/features/lorawan/lorastack/phy/lora_phy_ds.h +++ b/features/lorawan/lorastack/phy/lora_phy_ds.h @@ -480,21 +480,29 @@ typedef struct continuous_wave_mode_params_s { uint16_t timeout; } cw_mode_params_t; +/*! + * Template for a table + */ typedef struct { void *table; uint8_t size; } loraphy_table_t; +/*! + * Contains information regarding channel configuration of + * a given PHY + */ typedef struct { - uint8_t channel_list_size; uint8_t mask_size; - uint16_t *mask; uint16_t *default_mask; channel_params_t *channel_list; } loraphy_channels_t; +/*! + * Global configuration parameters of a given PHY + */ typedef struct { bool duty_cycle_enabled; bool accept_tx_param_setup_req; diff --git a/features/lorawan/system/lorawan_data_structures.h b/features/lorawan/system/lorawan_data_structures.h index dafcb29ff18..141f7db0c4a 100644 --- a/features/lorawan/system/lorawan_data_structures.h +++ b/features/lorawan/system/lorawan_data_structures.h @@ -1040,6 +1040,9 @@ typedef struct { int timer_id; } timer_event_t; +/*! + * A composite structure containing device identifiers and security keys + */ typedef struct { /*! * Device IEEE EUI @@ -1070,6 +1073,9 @@ typedef struct { } loramac_keys; +/*! + * A composite structure containing all the timers used in the LoRaWAN operation + */ typedef struct { /*! * Aggregated duty cycle management @@ -1107,6 +1113,9 @@ typedef struct { } lorawan_timers; +/*! + * Global MAC layer configuration parameters + */ typedef struct { /*! diff --git a/features/lwipstack/LWIPInterface.cpp b/features/lwipstack/LWIPInterface.cpp index d4adde9b31e..e713d9f607d 100644 --- a/features/lwipstack/LWIPInterface.cpp +++ b/features/lwipstack/LWIPInterface.cpp @@ -53,7 +53,7 @@ LWIP::Interface *LWIP::Interface::our_if_from_netif(struct netif *netif) return NULL; } -static void add_dns_addr_to_dns_list_index(const u8_t addr_type, const u8_t index) +static void add_dns_addr_to_dns_list_index(const u8_t addr_type, const u8_t index, struct netif *netif) { #if LWIP_IPV6 if (addr_type == IPADDR_TYPE_V6) { @@ -63,14 +63,14 @@ static void add_dns_addr_to_dns_list_index(const u8_t addr_type, const u8_t inde PP_HTONL(0x48600000UL), PP_HTONL(0x00000000UL), PP_HTONL(0x00008888UL)); - dns_setserver(index, &ipv6_dns_addr); + dns_setserver(index, &ipv6_dns_addr, netif); } #endif #if LWIP_IPV4 if (addr_type == IPADDR_TYPE_V4) { /* 8.8.8.8 google */ ip_addr_t ipv4_dns_addr = IPADDR4_INIT(0x08080808); - dns_setserver(index, &ipv4_dns_addr); + dns_setserver(index, &ipv4_dns_addr, netif); } #endif } @@ -92,11 +92,16 @@ static int get_ip_addr_type(const ip_addr_t *ip_addr) #endif } -void LWIP::add_dns_addr(struct netif *lwip_netif) +void LWIP::add_dns_addr(struct netif *lwip_netif, const char *interface_name) { + + if (!netif_check_default(lwip_netif)) { + interface_name = NULL; + } + // Check for existing dns address for (char numdns = 0; numdns < DNS_MAX_SERVERS; numdns++) { - const ip_addr_t *dns_ip_addr = dns_getserver(numdns); + const ip_addr_t *dns_ip_addr = dns_getserver(numdns, interface_name); if (!ip_addr_isany(dns_ip_addr)) { return; } @@ -109,7 +114,7 @@ void LWIP::add_dns_addr(struct netif *lwip_netif) // Add preferred ip version dns address to index 0 if (ip_addr) { addr_type = get_ip_addr_type(ip_addr); - add_dns_addr_to_dns_list_index(addr_type, 0); + add_dns_addr_to_dns_list_index(addr_type, 0, lwip_netif); } #if LWIP_IPV4 && LWIP_IPV6 @@ -121,7 +126,7 @@ void LWIP::add_dns_addr(struct netif *lwip_netif) } addr_type = get_ip_addr_type(ip_addr); // Add the dns address to index 0 - add_dns_addr_to_dns_list_index(addr_type, 0); + add_dns_addr_to_dns_list_index(addr_type, 0, lwip_netif); } if (addr_type == IPADDR_TYPE_V4) { @@ -136,7 +141,7 @@ void LWIP::add_dns_addr(struct netif *lwip_netif) if (ip_addr) { addr_type = get_ip_addr_type(ip_addr); - add_dns_addr_to_dns_list_index(addr_type, 1); + add_dns_addr_to_dns_list_index(addr_type, 1, lwip_netif); } #endif } @@ -224,7 +229,7 @@ void LWIP::Interface::netif_status_irq(struct netif *netif) } #endif if (dns_addr_has_to_be_added && !interface->blocking) { - add_dns_addr(&interface->netif); + add_dns_addr(&interface->netif, interface->get_interface_name(interface->_interface_name)); } if (interface->has_addr_state & HAS_ANY_ADDR) { @@ -267,6 +272,12 @@ char *LWIP::Interface::get_mac_address(char *buf, nsapi_size_t buflen) return buf; } +char *LWIP::Interface::get_interface_name(char *buf) +{ + sprintf(buf, "%c%c%d", netif.name[0], netif.name[1], netif.num); + return buf; +} + char *LWIP::Interface::get_ip_address(char *buf, nsapi_size_t buflen) { const ip_addr_t *addr = LWIP::get_ip_addr(true, &netif); @@ -288,6 +299,33 @@ char *LWIP::Interface::get_ip_address(char *buf, nsapi_size_t buflen) #endif } +char *LWIP::Interface::get_ip_address_if(char *buf, nsapi_size_t buflen, const char *interface_name) +{ + const ip_addr_t *addr; + + if (interface_name == NULL) { + addr = LWIP::get_ip_addr(true, &netif); + } else { + addr = LWIP::get_ip_addr(true, netif_find(interface_name)); + } + if (!addr) { + return NULL; + } +#if LWIP_IPV6 + if (IP_IS_V6(addr)) { + return ip6addr_ntoa_r(ip_2_ip6(addr), buf, buflen); + } +#endif +#if LWIP_IPV4 + if (IP_IS_V4(addr)) { + return ip4addr_ntoa_r(ip_2_ip4(addr), buf, buflen); + } +#endif +#if LWIP_IPV6 && LWIP_IPV4 + return NULL; +#endif +} + char *LWIP::Interface::get_netmask(char *buf, nsapi_size_t buflen) { #if LWIP_IPV4 @@ -429,7 +467,7 @@ nsapi_error_t LWIP::add_l3ip_interface(L3IP &l3ip, bool default_if, OnboardNetwo #if LWIP_IPV4 0, 0, 0, #endif - interface, &LWIP::Interface::emac_if_init, ip_input)) { + interface, &LWIP::Interface::l3ip_if_init, ip_input)) { return NSAPI_ERROR_DEVICE_ERROR; } @@ -457,6 +495,31 @@ nsapi_error_t LWIP::add_l3ip_interface(L3IP &l3ip, bool default_if, OnboardNetwo nsapi_error_t LWIP::remove_l3ip_interface(OnboardNetworkStack::Interface **interface_out) { #if LWIP_L3IP + if ((interface_out != NULL) && (*interface_out != NULL)) { + + Interface *lwip = static_cast(*interface_out); + Interface *node = lwip->list; + + if (lwip->list != NULL) { + if (lwip->list == lwip) { + lwip->list = lwip->list->next; + netif_remove(&node->netif); + delete node; + } else { + while (node->next != NULL && node->next != lwip) { + node = node->next; + } + if (node->next != NULL && node->next == lwip) { + Interface *remove = node->next; + node->next = node->next->next; + remove->l3ip->power_down(); + netif_remove(&remove->netif); + delete remove; + } + } + } + } + return NSAPI_ERROR_OK; #else return NSAPI_ERROR_UNSUPPORTED; @@ -495,7 +558,13 @@ nsapi_error_t LWIP::_add_ppp_interface(void *hw, bool default_if, nsapi_ip_stack return NSAPI_ERROR_UNSUPPORTED; #endif //LWIP_PPP_API } - +void LWIP::set_default_interface(OnboardNetworkStack::Interface *interface) +{ + if (interface) { + default_interface = static_cast(interface); + netif_set_default(&default_interface->netif); + } +} nsapi_error_t LWIP::Interface::bringup(bool dhcp, const char *ip, const char *netmask, const char *gw, const nsapi_ip_stack_t stack, bool block) { @@ -627,7 +696,7 @@ nsapi_error_t LWIP::Interface::bringup(bool dhcp, const char *ip, const char *ne } #endif - add_dns_addr(&netif); + add_dns_addr(&netif, get_interface_name(_interface_name)); return NSAPI_ERROR_OK; } diff --git a/features/lwipstack/LWIPInterfaceEMAC.cpp b/features/lwipstack/LWIPInterfaceEMAC.cpp index 362fc10c750..6b426c223f2 100644 --- a/features/lwipstack/LWIPInterfaceEMAC.cpp +++ b/features/lwipstack/LWIPInterfaceEMAC.cpp @@ -156,7 +156,7 @@ err_t LWIP::Interface::emac_if_init(struct netif *netif) /* Then we write back either what they gave us, or our default */ mbed_if->emac->set_hwaddr(netif->hwaddr); - mbed_if->emac->get_ifname(netif->name, 2); + mbed_if->emac->get_ifname(netif->name, NSAPI_INTERFACE_PREFIX_SIZE); #if LWIP_IPV4 netif->output = etharp_output; diff --git a/features/lwipstack/LWIPInterfaceL3IP.cpp b/features/lwipstack/LWIPInterfaceL3IP.cpp index e15e553fc49..049bffc1955 100644 --- a/features/lwipstack/LWIPInterfaceL3IP.cpp +++ b/features/lwipstack/LWIPInterfaceL3IP.cpp @@ -26,8 +26,8 @@ #include "LWIPStack.h" #if LWIP_L3IP - -err_t LWIP::Interface::l3ip_output(struct netif *netif, struct pbuf *p, const ip4_addr_t *ipaddr) +#if LWIP_IPV4 +err_t LWIP::Interface::l3ip4_output(struct netif *netif, struct pbuf *p, const ip4_addr_t *ipaddr) { /* Increase reference counter since lwip stores handle to pbuf and frees it after output */ @@ -37,7 +37,19 @@ err_t LWIP::Interface::l3ip_output(struct netif *netif, struct pbuf *p, const ip bool ret = mbed_if->l3ip->link_out(p); return ret ? ERR_OK : ERR_IF; } +#endif +#if LWIP_IPV6 +err_t LWIP::Interface::l3ip6_output(struct netif *netif, struct pbuf *p, const ip6_addr_t *ipaddr) +{ + /* Increase reference counter since lwip stores handle to pbuf and frees + it after output */ + pbuf_ref(p); + LWIP::Interface *mbed_if = static_cast(netif->state); + bool ret = mbed_if->l3ip->link_out(p); + return ret ? ERR_OK : ERR_IF; +} +#endif void LWIP::Interface::l3ip_input(net_stack_mem_buf_t *buf) { struct pbuf *p = static_cast(buf); @@ -130,24 +142,24 @@ err_t LWIP::Interface::l3ip_if_init(struct netif *netif) mbed_if->l3ip->set_link_state_cb(mbed::callback(mbed_if, &LWIP::Interface::l3ip_state_change)); /* Interface capabilities */ - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET; + netif->flags = NETIF_FLAG_BROADCAST; if (!mbed_if->l3ip->power_up()) { err = ERR_IF; } netif->mtu = mbed_if->l3ip->get_mtu_size(); - mbed_if->l3ip->get_ifname(netif->name, NSAPI_INTERFACE_NAME_SIZE); + mbed_if->l3ip->get_ifname(netif->name, NSAPI_INTERFACE_PREFIX_SIZE); #if LWIP_IPV4 - netif->output = &LWIP::Interface::l3ip_output; + netif->output = &LWIP::Interface::l3ip4_output; #if LWIP_IGMP netif->igmp_mac_filter = &LWIP::Interface::l3ip_multicast_ipv4_filter; netif->flags |= NETIF_FLAG_IGMP; #endif /* LWIP_IGMP */ #endif /* LWIP_IPV4 */ #if LWIP_IPV6 - //netif->output_ip6 = ethip6_output;//to be done + netif->output_ip6 = &LWIP::Interface::l3ip6_output; #if LWIP_IPV6_MLD netif->mld_mac_filter = &LWIP::Interface::l3ip_multicast_ipv6_filter; netif->flags |= NETIF_FLAG_MLD6; diff --git a/features/lwipstack/LWIPStack.cpp b/features/lwipstack/LWIPStack.cpp index f9ab49f1231..9aeab5011be 100644 --- a/features/lwipstack/LWIPStack.cpp +++ b/features/lwipstack/LWIPStack.cpp @@ -32,6 +32,7 @@ #include "lwip/igmp.h" #include "lwip/dns.h" #include "lwip/udp.h" +#include "lwip/raw.h" #include "lwip/lwip_errno.h" #include "lwip-sys/arch/sys_arch.h" @@ -175,12 +176,12 @@ LWIP::LWIP() arena_init(); } -nsapi_error_t LWIP::get_dns_server(int index, SocketAddress *address) +nsapi_error_t LWIP::get_dns_server(int index, SocketAddress *address, const char *interface_name) { int dns_entries = 0; for (int i = 0; i < DNS_MAX_SERVERS; i++) { - const ip_addr_t *ip_addr = dns_getserver(i); + const ip_addr_t *ip_addr = dns_getserver(i, interface_name); if (!ip_addr_isany(ip_addr)) { if (index == dns_entries) { nsapi_addr_t addr; @@ -509,6 +510,24 @@ nsapi_error_t LWIP::setsockopt(nsapi_socket_t handle, int level, int optname, co struct mbed_lwip_socket *s = (struct mbed_lwip_socket *)handle; switch (optname) { + case NSAPI_BIND_TO_DEVICE: + if (optlen > NSAPI_INTERFACE_NAME_MAX_SIZE) { + return NSAPI_ERROR_UNSUPPORTED; + } + + if (NETCONNTYPE_GROUP(s->conn->type) == NETCONN_TCP) { + s->conn->pcb.tcp->interface_name = (const char *)optval; + } + + if (NETCONNTYPE_GROUP(s->conn->type) == NETCONN_UDP) { + s->conn->pcb.udp->interface_name = (const char *)optval; + } +#if LWIP_RAW + if (NETCONNTYPE_GROUP(s->conn->type) == NETCONN_RAW) { + s->conn->pcb.raw->interface_name = (const char *)optval; + } +#endif + return 0; #if LWIP_TCP case NSAPI_KEEPALIVE: if (optlen != sizeof(int) || NETCONNTYPE_GROUP(s->conn->type) != NETCONN_TCP) { diff --git a/features/lwipstack/LWIPStack.h b/features/lwipstack/LWIPStack.h index f86eff774b4..af3b0b526ba 100644 --- a/features/lwipstack/LWIPStack.h +++ b/features/lwipstack/LWIPStack.h @@ -32,7 +32,7 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { public: - + using NetworkStack::get_ip_address; static LWIP &get_instance(); class Interface : public OnboardNetworkStack::Interface { @@ -80,6 +80,12 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { */ virtual nsapi_connection_status_t get_connection_status() const; + /** Return netif interface name + * + * @return netif name eg "en0" + */ + virtual char *get_interface_name(char *buf); + /** Return MAC address of the network interface * * @return MAC address as "V:W:X:Y:Z" @@ -88,13 +94,21 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { /** Copies IP address of the network interface to user supplied buffer * - * @param emac EMAC HAL implementation for this network interface * @param buf buffer to which IP address will be copied as "W:X:Y:Z" * @param buflen size of supplied buffer * @return Pointer to a buffer, or NULL if the buffer is too small */ virtual char *get_ip_address(char *buf, nsapi_size_t buflen); + /** Copies IP address of the name based network interface to user supplied buffer + * + * @param buf buffer to which IP address will be copied as "W:X:Y:Z" + * @param buflen size of supplied buffer + * @param interface_name naame of the interface + * @return Pointer to a buffer, or NULL if the buffer is too small + */ + virtual char *get_ip_address_if(char *buf, nsapi_size_t buflen, const char *interface_name); + /** Copies netmask of the network interface to user supplied buffer * * @param buf buffer to which netmask will be copied as "W:X:Y:Z" @@ -136,7 +150,12 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { #endif #if LWIP_L3IP - static err_t l3ip_output(struct netif *netif, struct pbuf *p, const ip4_addr_t *ipaddr); +#if LWIP_IPV4 + static err_t l3ip4_output(struct netif *netif, struct pbuf *p, const ip4_addr_t *ipaddr); +#endif +#if LWIP_IPV6 + static err_t l3ip6_output(struct netif *netif, struct pbuf *p, const ip6_addr_t *ipaddr); +#endif void l3ip_input(net_stack_mem_buf_t *buf); void l3ip_state_change(bool up); #if LWIP_IGMP @@ -177,6 +196,7 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { osSemaphoreId_t has_both_addr; #define HAS_BOTH_ADDR 4 #endif + char _interface_name[NSAPI_INTERFACE_NAME_MAX_SIZE]; char has_addr_state; nsapi_connection_status_t connected; bool dhcp_started; @@ -235,10 +255,7 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { /** Remove a network interface from IP stack * - * Connects L3IP layer with the IP stack and initializes all the required infrastructure. - * This function should be called only once for each available interface. - - + * Removes layer 3 IP objects,network interface from stack list, and shutdown device driver . * @param[out] interface_out pointer to stack interface object controlling the L3IP * @return NSAPI_ERROR_OK on success, or error code */ @@ -253,7 +270,7 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { * @param address Destination for the host address * @return 0 on success, negative error code on failure */ - virtual nsapi_error_t get_dns_server(int index, SocketAddress *address); + virtual nsapi_error_t get_dns_server(int index, SocketAddress *address, const char *interface_name); /** Get the local IP address * @@ -261,6 +278,9 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { * or null if not yet connected */ virtual const char *get_ip_address(); + /** Set the network interface as default one + */ + virtual void set_default_interface(OnboardNetworkStack::Interface *interface); protected: LWIP(); @@ -521,7 +541,7 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { static const ip_addr_t *get_ipv4_addr(const struct netif *netif); static const ip_addr_t *get_ipv6_addr(const struct netif *netif); - static void add_dns_addr(struct netif *lwip_netif); + static void add_dns_addr(struct netif *lwip_netif, const char *interface_name); /* Static arena of sockets */ struct mbed_lwip_socket arena[MEMP_NUM_NETCONN]; diff --git a/features/lwipstack/lwip/src/api/lwip_tcpip.c b/features/lwipstack/lwip/src/api/lwip_tcpip.c index c10b5d15955..1be1e75289a 100644 --- a/features/lwipstack/lwip/src/api/lwip_tcpip.c +++ b/features/lwipstack/lwip/src/api/lwip_tcpip.c @@ -187,6 +187,7 @@ tcpip_inpkt(struct pbuf *p, struct netif *inp, netif_input_fn input_fn) msg->type = TCPIP_MSG_INPKT; msg->msg.inp.p = p; + msg->msg.inp.p->netif = inp; msg->msg.inp.netif = inp; msg->msg.inp.input_fn = input_fn; if (sys_mbox_trypost(&mbox, msg) != ERR_OK) { diff --git a/features/lwipstack/lwip/src/apps/snmp/lwip_snmpv3_mbedtls.c b/features/lwipstack/lwip/src/apps/snmp/lwip_snmpv3_mbedtls.c index 0b1eefb87e1..64ca62a64f7 100644 --- a/features/lwipstack/lwip/src/apps/snmp/lwip_snmpv3_mbedtls.c +++ b/features/lwipstack/lwip/src/apps/snmp/lwip_snmpv3_mbedtls.c @@ -47,6 +47,7 @@ #include "mbedtls/md5.h" #include "mbedtls/sha1.h" +#include "mbedtls/platform.h" err_t snmpv3_auth(struct snmp_pbuf_stream* stream, u16_t length, @@ -59,6 +60,11 @@ snmpv3_auth(struct snmp_pbuf_stream* stream, u16_t length, struct snmp_pbuf_stream read_stream; snmp_pbuf_stream_init(&read_stream, stream->pbuf, stream->offset, stream->length); +#if defined(MBEDTLS_PLATFORM_C) + if (mbedtls_platform_setup(NULL) != 0) { + return ERR_ARG; + } +#endif /* MBEDTLS_PLATFORM_C */ if (algo == SNMP_V3_AUTH_ALGO_MD5) { md_info = mbedtls_md_info_from_type(MBEDTLS_MD_MD5); key_len = SNMP_V3_MD5_LEN; @@ -66,12 +72,12 @@ snmpv3_auth(struct snmp_pbuf_stream* stream, u16_t length, md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA1); key_len = SNMP_V3_SHA_LEN; } else { - return ERR_ARG; + goto platform_teardown; } mbedtls_md_init(&ctx); if(mbedtls_md_setup(&ctx, md_info, 1) != 0) { - return ERR_ARG; + goto platform_teardown; } if (mbedtls_md_hmac_starts(&ctx, key, key_len) != 0) { @@ -95,10 +101,17 @@ snmpv3_auth(struct snmp_pbuf_stream* stream, u16_t length, } mbedtls_md_free(&ctx); +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ return ERR_OK; free_md: mbedtls_md_free(&ctx); +platform_teardown: +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ return ERR_ARG; } @@ -117,6 +130,11 @@ snmpv3_crypt(struct snmp_pbuf_stream* stream, u16_t length, struct snmp_pbuf_stream write_stream; snmp_pbuf_stream_init(&read_stream, stream->pbuf, stream->offset, stream->length); snmp_pbuf_stream_init(&write_stream, stream->pbuf, stream->offset, stream->length); +#if defined(MBEDTLS_PLATFORM_C) + if (mbedtls_platform_setup(NULL) != 0) { + return ERR_ARG; + } +#endif /* MBEDTLS_PLATFORM_C */ mbedtls_cipher_init(&ctx); if (algo == SNMP_V3_PRIV_ALGO_DES) { @@ -126,15 +144,15 @@ snmpv3_crypt(struct snmp_pbuf_stream* stream, u16_t length, /* RFC 3414 mandates padding for DES */ if ((length & 0x07) != 0) { - return ERR_ARG; + goto platform_teardown; } cipher_info = mbedtls_cipher_info_from_type(MBEDTLS_CIPHER_DES_CBC); if(mbedtls_cipher_setup(&ctx, cipher_info) != 0) { - return ERR_ARG; + goto platform_teardown } if(mbedtls_cipher_set_padding_mode(&ctx, MBEDTLS_PADDING_NONE) != 0) { - return ERR_ARG; + goto platform_teardown; } if(mbedtls_cipher_setkey(&ctx, key, 8*8, (mode == SNMP_V3_PRIV_MODE_ENCRYPT)? MBEDTLS_ENCRYPT : MBEDTLS_DECRYPT) != 0) { goto error; @@ -174,7 +192,7 @@ snmpv3_crypt(struct snmp_pbuf_stream* stream, u16_t length, cipher_info = mbedtls_cipher_info_from_type(MBEDTLS_CIPHER_AES_128_CFB128); if(mbedtls_cipher_setup(&ctx, cipher_info) != 0) { - return ERR_ARG; + goto platform_teardown; } if(mbedtls_cipher_setkey(&ctx, key, 16*8, (mode == SNMP_V3_PRIV_MODE_ENCRYPT)? MBEDTLS_ENCRYPT : MBEDTLS_DECRYPT) != 0) { goto error; @@ -209,7 +227,7 @@ snmpv3_crypt(struct snmp_pbuf_stream* stream, u16_t length, snmp_pbuf_stream_write(&write_stream, out_byte); } } else { - return ERR_ARG; + goto platform_teardown; } mbedtls_cipher_free(&ctx); @@ -217,7 +235,11 @@ snmpv3_crypt(struct snmp_pbuf_stream* stream, u16_t length, error: mbedtls_cipher_free(&ctx); - return ERR_OK; +platform_teardown: +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ + return ERR_ARG; } #endif /* LWIP_SNMP_V3_CRYPTO */ @@ -237,6 +259,11 @@ snmpv3_password_to_key_md5( u8_t i; u32_t count = 0; +#if defined(MBEDTLS_PLATFORM_C) + if (mbedtls_platform_setup(NULL) != 0) { + goto end; + } +#endif /* MBEDTLS_PLATFORM_C */ mbedtls_md5_init(&MD); /* initialize MD5 */ mbedtls_md5_starts(&MD); @@ -272,6 +299,11 @@ snmpv3_password_to_key_md5( mbedtls_md5_finish(&MD, key); mbedtls_md5_free(&MD); + +end: +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ return; } @@ -290,6 +322,11 @@ snmpv3_password_to_key_sha( u8_t i; u32_t count = 0; +#if defined(MBEDTLS_PLATFORM_C) + if (mbedtls_platform_setup(NULL) != 0) { + goto end; + } +#endif /* MBEDTLS_PLATFORM_C */ mbedtls_sha1_init(&SH); /* initialize SHA */ mbedtls_sha1_starts(&SH); @@ -325,6 +362,11 @@ snmpv3_password_to_key_sha( mbedtls_sha1_finish(&SH, key); mbedtls_sha1_free(&SH); + +end: +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ return; } diff --git a/features/lwipstack/lwip/src/core/ipv4/lwip_dhcp.c b/features/lwipstack/lwip/src/core/ipv4/lwip_dhcp.c index dd354710266..5b7627d3c7d 100644 --- a/features/lwipstack/lwip/src/core/ipv4/lwip_dhcp.c +++ b/features/lwipstack/lwip/src/core/ipv4/lwip_dhcp.c @@ -659,7 +659,7 @@ dhcp_handle_ack(struct netif *netif) for (n = 0; (n < LWIP_DHCP_PROVIDE_DNS_SERVERS) && dhcp_option_given(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n); n++) { ip_addr_t dns_addr; ip_addr_set_ip4_u32(&dns_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n))); - dns_setserver(n, &dns_addr); + dns_setserver(n, &dns_addr, netif); } #endif /* LWIP_DHCP_PROVIDE_DNS_SERVERS */ } diff --git a/features/lwipstack/lwip/src/core/ipv4/lwip_icmp.c b/features/lwipstack/lwip/src/core/ipv4/lwip_icmp.c index 5ee24eedfa1..10adfc458fe 100644 --- a/features/lwipstack/lwip/src/core/ipv4/lwip_icmp.c +++ b/features/lwipstack/lwip/src/core/ipv4/lwip_icmp.c @@ -371,14 +371,15 @@ icmp_send_response(struct pbuf *p, u8_t type, u8_t code) IP_HLEN + ICMP_DEST_UNREACH_DATASIZE); ip4_addr_copy(iphdr_src, iphdr->src); + #ifdef LWIP_HOOK_IP4_ROUTE_SRC { ip4_addr_t iphdr_dst; ip4_addr_copy(iphdr_dst, iphdr->dest); - netif = ip4_route_src(&iphdr_src, &iphdr_dst); + netif = ip4_route_src(&iphdr_src, &iphdr_dst, netif_get_name(p->netif)); } #else - netif = ip4_route(&iphdr_src); + netif = ip4_route(&iphdr_src, netif_get_name(p->netif)); #endif if (netif != NULL) { /* calculate checksum */ diff --git a/features/lwipstack/lwip/src/core/ipv4/lwip_ip4.c b/features/lwipstack/lwip/src/core/ipv4/lwip_ip4.c index 6a14ee89fd7..768765f567c 100644 --- a/features/lwipstack/lwip/src/core/ipv4/lwip_ip4.c +++ b/features/lwipstack/lwip/src/core/ipv4/lwip_ip4.c @@ -126,7 +126,7 @@ ip4_set_default_multicast_netif(struct netif* default_multicast_netif) * LWIP_HOOK_IP4_ROUTE_SRC(). This function only provides he parameters. */ struct netif * -ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src) +ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src, const char *interface_name) { if (src != NULL) { /* when src==NULL, the hook is called from ip4_route(dest) */ @@ -135,7 +135,7 @@ ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src) return netif; } } - return ip4_route(dest); + return ip4_route(dest, interface_name); } #endif /* LWIP_HOOK_IP4_ROUTE_SRC */ @@ -149,7 +149,7 @@ ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src) * @return the netif on which to send to reach dest */ struct netif * -ip4_route(const ip4_addr_t *dest) +ip4_route(const ip4_addr_t *dest, const char *interface_name) { struct netif *netif; @@ -160,6 +160,20 @@ ip4_route(const ip4_addr_t *dest) } #endif /* LWIP_MULTICAST_TX_OPTIONS */ + if(interface_name !=NULL) { + /* iterate through netifs */ + for (netif = netif_list; netif != NULL; netif = netif->next) { + /* is the netif up, does it have a link and a valid address? */ + if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) { + /* interface name matches? */ + if (!strcmp(netif_get_name(netif), interface_name)) { + /* return netif with matched name */ + return netif; + } + } + } + } + /* iterate through netifs */ for (netif = netif_list; netif != NULL; netif = netif->next) { /* is the netif up, does it have a link and a valid address? */ @@ -980,13 +994,13 @@ ip4_output_if_opt_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *d */ err_t ip4_output(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto) + u8_t ttl, u8_t tos, u8_t proto, const char *interface_name) { struct netif *netif; LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p); - if ((netif = ip4_route_src(dest, src)) == NULL) { + if ((netif = ip4_route_src(dest, src, interface_name)) == NULL) { LWIP_DEBUGF(IP_DEBUG, ("ip4_output: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest))); IP_STATS_INC(ip.rterr); diff --git a/features/lwipstack/lwip/src/core/ipv6/lwip_icmp6.c b/features/lwipstack/lwip/src/core/ipv6/lwip_icmp6.c index 323b69a2ab7..ee9cc20f974 100644 --- a/features/lwipstack/lwip/src/core/ipv6/lwip_icmp6.c +++ b/features/lwipstack/lwip/src/core/ipv6/lwip_icmp6.c @@ -311,7 +311,8 @@ icmp6_send_response(struct pbuf *p, u8_t code, u32_t data, u8_t type) ip6_addr_copy(reply_src_local, ip6hdr->dest); reply_dest = &reply_dest_local; reply_src = &reply_src_local; - netif = ip6_route(reply_src, reply_dest); + + netif = ip6_route(reply_src, reply_dest, netif_get_name(p->netif)); if (netif == NULL) { /* drop */ pbuf_free(q); diff --git a/features/lwipstack/lwip/src/core/ipv6/lwip_ip6.c b/features/lwipstack/lwip/src/core/ipv6/lwip_ip6.c index 8a25a48f0ec..9c9c72e9a34 100644 --- a/features/lwipstack/lwip/src/core/ipv6/lwip_ip6.c +++ b/features/lwipstack/lwip/src/core/ipv6/lwip_ip6.c @@ -59,6 +59,7 @@ #include "lwip/mld6.h" #include "lwip/debug.h" #include "lwip/stats.h" +#include #ifdef LWIP_HOOK_FILENAME #include LWIP_HOOK_FILENAME @@ -81,11 +82,24 @@ * @return the netif on which to send to reach dest */ struct netif * -ip6_route(const ip6_addr_t *src, const ip6_addr_t *dest) +ip6_route(const ip6_addr_t *src, const ip6_addr_t *dest, const char *interface_name) { struct netif *netif; s8_t i; + if(interface_name != NULL) { + /* iterate through netifs */ + for (netif = netif_list; netif != NULL; netif = netif->next) { + if (!netif_is_up(netif) || !netif_is_link_up(netif)) { + continue; + } + /* interface name matches? */ + if (!strcmp(netif_get_name(netif), interface_name)) { + /* return netif with matched name */ + return netif; + } + } + } /* If single netif configuration, fast return. */ if ((netif_list != NULL) && (netif_list->next == NULL)) { if (!netif_is_up(netif_list) || !netif_is_link_up(netif_list)) { @@ -955,7 +969,7 @@ ip6_output_if_src(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, */ err_t ip6_output(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, - u8_t hl, u8_t tc, u8_t nexth) + u8_t hl, u8_t tc, u8_t nexth, const char *interface_name) { struct netif *netif; struct ip6_hdr *ip6hdr; @@ -964,13 +978,13 @@ ip6_output(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p); if (dest != LWIP_IP_HDRINCL) { - netif = ip6_route(src, dest); + netif = ip6_route(src, dest, interface_name); } else { /* IP header included in p, read addresses. */ ip6hdr = (struct ip6_hdr *)p->payload; ip6_addr_copy(src_addr, ip6hdr->src); ip6_addr_copy(dest_addr, ip6hdr->dest); - netif = ip6_route(&src_addr, &dest_addr); + netif = ip6_route(&src_addr, &dest_addr, interface_name); } if (netif == NULL) { diff --git a/features/lwipstack/lwip/src/core/ipv6/lwip_nd6.c b/features/lwipstack/lwip/src/core/ipv6/lwip_nd6.c index f6322bc2ce2..d66dbbf79fc 100644 --- a/features/lwipstack/lwip/src/core/ipv6/lwip_nd6.c +++ b/features/lwipstack/lwip/src/core/ipv6/lwip_nd6.c @@ -719,14 +719,14 @@ nd6_input(struct pbuf *p, struct netif *inp) if (htonl(rdnss_opt->lifetime) > 0) { /* TODO implement Lifetime > 0 */ - dns_setserver(rdnss_server_idx++, &rdnss_address); + dns_setserver(rdnss_server_idx++, &rdnss_address, inp); } else { /* TODO implement DNS removal in dns.c */ u8_t s; for (s = 0; s < DNS_MAX_SERVERS; s++) { const ip_addr_t *addr = dns_getserver(s); if(ip_addr_cmp(addr, &rdnss_address)) { - dns_setserver(s, NULL); + dns_setserver(s, NULL, inp); } } } diff --git a/features/lwipstack/lwip/src/core/lwip_dns.c b/features/lwipstack/lwip/src/core/lwip_dns.c index fe87133b7df..b70dec5a004 100644 --- a/features/lwipstack/lwip/src/core/lwip_dns.c +++ b/features/lwipstack/lwip/src/core/lwip_dns.c @@ -305,6 +305,7 @@ static struct dns_table_entry dns_table[DNS_TABLE_SIZE]; static struct dns_req_entry dns_requests[DNS_MAX_REQUESTS]; #endif static ip_addr_t dns_servers[DNS_MAX_SERVERS]; +struct dns_server_interface *multihoming_dns_servers; #if LWIP_IPV4 const ip_addr_t dns_mquery_v4group = DNS_MQUERY_IPV4_GROUP_INIT; @@ -324,7 +325,7 @@ dns_init(void) /* initialize default DNS server address */ ip_addr_t dnsserver; DNS_SERVER_ADDRESS(&dnsserver); - dns_setserver(0, &dnsserver); + dns_setserver(0, &dnsserver, NULL); #endif /* DNS_SERVER_ADDRESS */ #if LWIP_FULL_DNS @@ -366,14 +367,21 @@ dns_init(void) * @param dnsserver IP address of the DNS server to set */ void -dns_setserver(u8_t numdns, const ip_addr_t *dnsserver) +dns_setserver(u8_t numdns, const ip_addr_t *dnsserver, struct netif *netif) { - if (numdns < DNS_MAX_SERVERS) { - if (dnsserver != NULL) { - dns_servers[numdns] = (*dnsserver); - } else { - dns_servers[numdns] = *IP_ADDR_ANY; + + if (netif == NULL || netif_check_default(netif)) { + if (numdns < DNS_MAX_SERVERS) { + if (dnsserver != NULL) { + dns_servers[numdns] = (*dnsserver); + } else { + dns_servers[numdns] = *IP_ADDR_ANY; + } } + } else { + char name[INTERFACE_NAME_MAX_SIZE]; + sprintf(name, "%c%c%d", netif->name[0], netif->name[1], netif->num); + dns_add_interface_server(numdns, name, dnsserver); } } @@ -386,13 +394,112 @@ dns_setserver(u8_t numdns, const ip_addr_t *dnsserver) * server has not been configured. */ const ip_addr_t* -dns_getserver(u8_t numdns) +dns_getserver(u8_t numdns, const char *interface_name) { - if (numdns < DNS_MAX_SERVERS) { - return &dns_servers[numdns]; + if (interface_name == NULL) { + if (numdns < DNS_MAX_SERVERS) { + return &dns_servers[numdns]; + } else { + return IP_ADDR_ANY; + } + } else { + return dns_get_interface_server(numdns, interface_name); + } +} + +/** + * @ingroup dns + * Initialize one of the DNS servers. + * + * @param numdns the index of the DNS server to set must be < DNS_MAX_SERVERS + * @param dnsserver IP address of the DNS server to set + */ +void +dns_add_interface_server(u8_t numdns, const char *interface_name, const ip_addr_t *dnsserver) +{ + struct dns_server_interface *new_interface_server; + + if (numdns >= DNS_MAX_SERVERS) { + return; + } + + if (multihoming_dns_servers != NULL) { + // if interface server already exists on the list just update it + for (new_interface_server = multihoming_dns_servers; new_interface_server != NULL; new_interface_server = new_interface_server->next) { + if (!strcmp(interface_name, new_interface_server->interface_name)) { + new_interface_server->dns_servers[numdns] = (*dnsserver); + return; + } + } + } + // add new dns server to the list tail + new_interface_server = mem_malloc(sizeof(struct dns_server_interface)); + strncpy(new_interface_server->interface_name, interface_name, INTERFACE_NAME_MAX_SIZE); + new_interface_server->dns_servers[numdns] = (*dnsserver); + new_interface_server->next = NULL; + + if (multihoming_dns_servers == NULL) { + multihoming_dns_servers = new_interface_server; } else { + struct dns_server_interface *tail; + tail = multihoming_dns_servers; + + while (tail->next != NULL) { + tail = tail->next; + } + tail->next = new_interface_server; + + } +} + +void +dns_remove_interface_servers(const char *interface_name) +{ + struct dns_server_interface *temp = multihoming_dns_servers; + struct dns_server_interface *prev = NULL; + + if (temp != NULL && !strcmp(interface_name, temp->interface_name)) { + multihoming_dns_servers = temp->next; + mem_free(temp); + return; + } + + while (temp != NULL && strcmp(interface_name, temp->interface_name)) { + prev = temp; + temp = temp->next; + } + + if (temp == NULL) { + return; + } + + prev->next = temp->next; + mem_free(temp); +} + +/** + * @ingroup dns + * Obtain one of the currently configured DNS server. + * + * @param numdns the index of the DNS server + * @return IP address of the indexed DNS server or "ip_addr_any" if the DNS + * server has not been configured. + */ +const ip_addr_t * +dns_get_interface_server(u8_t numdns, const char *interface_name) +{ + struct dns_server_interface *interface_server; + + if (numdns < DNS_MAX_SERVERS) { return IP_ADDR_ANY; } + + for (interface_server = multihoming_dns_servers; interface_server != NULL; interface_server = interface_server->next) { + if (!strcmp(interface_name, interface_server->interface_name)) { + return &interface_server->dns_servers[numdns]; + } + } + return IP_ADDR_ANY; } /** diff --git a/features/lwipstack/lwip/src/core/lwip_netif.c b/features/lwipstack/lwip/src/core/lwip_netif.c index 951b3378b72..4e6da847892 100644 --- a/features/lwipstack/lwip/src/core/lwip_netif.c +++ b/features/lwipstack/lwip/src/core/lwip_netif.c @@ -105,6 +105,7 @@ struct netif *netif_list; struct netif *netif_default; static u8_t netif_num; +static char netif_name [INTERFACE_NAME_MAX_SIZE]; #if LWIP_NUM_NETIF_CLIENT_DATA > 0 static u8_t netif_client_id; @@ -465,6 +466,20 @@ netif_remove(struct netif *netif) LWIP_DEBUGF( NETIF_DEBUG, ("netif_remove: removed netif\n") ); } +/** + * @ingroup netif + * Get a network interface name + * + * @param netif + * @return name the name of the netif (like netif->name) plus concatenated number + * in ascii representation (e.g. 'en0') + */ +const char * +netif_get_name(struct netif *netif) +{ + sprintf(netif_name, "%c%c%d", netif->name[0], netif->name[1], netif->num); + return netif_name; +} /** * @ingroup netif * Find a network interface by searching for its name @@ -619,6 +634,26 @@ netif_set_default(struct netif *netif) netif ? netif->name[0] : '\'', netif ? netif->name[1] : '\'')); } +/** + * @ingroup netif + * Checks if network interface is the default network interface + * @param netif the default network interface + * @return true if netif is set to default one + * otherwise return false + */ +bool +netif_check_default(struct netif *netif) +{ + if (netif == NULL) { + return false; + } + if (netif_default == netif) { + return true; + } else { + return false; + } +} + /** * @ingroup netif * Bring an interface up, available for processing diff --git a/features/lwipstack/lwip/src/core/lwip_raw.c b/features/lwipstack/lwip/src/core/lwip_raw.c index 80cf9ec64bc..8f7d2c38d6c 100644 --- a/features/lwipstack/lwip/src/core/lwip_raw.c +++ b/features/lwipstack/lwip/src/core/lwip_raw.c @@ -322,9 +322,9 @@ raw_sendto(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr) if(IP_IS_ANY_TYPE_VAL(pcb->local_ip)) { /* Don't call ip_route() with IP_ANY_TYPE */ - netif = ip_route(IP46_ADDR_ANY(IP_GET_TYPE(ipaddr)), ipaddr); + netif = ip_route(IP46_ADDR_ANY(IP_GET_TYPE(ipaddr)), ipaddr, pcb->interface_name); } else { - netif = ip_route(&pcb->local_ip, ipaddr); + netif = ip_route(&pcb->local_ip, ipaddr, pcb->interface_name); } if (netif == NULL) { diff --git a/features/lwipstack/lwip/src/core/lwip_tcp.c b/features/lwipstack/lwip/src/core/lwip_tcp.c index 17b681e5901..272a0528d2e 100644 --- a/features/lwipstack/lwip/src/core/lwip_tcp.c +++ b/features/lwipstack/lwip/src/core/lwip_tcp.c @@ -273,7 +273,7 @@ tcp_close_shutdown(struct tcp_pcb *pcb, u8_t rst_on_unacked_data) /* don't call tcp_abort here: we must not deallocate the pcb since that might not be expected when calling tcp_close */ tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - pcb->local_port, pcb->remote_port); + pcb->local_port, pcb->remote_port, pcb->interface_name); tcp_pcb_purge(pcb); TCP_RMV_ACTIVE(pcb); @@ -512,7 +512,7 @@ tcp_abandon(struct tcp_pcb *pcb, int reset) tcp_backlog_accepted(pcb); if (send_rst) { LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n")); - tcp_rst(seqno, ackno, &pcb->local_ip, &pcb->remote_ip, local_port, pcb->remote_port); + tcp_rst(seqno, ackno, &pcb->local_ip, &pcb->remote_ip, local_port, pcb->remote_port, pcb->interface_name); } last_state = pcb->state; memp_free(MEMP_TCP_PCB, pcb); @@ -890,7 +890,7 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port, /* no local IP address set, yet. */ struct netif *netif; const ip_addr_t *local_ip; - ip_route_get_local_ip(&pcb->local_ip, &pcb->remote_ip, netif, local_ip); + ip_route_get_local_ip(&pcb->local_ip, &pcb->remote_ip, netif, local_ip, pcb->interface_name); if ((netif == NULL) || (local_ip == NULL)) { /* Don't even try to send a SYN packet if we have no route since that will fail. */ @@ -944,7 +944,7 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port, The send MSS is updated when an MSS option is received. */ pcb->mss = INITIAL_MSS; #if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip); + pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip, pcb->interface_name); #endif /* TCP_CALCULATE_EFF_SEND_MSS */ pcb->cwnd = 1; #if LWIP_CALLBACK_API @@ -1162,7 +1162,7 @@ tcp_slowtmr(void) if (pcb_reset) { tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - pcb->local_port, pcb->remote_port); + pcb->local_port, pcb->remote_port, pcb->interface_name); } err_arg = pcb->callback_arg; @@ -1911,13 +1911,14 @@ tcp_eff_send_mss_impl(u16_t sendmss, const ip_addr_t *dest #if LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING , const ip_addr_t *src #endif /* LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING */ + , const char *interface_name ) { u16_t mss_s; struct netif *outif; s16_t mtu; - outif = ip_route(src, dest); + outif = ip_route(src, dest, interface_name); #if LWIP_IPV6 #if LWIP_IPV4 if (IP_IS_V6(dest)) diff --git a/features/lwipstack/lwip/src/core/lwip_tcp_in.c b/features/lwipstack/lwip/src/core/lwip_tcp_in.c index ba879284f27..9258b57f7bd 100644 --- a/features/lwipstack/lwip/src/core/lwip_tcp_in.c +++ b/features/lwipstack/lwip/src/core/lwip_tcp_in.c @@ -517,8 +517,9 @@ tcp_input(struct pbuf *p, struct netif *inp) if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) { TCP_STATS_INC(tcp.proterr); TCP_STATS_INC(tcp.drop); + tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), - ip_current_src_addr(), tcphdr->dest, tcphdr->src); + ip_current_src_addr(), tcphdr->dest, tcphdr->src, netif_get_name(inp)); } pbuf_free(p); } @@ -560,7 +561,7 @@ tcp_listen_input(struct tcp_pcb_listen *pcb) RST. */ LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_listen_input: ACK in LISTEN, sending reset\n")); tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), - ip_current_src_addr(), tcphdr->dest, tcphdr->src); + ip_current_src_addr(), tcphdr->dest, tcphdr->src, pcb->interface_name); } else if (flags & TCP_SYN) { LWIP_DEBUGF(TCP_DEBUG, ("TCP connection request %"U16_F" -> %"U16_F".\n", tcphdr->src, tcphdr->dest)); #if TCP_LISTEN_BACKLOG @@ -615,7 +616,7 @@ tcp_listen_input(struct tcp_pcb_listen *pcb) npcb->snd_wnd_max = npcb->snd_wnd; #if TCP_CALCULATE_EFF_SEND_MSS - npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, &npcb->remote_ip); + npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, &npcb->remote_ip, npcb->interface_name); #endif /* TCP_CALCULATE_EFF_SEND_MSS */ MIB2_STATS_INC(mib2.tcppassiveopens); @@ -658,7 +659,7 @@ tcp_timewait_input(struct tcp_pcb *pcb) if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd)) { /* If the SYN is in the window it is an error, send a reset */ tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), - ip_current_src_addr(), tcphdr->dest, tcphdr->src); + ip_current_src_addr(), tcphdr->dest, tcphdr->src, pcb->interface_name); return; } } else if (flags & TCP_FIN) { @@ -765,7 +766,7 @@ tcp_process(struct tcp_pcb *pcb) pcb->state = ESTABLISHED; #if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip); + pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip, pcb->interface_name); #endif /* TCP_CALCULATE_EFF_SEND_MSS */ pcb->cwnd = LWIP_TCP_CALC_INITIAL_CWND(pcb->mss); @@ -808,7 +809,7 @@ tcp_process(struct tcp_pcb *pcb) else if (flags & TCP_ACK) { /* send a RST to bring the other side in a non-synchronized state. */ tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), - ip_current_src_addr(), tcphdr->dest, tcphdr->src); + ip_current_src_addr(), tcphdr->dest, tcphdr->src, pcb->interface_name); /* Resend SYN immediately (don't wait for rto timeout) to establish connection faster, but do not send more SYNs than we otherwise would have, or we might get caught in a loop on loopback interfaces. */ @@ -869,7 +870,7 @@ tcp_process(struct tcp_pcb *pcb) } else { /* incorrect ACK number, send RST */ tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), - ip_current_src_addr(), tcphdr->dest, tcphdr->src); + ip_current_src_addr(), tcphdr->dest, tcphdr->src, pcb->interface_name); } } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { /* Looks like another copy of the SYN - retransmit our SYN-ACK */ diff --git a/features/lwipstack/lwip/src/core/lwip_tcp_out.c b/features/lwipstack/lwip/src/core/lwip_tcp_out.c index 2435408aeb8..927038c1ef6 100644 --- a/features/lwipstack/lwip/src/core/lwip_tcp_out.c +++ b/features/lwipstack/lwip/src/core/lwip_tcp_out.c @@ -953,7 +953,7 @@ tcp_send_empty_ack(struct tcp_pcb *pcb) } #endif - netif = ip_route(&pcb->local_ip, &pcb->remote_ip); + netif = ip_route(&pcb->local_ip, &pcb->remote_ip, pcb->interface_name); if (netif == NULL) { err = ERR_RTE; } else { @@ -1034,7 +1034,7 @@ tcp_output(struct tcp_pcb *pcb) for (; useg->next != NULL; useg = useg->next); } - netif = ip_route(&pcb->local_ip, &pcb->remote_ip); + netif = ip_route(&pcb->local_ip, &pcb->remote_ip, pcb->interface_name); if (netif == NULL) { return ERR_RTE; } @@ -1224,7 +1224,7 @@ tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb, struct netif *netif if (seg->flags & TF_SEG_OPTS_MSS) { u16_t mss; #if TCP_CALCULATE_EFF_SEND_MSS - mss = tcp_eff_send_mss(TCP_MSS, &pcb->local_ip, &pcb->remote_ip); + mss = tcp_eff_send_mss(TCP_MSS, &pcb->local_ip, &pcb->remote_ip, pcb->interface_name); #else /* TCP_CALCULATE_EFF_SEND_MSS */ mss = TCP_MSS; #endif /* TCP_CALCULATE_EFF_SEND_MSS */ @@ -1343,7 +1343,7 @@ tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb, struct netif *netif void tcp_rst(u32_t seqno, u32_t ackno, const ip_addr_t *local_ip, const ip_addr_t *remote_ip, - u16_t local_port, u16_t remote_port) + u16_t local_port, u16_t remote_port, const char *interface_name) { struct pbuf *p; struct tcp_hdr *tcphdr; @@ -1373,7 +1373,7 @@ tcp_rst(u32_t seqno, u32_t ackno, TCP_STATS_INC(tcp.xmit); MIB2_STATS_INC(mib2.tcpoutrsts); - netif = ip_route(local_ip, remote_ip); + netif = ip_route(local_ip, remote_ip, interface_name); if (netif != NULL) { #if CHECKSUM_GEN_TCP IF__NETIF_CHECKSUM_ENABLED(netif, NETIF_CHECKSUM_GEN_TCP) { @@ -1548,7 +1548,7 @@ tcp_keepalive(struct tcp_pcb *pcb) ("tcp_keepalive: could not allocate memory for pbuf\n")); return ERR_MEM; } - netif = ip_route(&pcb->local_ip, &pcb->remote_ip); + netif = ip_route(&pcb->local_ip, &pcb->remote_ip, pcb->interface_name); if (netif == NULL) { err = ERR_RTE; } else { @@ -1642,7 +1642,7 @@ tcp_zero_window_probe(struct tcp_pcb *pcb) pcb->snd_nxt = snd_nxt; } - netif = ip_route(&pcb->local_ip, &pcb->remote_ip); + netif = ip_route(&pcb->local_ip, &pcb->remote_ip, pcb->interface_name); if (netif == NULL) { err = ERR_RTE; } else { diff --git a/features/lwipstack/lwip/src/core/lwip_udp.c b/features/lwipstack/lwip/src/core/lwip_udp.c index ce2e3d295ff..d3a9ebe26a6 100644 --- a/features/lwipstack/lwip/src/core/lwip_udp.c +++ b/features/lwipstack/lwip/src/core/lwip_udp.c @@ -548,9 +548,9 @@ udp_sendto_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, /* find the outgoing network interface for this packet */ if(IP_IS_ANY_TYPE_VAL(pcb->local_ip)) { /* Don't call ip_route() with IP_ANY_TYPE */ - netif = ip_route(IP46_ADDR_ANY(IP_GET_TYPE(dst_ip_route)), dst_ip_route); + netif = ip_route(IP46_ADDR_ANY(IP_GET_TYPE(dst_ip_route)), dst_ip_route, pcb->interface_name); } else { - netif = ip_route(&pcb->local_ip, dst_ip_route); + netif = ip_route(&pcb->local_ip, dst_ip_route, pcb->interface_name); } /* no outgoing network interface could be found? */ diff --git a/features/lwipstack/lwip/src/include/lwip/dns.h b/features/lwipstack/lwip/src/include/lwip/dns.h index 1453d723413..392d8672056 100644 --- a/features/lwipstack/lwip/src/include/lwip/dns.h +++ b/features/lwipstack/lwip/src/include/lwip/dns.h @@ -49,6 +49,12 @@ extern "C" { #endif +struct dns_server_interface { + char interface_name [INTERFACE_NAME_MAX_SIZE]; + ip_addr_t dns_servers[DNS_MAX_SERVERS]; + struct dns_server_interface *next; +}; + /** DNS timer period */ #define DNS_TMR_INTERVAL 1000 @@ -103,8 +109,11 @@ typedef void (*dns_found_callback)(const char *name, const ip_addr_t *ipaddr, vo void dns_init(void); void dns_tmr(void); -void dns_setserver(u8_t numdns, const ip_addr_t *dnsserver); -const ip_addr_t* dns_getserver(u8_t numdns); +void dns_setserver(u8_t numdns, const ip_addr_t *dnsserver, struct netif *netif); +const ip_addr_t* dns_getserver(u8_t numdns, const char *interface_name); +void dns_add_interface_server(u8_t numdns, const char *interface_name, const ip_addr_t *dnsserver); +void dns_remove_interface_servers(const char *interface_name); +const ip_addr_t* dns_get_interface_server(u8_t numdns, const char *interface_name); err_t dns_gethostbyname(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg); err_t dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr, diff --git a/features/lwipstack/lwip/src/include/lwip/ip.h b/features/lwipstack/lwip/src/include/lwip/ip.h index 0673be9b4a8..d6a45027128 100644 --- a/features/lwipstack/lwip/src/include/lwip/ip.h +++ b/features/lwipstack/lwip/src/include/lwip/ip.h @@ -74,16 +74,18 @@ extern "C" { changes to this common part are made in one location instead of having to change all PCB structs. */ #define IP_PCB \ - /* ip addresses in network byte order */ \ + /* ip addresses in network byte order */ \ ip_addr_t local_ip; \ ip_addr_t remote_ip; \ /* Socket options */ \ u8_t so_options; \ /* Type Of Service */ \ u8_t tos; \ - /* Time To Live */ \ - u8_t ttl \ - /* link layer address resolution hint */ \ + /* Time To Live */ \ + u8_t ttl; \ + /* interface_name */ \ + const char* interface_name \ + /* link layer address resolution hint */ \ IP_PCB_ADDRHINT struct ip_pcb { @@ -252,10 +254,10 @@ extern struct ip_globals ip_data; * @ingroup ip * Get netif for address combination. See \ref ip6_route and \ref ip4_route */ -#define ip_route(src, dest) \ +#define ip_route(src, dest, interface_name) \ (IP_IS_V6(dest) ? \ - ip6_route(ip_2_ip6(src), ip_2_ip6(dest)) : \ - ip4_route_src(ip_2_ip4(dest), ip_2_ip4(src))) + ip6_route(ip_2_ip6(src), ip_2_ip6(dest), interface_name) : \ + ip4_route_src(ip_2_ip4(dest), ip_2_ip4(src), interface_name)) /** * @ingroup ip * Get netif for IP. @@ -277,8 +279,8 @@ err_t ip_input(struct pbuf *p, struct netif *inp); ip4_output_if_src(p, src, dest, ttl, tos, proto, netif) #define ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) \ ip4_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) -#define ip_route(src, dest) \ - ip4_route_src(dest, src) +#define ip_route(src, dest, interface_name) \ + ip4_route_src(dest, src, interface_name) #define ip_netif_get_local_ip(netif, dest) \ ip4_netif_get_local_ip(netif) #define ip_debug_print(is_ipv6, p) ip4_debug_print(p) @@ -295,8 +297,8 @@ err_t ip_input(struct pbuf *p, struct netif *inp); ip6_output_if_src(p, src, dest, ttl, tos, proto, netif) #define ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) \ ip6_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) -#define ip_route(src, dest) \ - ip6_route(src, dest) +#define ip_route(src, dest, interface_name) \ + ip6_route(src, dest, interface_name) #define ip_netif_get_local_ip(netif, dest) \ ip6_netif_get_local_ip(netif, dest) #define ip_debug_print(is_ipv6, p) ip6_debug_print(p) @@ -305,8 +307,8 @@ err_t ip_input(struct pbuf *p, struct netif *inp); #endif /* LWIP_IPV6 */ -#define ip_route_get_local_ip(src, dest, netif, ipaddr) do { \ - (netif) = ip_route(src, dest); \ +#define ip_route_get_local_ip(src, dest, netif, ipaddr, interface_name) do { \ + (netif) = ip_route(src, dest, interface_name); \ (ipaddr) = ip_netif_get_local_ip(netif, dest); \ }while(0) diff --git a/features/lwipstack/lwip/src/include/lwip/ip4.h b/features/lwipstack/lwip/src/include/lwip/ip4.h index 48246ecc257..b8a5ae8647d 100644 --- a/features/lwipstack/lwip/src/include/lwip/ip4.h +++ b/features/lwipstack/lwip/src/include/lwip/ip4.h @@ -62,15 +62,15 @@ extern "C" { #define IP_OPTIONS_SEND (LWIP_IPV4 && LWIP_IGMP) #define ip_init() /* Compatibility define, no init needed. */ -struct netif *ip4_route(const ip4_addr_t *dest); +struct netif *ip4_route(const ip4_addr_t *dest, const char *interface_name); #if LWIP_IPV4_SRC_ROUTING -struct netif *ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src); +struct netif *ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src, const char *interface_name); #else /* LWIP_IPV4_SRC_ROUTING */ -#define ip4_route_src(dest, src) ip4_route(dest) +#define ip4_route_src(dest, src, interface_name) ip4_route(dest, interface_name) #endif /* LWIP_IPV4_SRC_ROUTING */ err_t ip4_input(struct pbuf *p, struct netif *inp); err_t ip4_output(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto); + u8_t ttl, u8_t tos, u8_t proto, const char *interface_name); err_t ip4_output_if(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, u8_t ttl, u8_t tos, u8_t proto, struct netif *netif); err_t ip4_output_if_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, diff --git a/features/lwipstack/lwip/src/include/lwip/ip6.h b/features/lwipstack/lwip/src/include/lwip/ip6.h index 099b94fb74f..7b3a7c243a3 100644 --- a/features/lwipstack/lwip/src/include/lwip/ip6.h +++ b/features/lwipstack/lwip/src/include/lwip/ip6.h @@ -57,11 +57,11 @@ extern "C" { #endif -struct netif *ip6_route(const ip6_addr_t *src, const ip6_addr_t *dest); +struct netif *ip6_route(const ip6_addr_t *src, const ip6_addr_t *dest, const char *interface_name); const ip_addr_t *ip6_select_source_address(struct netif *netif, const ip6_addr_t * dest); err_t ip6_input(struct pbuf *p, struct netif *inp); err_t ip6_output(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, - u8_t hl, u8_t tc, u8_t nexth); + u8_t hl, u8_t tc, u8_t nexth, const char *interface_name); err_t ip6_output_if(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, u8_t hl, u8_t tc, u8_t nexth, struct netif *netif); err_t ip6_output_if_src(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, diff --git a/features/lwipstack/lwip/src/include/lwip/netif.h b/features/lwipstack/lwip/src/include/lwip/netif.h index f4b70f93a7c..e41b23ae9bf 100644 --- a/features/lwipstack/lwip/src/include/lwip/netif.h +++ b/features/lwipstack/lwip/src/include/lwip/netif.h @@ -37,6 +37,7 @@ #ifndef LWIP_HDR_NETIF_H #define LWIP_HDR_NETIF_H +#include #include "lwip/opt.h" #define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF) @@ -380,7 +381,15 @@ void netif_remove(struct netif * netif); structure. */ struct netif *netif_find(const char *name); +/* Returns a network interface name in the form + "et0", where the first two letters are the "name" field in the + netif structure, and the digit is in the num field in the same + structure. */ +const char *netif_get_name(struct netif *netif); + void netif_set_default(struct netif *netif); +bool netif_check_default(struct netif *netif); + #if LWIP_IPV4 void netif_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr); diff --git a/features/lwipstack/lwip/src/include/lwip/pbuf.h b/features/lwipstack/lwip/src/include/lwip/pbuf.h index 90610461ea5..2c77b3534eb 100644 --- a/features/lwipstack/lwip/src/include/lwip/pbuf.h +++ b/features/lwipstack/lwip/src/include/lwip/pbuf.h @@ -170,6 +170,7 @@ struct pbuf { * the stack itself, or pbuf->next pointers from a chain. */ u16_t ref; + struct netif *netif; }; diff --git a/features/lwipstack/lwip/src/include/lwip/priv/tcp_priv.h b/features/lwipstack/lwip/src/include/lwip/priv/tcp_priv.h index 73e8967e47d..ceb0cd6e24a 100644 --- a/features/lwipstack/lwip/src/include/lwip/priv/tcp_priv.h +++ b/features/lwipstack/lwip/src/include/lwip/priv/tcp_priv.h @@ -453,7 +453,7 @@ void tcp_rexmit_seg(struct tcp_pcb *pcb, struct tcp_seg *seg); void tcp_rst(u32_t seqno, u32_t ackno, const ip_addr_t *local_ip, const ip_addr_t *remote_ip, - u16_t local_port, u16_t remote_port); + u16_t local_port, u16_t remote_port, const char *interface_name); u32_t tcp_next_iss(struct tcp_pcb *pcb); @@ -466,11 +466,12 @@ u16_t tcp_eff_send_mss_impl(u16_t sendmss, const ip_addr_t *dest #if LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING , const ip_addr_t *src #endif /* LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING */ + , const char *interface_name ); #if LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING -#define tcp_eff_send_mss(sendmss, src, dest) tcp_eff_send_mss_impl(sendmss, dest, src) +#define tcp_eff_send_mss(sendmss, src, dest, interface_name) tcp_eff_send_mss_impl(sendmss, dest, src, interface_name) #else /* LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING */ -#define tcp_eff_send_mss(sendmss, src, dest) tcp_eff_send_mss_impl(sendmss, dest) +#define tcp_eff_send_mss(sendmss, src, dest, interface_name) tcp_eff_send_mss_impl(sendmss, dest, interface_name) #endif /* LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING */ #endif /* TCP_CALCULATE_EFF_SEND_MSS */ diff --git a/features/lwipstack/lwip/src/netif/ppp/lwip_ppp.c b/features/lwipstack/lwip/src/netif/ppp/lwip_ppp.c index 8b77765e5aa..1374236a54d 100644 --- a/features/lwipstack/lwip/src/netif/ppp/lwip_ppp.c +++ b/features/lwipstack/lwip/src/netif/ppp/lwip_ppp.c @@ -1128,9 +1128,9 @@ int sdns(ppp_pcb *pcb, u32_t ns1, u32_t ns2) { LWIP_UNUSED_ARG(pcb); ip_addr_set_ip4_u32(&ns, ns1); - dns_setserver(0, &ns); + dns_setserver(0, &ns, NULL); ip_addr_set_ip4_u32(&ns, ns2); - dns_setserver(1, &ns); + dns_setserver(1, &ns, NULL); return 1; } @@ -1143,15 +1143,15 @@ int cdns(ppp_pcb *pcb, u32_t ns1, u32_t ns2) { ip_addr_t nsb; LWIP_UNUSED_ARG(pcb); - nsa = dns_getserver(0); + nsa = dns_getserver(0, NULL); ip_addr_set_ip4_u32(&nsb, ns1); if (ip_addr_cmp(nsa, &nsb)) { - dns_setserver(0, IP_ADDR_ANY); + dns_setserver(0, IP_ADDR_ANY, NULL); } - nsa = dns_getserver(1); + nsa = dns_getserver(1, NULL); ip_addr_set_ip4_u32(&nsb, ns2); if (ip_addr_cmp(nsa, &nsb)) { - dns_setserver(1, IP_ADDR_ANY); + dns_setserver(1, IP_ADDR_ANY, NULL); } return 1; } diff --git a/features/lwipstack/lwipopts.h b/features/lwipstack/lwipopts.h index 326d2b0ba3b..9deced5ab22 100644 --- a/features/lwipstack/lwipopts.h +++ b/features/lwipstack/lwipopts.h @@ -24,7 +24,7 @@ #define LWIP_TIMEVAL_PRIVATE 0 #include #endif - +#include "nsapi_types.h" // Operating System #define NO_SYS 0 @@ -339,7 +339,14 @@ #define LWIP_ETHERNET 0 #endif // MBED_CONF_LWIP_ETHERNET_ENABLED -#define LWIP_L3IP 0 +#if MBED_CONF_LWIP_L3IP_ENABLED +#define LWIP_L3IP 1 +#else +#define LWIP_L3IP 0 +#endif + +//Maximum size of network interface name +#define INTERFACE_NAME_MAX_SIZE NSAPI_INTERFACE_NAME_MAX_SIZE // Note generic macro name used rather than MBED_CONF_LWIP_PPP_ENABLED // to allow users like PPPCellularInterface to detect that nsapi_ppp.h is available. #if NSAPI_PPP_AVAILABLE diff --git a/features/lwipstack/mbed_lib.json b/features/lwipstack/mbed_lib.json index 245203f60f8..72e5efc0cdd 100644 --- a/features/lwipstack/mbed_lib.json +++ b/features/lwipstack/mbed_lib.json @@ -25,6 +25,10 @@ "help": "Enable support for Ethernet interfaces", "value": true }, + "l3ip-enabled": { + "help": "Enable support for L3IP interfaces", + "value": false + }, "debug-enabled": { "help": "Enable debug trace support", "value": false @@ -130,10 +134,10 @@ "pbuf-pool-size" : 10 }, "STM": { - "mem-size": 25600 + "mem-size": 2310 }, "Freescale": { - "mem-size": 16384 + "mem-size": 33270 }, "LPC1768": { "mem-size": 16362 diff --git a/features/lwipstack/ppp_lwip.cpp b/features/lwipstack/ppp_lwip.cpp index a861267c241..683d02631c3 100644 --- a/features/lwipstack/ppp_lwip.cpp +++ b/features/lwipstack/ppp_lwip.cpp @@ -130,11 +130,11 @@ static void ppp_link_status(ppp_pcb *pcb, int err_code, void *ctx) tr_debug(" netmask = %s", ipaddr_ntoa(&ppp_netif(pcb)->netmask)); #if LWIP_DNS const ip_addr_t *ns; - ns = dns_getserver(0); + ns = dns_getserver(0, NULL); if (ns) { tr_debug(" dns1 = %s", ipaddr_ntoa(ns)); } - ns = dns_getserver(1); + ns = dns_getserver(1, NULL); if (ns) { tr_debug(" dns2 = %s", ipaddr_ntoa(ns)); } diff --git a/features/mbedtls/VERSION.txt b/features/mbedtls/VERSION.txt index a85e9b07f86..249c0cd89b5 100644 --- a/features/mbedtls/VERSION.txt +++ b/features/mbedtls/VERSION.txt @@ -1,2 +1 @@ mbedtls-2.15.1 -mbedcrypto-0.1.0b2 diff --git a/features/mbedtls/importer/Makefile b/features/mbedtls/importer/Makefile index a9adff62d3a..046e86405e3 100644 --- a/features/mbedtls/importer/Makefile +++ b/features/mbedtls/importer/Makefile @@ -32,34 +32,15 @@ MBED_TLS_REPO_URL ?= git@github.com:ARMmbed/mbedtls-restricted.git # Translate between mbed TLS namespace and mbed namespace TARGET_PREFIX:=../ -TARGET_PREFIX_CRYPTO:=../mbed-crypto/ TARGET_SRC:=$(TARGET_PREFIX)src TARGET_INC:=$(TARGET_PREFIX)inc TARGET_TESTS:=$(TARGET_PREFIX)TESTS -# New folder structure is introduced here for targets with Secured-Partition-Environment -# and Non-Secured-Partition-Environment, below documentation for each folder: -# COMPONENT_PSA_SRV_IMPL - include secure service business logic implementation -# code. For example Mbed Crypto or secure time core logic -TARGET_SRV_IMPL:=$(TARGET_PREFIX_CRYPTO)/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL -# COMPONENT_SPE - include code that compiles ONLY to secure image and never -# compiles to non-secure image -TARGET_SPE:=$(TARGET_PREFIX_CRYPTO)/platform/TARGET_PSA/COMPONENT_SPE -# The folder contain specific target implementation using hardware. -TARGET_PSA_DRIVERS:=$(TARGET_PREFIX_CRYPTO)/targets -# COMPONENT_NSPE - include code that compiles ONLY to non-secure image and -# never compiles to secure image -TARGET_NSPE:=$(TARGET_SRV_IMPL)/COMPONENT_NSPE - # mbed TLS source directory - hidden from mbed via TARGET_IGNORE MBED_TLS_DIR:=TARGET_IGNORE/mbedtls MBED_TLS_API:=$(MBED_TLS_DIR)/include/mbedtls MBED_TLS_GIT_CFG=$(MBED_TLS_DIR)/.git/config -# Mbed Crypto directory - hidden from mbed via TARGET_IGNORE -MBED_CRYPTO_DIR:=$(MBED_TLS_DIR)/crypto -MBED_CRYPTO_API:=$(MBED_CRYPTO_DIR)/include/psa - .PHONY: all deploy deploy-tests rsync mbedtls clean update all: mbedtls @@ -81,23 +62,6 @@ rsync: cp $(MBED_TLS_DIR)/LICENSE $(TARGET_PREFIX) cp $(MBED_TLS_DIR)/apache-2.0.txt $(TARGET_PREFIX) # - # Create Mbed Crypto target folder - mkdir -p $(TARGET_PREFIX_CRYPTO) - # - # Copying Mbed Crypto into Mbed OS.. - rm -rf $(TARGET_SRV_IMPL) - rm -rf $(TARGET_SPE) - - mkdir -p $(TARGET_SRV_IMPL) - mkdir -p $(TARGET_SPE) - mkdir -p $(TARGET_NSPE) - mkdir -p $(TARGET_PSA_DRIVERS) - - rsync -a --delete --exclude='crypto_struct.h' $(MBED_CRYPTO_API) $(TARGET_INC) - rsync -a --delete $(MBED_CRYPTO_API)/crypto_struct.h $(TARGET_NSPE) - rsync -a --delete $(MBED_CRYPTO_API)/crypto_struct.h $(TARGET_SPE)/crypto_struct_spe.h - rsync -a --delete $(MBED_CRYPTO_DIR)/library/psa_*.c $(TARGET_SRV_IMPL) - rsync -a --delete $(MBED_CRYPTO_DIR)/library/psa_*.h $(TARGET_SRV_IMPL) deploy: rsync # @@ -128,14 +92,8 @@ update: $(MBED_TLS_GIT_CFG) $(MBED_TLS_HA_GIT_CFG) # Checking out the required release git -C $(MBED_TLS_DIR) checkout $(MBED_TLS_RELEASE) # - # Update and checkout git submodules - git -C $(MBED_TLS_DIR) submodule update --init --recursive - # # Updating checked out version tag echo $(MBED_TLS_RELEASE) > $(TARGET_PREFIX)VERSION.txt - # - # Updating Mbed Crypto checked out version tag - git -C $(MBED_CRYPTO_DIR) describe --tags --abbrev=12 --dirty --always >> $(TARGET_PREFIX)VERSION.txt $(MBED_TLS_GIT_CFG): rm -rf $(MBED_TLS_DIR) @@ -149,5 +107,3 @@ clean: rm -rf $(TARGET_SRC) rm -rf $(TARGET_INC) rm -rf $(MBED_TLS_DIR) - rm -rf $(TARGET_SRV_IMPL) - rm -rf $(TARGET_SPE) diff --git a/features/mbedtls/importer/adjust-config.sh b/features/mbedtls/importer/adjust-config.sh index 347ca5c1558..4d9bb1b30db 100755 --- a/features/mbedtls/importer/adjust-config.sh +++ b/features/mbedtls/importer/adjust-config.sh @@ -146,7 +146,7 @@ conf unset MBEDTLS_PLATFORM_TIME_TYPE_MACRO # which should fit RSA 4096 bit keys. conf set MBEDTLS_MPI_MAX_SIZE 512 -# The following configurations are a needed for Mbed Crypto submodule. +# The following configurations are needed for Mbed Crypto. # They are related to the persistent key storage feature. conf set MBEDTLS_PSA_CRYPTO_STORAGE_C conf set MBEDTLS_PSA_CRYPTO_STORAGE_ITS_C diff --git a/features/mbedtls/inc/psa/crypto.h b/features/mbedtls/inc/psa/crypto.h deleted file mode 100644 index 1ca64922e5e..00000000000 --- a/features/mbedtls/inc/psa/crypto.h +++ /dev/null @@ -1,3479 +0,0 @@ -/** - * \file psa/crypto.h - * \brief Platform Security Architecture cryptography module - */ -/* - * 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 PSA_CRYPTO_H -#define PSA_CRYPTO_H - -#include "crypto_platform.h" - -#include - -#ifdef __DOXYGEN_ONLY__ -/* This __DOXYGEN_ONLY__ block contains mock definitions for things that - * must be defined in the crypto_platform.h header. These mock definitions - * are present in this file as a convenience to generate pretty-printed - * documentation that includes those definitions. */ - -/** \defgroup platform Implementation-specific definitions - * @{ - */ - -/** \brief Key slot number. - * - * This type represents key slots. It must be an unsigned integral - * type. The choice of type is implementation-dependent. - * 0 is not a valid key slot number. The meaning of other values is - * implementation dependent. - * - * At any given point in time, each key slot either contains a - * cryptographic object, or is empty. Key slots are persistent: - * once set, the cryptographic object remains in the key slot until - * explicitly destroyed. - */ -typedef _unsigned_integral_type_ psa_key_slot_t; - -/**@}*/ -#endif /* __DOXYGEN_ONLY__ */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** \defgroup basic Basic definitions - * @{ - */ - -#if defined(PSA_SUCCESS) -/* If PSA_SUCCESS is defined, assume that PSA crypto is being used - * together with PSA IPC, which also defines the identifier - * PSA_SUCCESS. We must not define PSA_SUCCESS ourselves in that case; - * the other error code names don't clash. Also define psa_status_t as - * an alias for the type used by PSA IPC. This is a temporary hack - * until we unify error reporting in PSA IPC and PSA crypto. - * - * Note that psa_defs.h must be included before this header! - */ -typedef psa_error_t psa_status_t; - -#else /* defined(PSA_SUCCESS) */ - -/** - * \brief Function return status. - * - * This is either #PSA_SUCCESS (which is zero), indicating success, - * or a nonzero value indicating that an error occurred. Errors are - * encoded as one of the \c PSA_ERROR_xxx values defined here. - */ -typedef int32_t psa_status_t; - -/** The action was completed successfully. */ -#define PSA_SUCCESS ((psa_status_t)0) - -#endif /* !defined(PSA_SUCCESS) */ - -/** An error occurred that does not correspond to any defined - * failure cause. - * - * Implementations may use this error code if none of the other standard - * error codes are applicable. */ -#define PSA_ERROR_UNKNOWN_ERROR ((psa_status_t)1) - -/** The requested operation or a parameter is not supported - * by this implementation. - * - * Implementations should return this error code when an enumeration - * parameter such as a key type, algorithm, etc. is not recognized. - * If a combination of parameters is recognized and identified as - * not valid, return #PSA_ERROR_INVALID_ARGUMENT instead. */ -#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)2) - -/** The requested action is denied by a policy. - * - * Implementations should return this error code when the parameters - * are recognized as valid and supported, and a policy explicitly - * denies the requested operation. - * - * If a subset of the parameters of a function call identify a - * forbidden operation, and another subset of the parameters are - * not valid or not supported, it is unspecified whether the function - * returns #PSA_ERROR_NOT_PERMITTED, #PSA_ERROR_NOT_SUPPORTED or - * #PSA_ERROR_INVALID_ARGUMENT. */ -#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)3) - -/** An output buffer is too small. - * - * Applications can call the \c PSA_xxx_SIZE macro listed in the function - * description to determine a sufficient buffer size. - * - * Implementations should preferably return this error code only - * in cases when performing the operation with a larger output - * buffer would succeed. However implementations may return this - * error if a function has invalid or unsupported parameters in addition - * to the parameters that determine the necessary output buffer size. */ -#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)4) - -/** A slot is occupied, but must be empty to carry out the - * requested action. - * - * If the slot number is invalid (i.e. the requested action could - * not be performed even after erasing the slot's content), - * implementations shall return #PSA_ERROR_INVALID_ARGUMENT instead. */ -#define PSA_ERROR_OCCUPIED_SLOT ((psa_status_t)5) - -/** A slot is empty, but must be occupied to carry out the - * requested action. - * - * If the slot number is invalid (i.e. the requested action could - * not be performed even after creating appropriate content in the slot), - * implementations shall return #PSA_ERROR_INVALID_ARGUMENT instead. */ -#define PSA_ERROR_EMPTY_SLOT ((psa_status_t)6) - -/** The requested action cannot be performed in the current state. - * - * Multipart operations return this error when one of the - * functions is called out of sequence. Refer to the function - * descriptions for permitted sequencing of functions. - * - * Implementations shall not return this error code to indicate - * that a key slot is occupied when it needs to be free or vice versa, - * but shall return #PSA_ERROR_OCCUPIED_SLOT or #PSA_ERROR_EMPTY_SLOT - * as applicable. */ -#define PSA_ERROR_BAD_STATE ((psa_status_t)7) - -/** The parameters passed to the function are invalid. - * - * Implementations may return this error any time a parameter or - * combination of parameters are recognized as invalid. - * - * Implementations shall not return this error code to indicate - * that a key slot is occupied when it needs to be free or vice versa, - * but shall return #PSA_ERROR_OCCUPIED_SLOT or #PSA_ERROR_EMPTY_SLOT - * as applicable. */ -#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)8) - -/** There is not enough runtime memory. - * - * If the action is carried out across multiple security realms, this - * error can refer to available memory in any of the security realms. */ -#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)9) - -/** There is not enough persistent storage. - * - * Functions that modify the key storage return this error code if - * there is insufficient storage space on the host media. In addition, - * many functions that do not otherwise access storage may return this - * error code if the implementation requires a mandatory log entry for - * the requested action and the log storage space is full. */ -#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)10) - -/** There was a communication failure inside the implementation. - * - * This can indicate a communication failure between the application - * and an external cryptoprocessor or between the cryptoprocessor and - * an external volatile or persistent memory. A communication failure - * may be transient or permanent depending on the cause. - * - * \warning If a function returns this error, it is undetermined - * whether the requested action has completed or not. Implementations - * should return #PSA_SUCCESS on successful completion whenver - * possible, however functions may return #PSA_ERROR_COMMUNICATION_FAILURE - * if the requested action was completed successfully in an external - * cryptoprocessor but there was a breakdown of communication before - * the cryptoprocessor could report the status to the application. - */ -#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)11) - -/** There was a storage failure that may have led to data loss. - * - * This error indicates that some persistent storage is corrupted. - * It should not be used for a corruption of volatile memory - * (use #PSA_ERROR_TAMPERING_DETECTED), for a communication error - * between the cryptoprocessor and its external storage (use - * #PSA_ERROR_COMMUNICATION_FAILURE), or when the storage is - * in a valid state but is full (use #PSA_ERROR_INSUFFICIENT_STORAGE). - * - * Note that a storage failure does not indicate that any data that was - * previously read is invalid. However this previously read data may no - * longer be readable from storage. - * - * When a storage failure occurs, it is no longer possible to ensure - * the global integrity of the keystore. Depending on the global - * integrity guarantees offered by the implementation, access to other - * data may or may not fail even if the data is still readable but - * its integrity canont be guaranteed. - * - * Implementations should only use this error code to report a - * permanent storage corruption. However application writers should - * keep in mind that transient errors while reading the storage may be - * reported using this error code. */ -#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)12) - -/** A hardware failure was detected. - * - * A hardware failure may be transient or permanent depending on the - * cause. */ -#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)13) - -/** A tampering attempt was detected. - * - * If an application receives this error code, there is no guarantee - * that previously accessed or computed data was correct and remains - * confidential. Applications should not perform any security function - * and should enter a safe failure state. - * - * Implementations may return this error code if they detect an invalid - * state that cannot happen during normal operation and that indicates - * that the implementation's security guarantees no longer hold. Depending - * on the implementation architecture and on its security and safety goals, - * the implementation may forcibly terminate the application. - * - * This error code is intended as a last resort when a security breach - * is detected and it is unsure whether the keystore data is still - * protected. Implementations shall only return this error code - * to report an alarm from a tampering detector, to indicate that - * the confidentiality of stored data can no longer be guaranteed, - * or to indicate that the integrity of previously returned data is now - * considered compromised. Implementations shall not use this error code - * to indicate a hardware failure that merely makes it impossible to - * perform the requested operation (use #PSA_ERROR_COMMUNICATION_FAILURE, - * #PSA_ERROR_STORAGE_FAILURE, #PSA_ERROR_HARDWARE_FAILURE, - * #PSA_ERROR_INSUFFICIENT_ENTROPY or other applicable error code - * instead). - * - * This error indicates an attack against the application. Implementations - * shall not return this error code as a consequence of the behavior of - * the application itself. */ -#define PSA_ERROR_TAMPERING_DETECTED ((psa_status_t)14) - -/** There is not enough entropy to generate random data needed - * for the requested action. - * - * This error indicates a failure of a hardware random generator. - * Application writers should note that this error can be returned not - * only by functions whose purpose is to generate random data, such - * as key, IV or nonce generation, but also by functions that execute - * an algorithm with a randomized result, as well as functions that - * use randomization of intermediate computations as a countermeasure - * to certain attacks. - * - * Implementations should avoid returning this error after psa_crypto_init() - * has succeeded. Implementations should generate sufficient - * entropy during initialization and subsequently use a cryptographically - * secure pseudorandom generator (PRNG). However implementations may return - * this error at any time if a policy requires the PRNG to be reseeded - * during normal operation. */ -#define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)15) - -/** The signature, MAC or hash is incorrect. - * - * Verification functions return this error if the verification - * calculations completed successfully, and the value to be verified - * was determined to be incorrect. - * - * If the value to verify has an invalid size, implementations may return - * either #PSA_ERROR_INVALID_ARGUMENT or #PSA_ERROR_INVALID_SIGNATURE. */ -#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)16) - -/** The decrypted padding is incorrect. - * - * \warning In some protocols, when decrypting data, it is essential that - * the behavior of the application does not depend on whether the padding - * is correct, down to precise timing. Applications should prefer - * protocols that use authenticated encryption rather than plain - * encryption. If the application must perform a decryption of - * unauthenticated data, the application writer should take care not - * to reveal whether the padding is invalid. - * - * Implementations should strive to make valid and invalid padding - * as close as possible to indistinguishable to an external observer. - * In particular, the timing of a decryption operation should not - * depend on the validity of the padding. */ -#define PSA_ERROR_INVALID_PADDING ((psa_status_t)17) - -/** The generator has insufficient capacity left. - * - * Once a function returns this error, attempts to read from the - * generator will always return this error. */ -#define PSA_ERROR_INSUFFICIENT_CAPACITY ((psa_status_t)18) - -/** - * \brief Library initialization. - * - * Applications must call this function before calling any other - * function in this module. - * - * Applications may call this function more than once. Once a call - * succeeds, subsequent calls are guaranteed to succeed. - * - * If the application calls other functions before calling psa_crypto_init(), - * the behavior is undefined. Implementations are encouraged to either perform - * the operation as if the library had been initialized or to return - * #PSA_ERROR_BAD_STATE or some other applicable error. In particular, - * implementations should not return a success status if the lack of - * initialization may have security implications, for example due to improper - * seeding of the random number generator. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY - */ -psa_status_t psa_crypto_init(void); - -#define PSA_BITS_TO_BYTES(bits) (((bits) + 7) / 8) -#define PSA_BYTES_TO_BITS(bytes) ((bytes) * 8) - -/**@}*/ - -/** \defgroup crypto_types Key and algorithm types - * @{ - */ - -/** \brief Encoding of a key type. - */ -typedef uint32_t psa_key_type_t; - -/** An invalid key type value. - * - * Zero is not the encoding of any key type. - */ -#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x00000000) - -/** Vendor-defined flag - * - * Key types defined by this standard will never have the - * #PSA_KEY_TYPE_VENDOR_FLAG bit set. Vendors who define additional key types - * must use an encoding with the #PSA_KEY_TYPE_VENDOR_FLAG bit set and should - * respect the bitwise structure used by standard encodings whenever practical. - */ -#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x80000000) - -#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x70000000) -#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x40000000) -#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x50000000) -#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x60000000) -#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x70000000) - -#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x10000000) - -/** Whether a key type is vendor-defined. */ -#define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \ - (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) - -/** Whether a key type is an unstructured array of bytes. - * - * This encompasses both symmetric keys and non-key data. - */ -#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ - (((type) & PSA_KEY_TYPE_CATEGORY_MASK & ~(psa_key_type_t)0x10000000) == \ - PSA_KEY_TYPE_CATEGORY_SYMMETRIC) - -/** Whether a key type is asymmetric: either a key pair or a public key. */ -#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ - (((type) & PSA_KEY_TYPE_CATEGORY_MASK \ - & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \ - PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) -/** Whether a key type is the public part of a key pair. */ -#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \ - (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) -/** Whether a key type is a key pair containing a private part and a public - * part. */ -#define PSA_KEY_TYPE_IS_KEYPAIR(type) \ - (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR) -/** The key pair type corresponding to a public key type. - * - * You may also pass a key pair type as \p type, it will be left unchanged. - * - * \param type A public key type or key pair type. - * - * \return The corresponding key pair type. - * If \p type is not a public key or a key pair, - * the return value is undefined. - */ -#define PSA_KEY_TYPE_KEYPAIR_OF_PUBLIC_KEY(type) \ - ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) -/** The public key type corresponding to a key pair type. - * - * You may also pass a key pair type as \p type, it will be left unchanged. - * - * \param type A public key type or key pair type. - * - * \return The corresponding public key type. - * If \p type is not a public key or a key pair, - * the return value is undefined. - */ -#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) \ - ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) - -/** Raw data. - * - * A "key" of this type cannot be used for any cryptographic operation. - * Applications may use this type to store arbitrary data in the keystore. */ -#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x50000001) - -/** HMAC key. - * - * The key policy determines which underlying hash algorithm the key can be - * used for. - * - * HMAC keys should generally have the same size as the underlying hash. - * This size can be calculated with #PSA_HASH_SIZE(\c alg) where - * \c alg is the HMAC algorithm or the underlying hash algorithm. */ -#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x51000000) - -/** A secret for key derivation. - * - * The key policy determines which key derivation algorithm the key - * can be used for. - */ -#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x52000000) - -/** Key for an cipher, AEAD or MAC algorithm based on the AES block cipher. - * - * The size of the key can be 16 bytes (AES-128), 24 bytes (AES-192) or - * 32 bytes (AES-256). - */ -#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x40000001) - -/** Key for a cipher or MAC algorithm based on DES or 3DES (Triple-DES). - * - * The size of the key can be 8 bytes (single DES), 16 bytes (2-key 3DES) or - * 24 bytes (3-key 3DES). - * - * Note that single DES and 2-key 3DES are weak and strongly - * deprecated and should only be used to decrypt legacy data. 3-key 3DES - * is weak and deprecated and should only be used in legacy protocols. - */ -#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x40000002) - -/** Key for an cipher, AEAD or MAC algorithm based on the - * Camellia block cipher. */ -#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x40000003) - -/** Key for the RC4 stream cipher. - * - * Note that RC4 is weak and deprecated and should only be used in - * legacy protocols. */ -#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x40000004) - -/** RSA public key. */ -#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x60010000) -/** RSA key pair (private and public key). */ -#define PSA_KEY_TYPE_RSA_KEYPAIR ((psa_key_type_t)0x70010000) -/** Whether a key type is an RSA key (pair or public-only). */ -#define PSA_KEY_TYPE_IS_RSA(type) \ - (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) - -/** DSA public key. */ -#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x60020000) -/** DSA key pair (private and public key). */ -#define PSA_KEY_TYPE_DSA_KEYPAIR ((psa_key_type_t)0x70020000) -/** Whether a key type is an DSA key (pair or public-only). */ -#define PSA_KEY_TYPE_IS_DSA(type) \ - (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY) - -#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x60030000) -#define PSA_KEY_TYPE_ECC_KEYPAIR_BASE ((psa_key_type_t)0x70030000) -#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x0000ffff) -/** Elliptic curve key pair. */ -#define PSA_KEY_TYPE_ECC_KEYPAIR(curve) \ - (PSA_KEY_TYPE_ECC_KEYPAIR_BASE | (curve)) -/** Elliptic curve public key. */ -#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ - (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) - -/** Whether a key type is an elliptic curve key (pair or public-only). */ -#define PSA_KEY_TYPE_IS_ECC(type) \ - ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) & \ - ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) -#define PSA_KEY_TYPE_IS_ECC_KEYPAIR(type) \ - (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ - PSA_KEY_TYPE_ECC_KEYPAIR_BASE) -#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \ - (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ - PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) - -/** The type of PSA elliptic curve identifiers. */ -typedef uint16_t psa_ecc_curve_t; -/** Extract the curve from an elliptic curve key type. */ -#define PSA_KEY_TYPE_GET_CURVE(type) \ - ((psa_ecc_curve_t) (PSA_KEY_TYPE_IS_ECC(type) ? \ - ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \ - 0)) - -/* The encoding of curve identifiers is currently aligned with the - * TLS Supported Groups Registry (formerly known as the - * TLS EC Named Curve Registry) - * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 - * The values are defined by RFC 8422 and RFC 7027. */ -#define PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x0001) -#define PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x0002) -#define PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x0003) -#define PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x0004) -#define PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x0005) -#define PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x0006) -#define PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x0007) -#define PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x0008) -#define PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x0009) -#define PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x000a) -#define PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x000b) -#define PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x000c) -#define PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x000d) -#define PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x000e) -#define PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x000f) -#define PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x0010) -#define PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x0011) -#define PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x0012) -#define PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x0013) -#define PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x0014) -#define PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x0015) -#define PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x0016) -#define PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x0017) -#define PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x0018) -#define PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x0019) -#define PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x001a) -#define PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x001b) -#define PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x001c) -#define PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x001d) -#define PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x001e) - -/** The block size of a block cipher. - * - * \param type A cipher key type (value of type #psa_key_type_t). - * - * \return The block size for a block cipher, or 1 for a stream cipher. - * The return value is undefined if \p type is not a supported - * cipher key type. - * - * \note It is possible to build stream cipher algorithms on top of a block - * cipher, for example CTR mode (#PSA_ALG_CTR). - * This macro only takes the key type into account, so it cannot be - * used to determine the size of the data that #psa_cipher_update() - * might buffer for future processing in general. - * - * \note This macro returns a compile-time constant if its argument is one. - * - * \warning This macro may evaluate its argument multiple times. - */ -#define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \ - ( \ - (type) == PSA_KEY_TYPE_AES ? 16 : \ - (type) == PSA_KEY_TYPE_DES ? 8 : \ - (type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \ - (type) == PSA_KEY_TYPE_ARC4 ? 1 : \ - 0) - -/** \brief Encoding of a cryptographic algorithm. - * - * For algorithms that can be applied to multiple key types, this type - * does not encode the key type. For example, for symmetric ciphers - * based on a block cipher, #psa_algorithm_t encodes the block cipher - * mode and the padding mode while the block cipher itself is encoded - * via #psa_key_type_t. - */ -typedef uint32_t psa_algorithm_t; - -#define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000) -#define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000) -#define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x01000000) -#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x02000000) -#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000) -#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x06000000) -#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x10000000) -#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x12000000) -#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x22000000) -#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x30000000) -#define PSA_ALG_CATEGORY_KEY_SELECTION ((psa_algorithm_t)0x31000000) - -#define PSA_ALG_IS_VENDOR_DEFINED(alg) \ - (((alg) & PSA_ALG_VENDOR_FLAG) != 0) - -/** Whether the specified algorithm is a hash algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a hash algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_HASH(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH) - -/** Whether the specified algorithm is a MAC algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a MAC algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_MAC(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC) - -/** Whether the specified algorithm is a symmetric cipher algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a symmetric cipher algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_CIPHER(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER) - -/** Whether the specified algorithm is an authenticated encryption - * with associated data (AEAD) algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is an AEAD algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_AEAD(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD) - -/** Whether the specified algorithm is a public-key signature algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a public-key signature algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_SIGN(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN) - -/** Whether the specified algorithm is a public-key encryption algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a public-key encryption algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION) - -#define PSA_ALG_KEY_SELECTION_FLAG ((psa_algorithm_t)0x01000000) -/** Whether the specified algorithm is a key agreement algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a key agreement algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_KEY_AGREEMENT(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK & ~PSA_ALG_KEY_SELECTION_FLAG) == \ - PSA_ALG_CATEGORY_KEY_AGREEMENT) - -/** Whether the specified algorithm is a key derivation algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a key derivation algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_KEY_DERIVATION(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) - -/** Whether the specified algorithm is a key selection algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a key selection algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_KEY_SELECTION(alg) \ - (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_SELECTION) - -#define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff) -#define PSA_ALG_MD2 ((psa_algorithm_t)0x01000001) -#define PSA_ALG_MD4 ((psa_algorithm_t)0x01000002) -#define PSA_ALG_MD5 ((psa_algorithm_t)0x01000003) -#define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x01000004) -#define PSA_ALG_SHA_1 ((psa_algorithm_t)0x01000005) -/** SHA2-224 */ -#define PSA_ALG_SHA_224 ((psa_algorithm_t)0x01000008) -/** SHA2-256 */ -#define PSA_ALG_SHA_256 ((psa_algorithm_t)0x01000009) -/** SHA2-384 */ -#define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0100000a) -/** SHA2-512 */ -#define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0100000b) -/** SHA2-512/224 */ -#define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0100000c) -/** SHA2-512/256 */ -#define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0100000d) -/** SHA3-224 */ -#define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x01000010) -/** SHA3-256 */ -#define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x01000011) -/** SHA3-384 */ -#define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x01000012) -/** SHA3-512 */ -#define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x01000013) - -#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000) -#define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x02800000) -/** Macro to build an HMAC algorithm. - * - * For example, #PSA_ALG_HMAC(#PSA_ALG_SHA_256) is HMAC-SHA-256. - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding HMAC algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_HMAC(hash_alg) \ - (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) - -#define PSA_ALG_HMAC_GET_HASH(hmac_alg) \ - (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK)) - -/** Whether the specified algorithm is an HMAC algorithm. - * - * HMAC is a family of MAC algorithms that are based on a hash function. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is an HMAC algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_HMAC(alg) \ - (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ - PSA_ALG_HMAC_BASE) - -/* In the encoding of a MAC algorithm, the bits corresponding to - * PSA_ALG_MAC_TRUNCATION_MASK encode the length to which the MAC is - * truncated. As an exception, the value 0 means the untruncated algorithm, - * whatever its length is. The length is encoded in 6 bits, so it can - * reach up to 63; the largest MAC is 64 bytes so its trivial truncation - * to full length is correctly encoded as 0 and any non-trivial truncation - * is correctly encoded as a value between 1 and 63. */ -#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x00003f00) -#define PSA_MAC_TRUNCATION_OFFSET 8 - -/** Macro to build a truncated MAC algorithm. - * - * A truncated MAC algorithm is identical to the corresponding MAC - * algorithm except that the MAC value for the truncated algorithm - * consists of only the first \p mac_length bytes of the MAC value - * for the untruncated algorithm. - * - * \note This macro may allow constructing algorithm identifiers that - * are not valid, either because the specified length is larger - * than the untruncated MAC or because the specified length is - * smaller than permitted by the implementation. - * - * \note It is implementation-defined whether a truncated MAC that - * is truncated to the same length as the MAC of the untruncated - * algorithm is considered identical to the untruncated algorithm - * for policy comparison purposes. - * - * \param alg A MAC algorithm identifier (value of type - * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) - * is true). This may be a truncated or untruncated - * MAC algorithm. - * \param mac_length Desired length of the truncated MAC in bytes. - * This must be at most the full length of the MAC - * and must be at least an implementation-specified - * minimum. The implementation-specified minimum - * shall not be zero. - * - * \return The corresponding MAC algorithm with the specified - * length. - * \return Unspecified if \p alg is not a supported - * MAC algorithm or if \p mac_length is too small or - * too large for the specified MAC algorithm. - */ -#define PSA_ALG_TRUNCATED_MAC(alg, mac_length) \ - (((alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) | \ - ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK)) - -/** Macro to build the base MAC algorithm corresponding to a truncated - * MAC algorithm. - * - * \param alg A MAC algorithm identifier (value of type - * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) - * is true). This may be a truncated or untruncated - * MAC algorithm. - * - * \return The corresponding base MAC algorithm. - * \return Unspecified if \p alg is not a supported - * MAC algorithm. - */ -#define PSA_ALG_FULL_LENGTH_MAC(alg) \ - ((alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) - -/** Length to which a MAC algorithm is truncated. - * - * \param alg A MAC algorithm identifier (value of type - * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) - * is true). - * - * \return Length of the truncated MAC in bytes. - * \return 0 if \p alg is a non-truncated MAC algorithm. - * \return Unspecified if \p alg is not a supported - * MAC algorithm. - */ -#define PSA_MAC_TRUNCATED_LENGTH(alg) \ - (((alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET) - -#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x02c00000) -#define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x02c00001) -#define PSA_ALG_CMAC ((psa_algorithm_t)0x02c00002) -#define PSA_ALG_GMAC ((psa_algorithm_t)0x02c00003) - -/** Whether the specified algorithm is a MAC algorithm based on a block cipher. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a MAC algorithm based on a block cipher, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier. - */ -#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \ - (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ - PSA_ALG_CIPHER_MAC_BASE) - -#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000) -#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) - -/** Whether the specified algorithm is a stream cipher. - * - * A stream cipher is a symmetric cipher that encrypts or decrypts messages - * by applying a bitwise-xor with a stream of bytes that is generated - * from a key. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \p alg is a stream cipher algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \p alg is not a supported - * algorithm identifier or if it is not a symmetric cipher algorithm. - */ -#define PSA_ALG_IS_STREAM_CIPHER(alg) \ - (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \ - (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG)) - -/** The ARC4 stream cipher algorithm. - */ -#define PSA_ALG_ARC4 ((psa_algorithm_t)0x04800001) - -/** The CTR stream cipher mode. - * - * CTR is a stream cipher which is built from a block cipher. - * The underlying block cipher is determined by the key type. - * For example, to use AES-128-CTR, use this algorithm with - * a key of type #PSA_KEY_TYPE_AES and a length of 128 bits (16 bytes). - */ -#define PSA_ALG_CTR ((psa_algorithm_t)0x04c00001) - -#define PSA_ALG_CFB ((psa_algorithm_t)0x04c00002) - -#define PSA_ALG_OFB ((psa_algorithm_t)0x04c00003) - -/** The XTS cipher mode. - * - * XTS is a cipher mode which is built from a block cipher. It requires at - * least one full block of input, but beyond this minimum the input - * does not need to be a whole number of blocks. - */ -#define PSA_ALG_XTS ((psa_algorithm_t)0x044000ff) - -/** The CBC block cipher chaining mode, with no padding. - * - * The underlying block cipher is determined by the key type. - * - * This symmetric cipher mode can only be used with messages whose lengths - * are whole number of blocks for the chosen block cipher. - */ -#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04600100) - -/** The CBC block cipher chaining mode with PKCS#7 padding. - * - * The underlying block cipher is determined by the key type. - * - * This is the padding method defined by PKCS#7 (RFC 2315) §10.3. - */ -#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04600101) - -#define PSA_ALG_CCM ((psa_algorithm_t)0x06001001) -#define PSA_ALG_GCM ((psa_algorithm_t)0x06001002) - -/* In the encoding of a AEAD algorithm, the bits corresponding to - * PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag. - * The constants for default lengths follow this encoding. - */ -#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x00003f00) -#define PSA_AEAD_TAG_LENGTH_OFFSET 8 - -/** Macro to build a shortened AEAD algorithm. - * - * A shortened AEAD algorithm is similar to the corresponding AEAD - * algorithm, but has an authentication tag that consists of fewer bytes. - * Depending on the algorithm, the tag length may affect the calculation - * of the ciphertext. - * - * \param alg A AEAD algorithm identifier (value of type - * #psa_algorithm_t such that #PSA_ALG_IS_AEAD(\p alg) - * is true). - * \param tag_length Desired length of the authentication tag in bytes. - * - * \return The corresponding AEAD algorithm with the specified - * length. - * \return Unspecified if \p alg is not a supported - * AEAD algorithm or if \p tag_length is not valid - * for the specified AEAD algorithm. - */ -#define PSA_ALG_AEAD_WITH_TAG_LENGTH(alg, tag_length) \ - (((alg) & ~PSA_ALG_AEAD_TAG_LENGTH_MASK) | \ - ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \ - PSA_ALG_AEAD_TAG_LENGTH_MASK)) - -/** Calculate the corresponding AEAD algorithm with the default tag length. - * - * \param alg An AEAD algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_AEAD(\p alg) is true). - * - * \return The corresponding AEAD algorithm with the default tag length - * for that algorithm. - */ -#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH(alg) \ - ( \ - PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, PSA_ALG_CCM) \ - PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, PSA_ALG_GCM) \ - 0) -#define PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, ref) \ - PSA_ALG_AEAD_WITH_TAG_LENGTH(alg, 0) == \ - PSA_ALG_AEAD_WITH_TAG_LENGTH(ref, 0) ? \ - ref : - -#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x10020000) -/** RSA PKCS#1 v1.5 signature with hashing. - * - * This is the signature scheme defined by RFC 8017 - * (PKCS#1: RSA Cryptography Specifications) under the name - * RSASSA-PKCS1-v1_5. - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding RSA PKCS#1 v1.5 signature algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \ - (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) -/** Raw PKCS#1 v1.5 signature. - * - * The input to this algorithm is the DigestInfo structure used by - * RFC 8017 (PKCS#1: RSA Cryptography Specifications), §9.2 - * steps 3–6. - */ -#define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE -#define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE) - -#define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x10030000) -/** RSA PSS signature with hashing. - * - * This is the signature scheme defined by RFC 8017 - * (PKCS#1: RSA Cryptography Specifications) under the name - * RSASSA-PSS, with the message generation function MGF1, and with - * a salt length equal to the length of the hash. The specified - * hash algorithm is used to hash the input message, to create the - * salted hash, and for the mask generation. - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding RSA PSS signature algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_RSA_PSS(hash_alg) \ - (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) -#define PSA_ALG_IS_RSA_PSS(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE) - -#define PSA_ALG_DSA_BASE ((psa_algorithm_t)0x10040000) -/** DSA signature with hashing. - * - * This is the signature scheme defined by FIPS 186-4, - * with a random per-message secret number (*k*). - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding DSA signature algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_DSA(hash_alg) \ - (PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) -#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000) -#define PSA_ALG_DSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000) -#define PSA_ALG_DETERMINISTIC_DSA(hash_alg) \ - (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) -#define PSA_ALG_IS_DSA(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \ - PSA_ALG_DSA_BASE) -#define PSA_ALG_DSA_IS_DETERMINISTIC(alg) \ - (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) -#define PSA_ALG_IS_DETERMINISTIC_DSA(alg) \ - (PSA_ALG_IS_DSA(alg) && PSA_ALG_DSA_IS_DETERMINISTIC(alg)) -#define PSA_ALG_IS_RANDOMIZED_DSA(alg) \ - (PSA_ALG_IS_DSA(alg) && !PSA_ALG_DSA_IS_DETERMINISTIC(alg)) - -#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x10060000) -/** ECDSA signature with hashing. - * - * This is the ECDSA signature scheme defined by ANSI X9.62, - * with a random per-message secret number (*k*). - * - * The representation of the signature as a byte string consists of - * the concatentation of the signature values *r* and *s*. Each of - * *r* and *s* is encoded as an *N*-octet string, where *N* is the length - * of the base point of the curve in octets. Each value is represented - * in big-endian order (most significant octet first). - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding ECDSA signature algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_ECDSA(hash_alg) \ - (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) -/** ECDSA signature without hashing. - * - * This is the same signature scheme as #PSA_ALG_ECDSA(), but - * without specifying a hash algorithm. This algorithm may only be - * used to sign or verify a sequence of bytes that should be an - * already-calculated hash. Note that the input is padded with - * zeros on the left or truncated on the left as required to fit - * the curve size. - */ -#define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE -#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x10070000) -/** Deterministic ECDSA signature with hashing. - * - * This is the deterministic ECDSA signature scheme defined by RFC 6979. - * - * The representation of a signature is the same as with #PSA_ALG_ECDSA(). - * - * Note that when this algorithm is used for verification, signatures - * made with randomized ECDSA (#PSA_ALG_ECDSA(\p hash_alg)) with the - * same private key are accepted. In other words, - * #PSA_ALG_DETERMINISTIC_ECDSA(\p hash_alg) differs from - * #PSA_ALG_ECDSA(\p hash_alg) only for signature, not for verification. - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding deterministic ECDSA signature - * algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \ - (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) -#define PSA_ALG_IS_ECDSA(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \ - PSA_ALG_ECDSA_BASE) -#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \ - (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) -#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \ - (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) -#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \ - (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) - -/** Get the hash used by a hash-and-sign signature algorithm. - * - * A hash-and-sign algorithm is a signature algorithm which is - * composed of two phases: first a hashing phase which does not use - * the key and produces a hash of the input message, then a signing - * phase which only uses the hash and the key and not the message - * itself. - * - * \param alg A signature algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_SIGN(\p alg) is true). - * - * \return The underlying hash algorithm if \p alg is a hash-and-sign - * algorithm. - * \return 0 if \p alg is a signature algorithm that does not - * follow the hash-and-sign structure. - * \return Unspecified if \p alg is not a signature algorithm or - * if it is not supported by the implementation. - */ -#define PSA_ALG_SIGN_GET_HASH(alg) \ - (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \ - PSA_ALG_IS_DSA(alg) || PSA_ALG_IS_ECDSA(alg) ? \ - ((alg) & PSA_ALG_HASH_MASK) == 0 ? /*"raw" algorithm*/ 0 : \ - ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ - 0) - -/** RSA PKCS#1 v1.5 encryption. - */ -#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x12020000) - -#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x12030000) -/** RSA OAEP encryption. - * - * This is the encryption scheme defined by RFC 8017 - * (PKCS#1: RSA Cryptography Specifications) under the name - * RSAES-OAEP, with the message generation function MGF1. - * - * \param hash_alg The hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true) to use - * for MGF1. - * - * \return The corresponding RSA OAEP signature algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_RSA_OAEP(hash_alg) \ - (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) -#define PSA_ALG_IS_RSA_OAEP(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE) -#define PSA_ALG_RSA_OAEP_GET_HASH(alg) \ - (PSA_ALG_IS_RSA_OAEP(alg) ? \ - ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ - 0) - -#define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x30000100) -/** Macro to build an HKDF algorithm. - * - * For example, `PSA_ALG_HKDF(PSA_ALG_SHA256)` is HKDF using HMAC-SHA-256. - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding HKDF algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_HKDF(hash_alg) \ - (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) -/** Whether the specified algorithm is an HKDF algorithm. - * - * HKDF is a family of key derivation algorithms that are based on a hash - * function and the HMAC construction. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \c alg is an HKDF algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \c alg is not a supported - * key derivation algorithm identifier. - */ -#define PSA_ALG_IS_HKDF(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE) -#define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \ - (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) - -#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x30000200) -/** Macro to build a TLS-1.2 PRF algorithm. - * - * TLS 1.2 uses a custom pseudorandom function (PRF) for key schedule, - * specified in Section 5 of RFC 5246. It is based on HMAC and can be - * used with either SHA-256 or SHA-384. - * - * For the application to TLS-1.2, the salt and label arguments passed - * to psa_key_derivation() are what's called 'seed' and 'label' in RFC 5246, - * respectively. For example, for TLS key expansion, the salt is the - * concatenation of ServerHello.Random + ClientHello.Random, - * while the label is "key expansion". - * - * For example, `PSA_ALG_TLS12_PRF(PSA_ALG_SHA256)` represents the - * TLS 1.2 PRF using HMAC-SHA-256. - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding TLS-1.2 PRF algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_TLS12_PRF(hash_alg) \ - (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) - -/** Whether the specified algorithm is a TLS-1.2 PRF algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \c alg is a TLS-1.2 PRF algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \c alg is not a supported - * key derivation algorithm identifier. - */ -#define PSA_ALG_IS_TLS12_PRF(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE) -#define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \ - (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) - -#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x30000300) -/** Macro to build a TLS-1.2 PSK-to-MasterSecret algorithm. - * - * In a pure-PSK handshake in TLS 1.2, the master secret is derived - * from the PreSharedKey (PSK) through the application of padding - * (RFC 4279, Section 2) and the TLS-1.2 PRF (RFC 5246, Section 5). - * The latter is based on HMAC and can be used with either SHA-256 - * or SHA-384. - * - * For the application to TLS-1.2, the salt passed to psa_key_derivation() - * (and forwarded to the TLS-1.2 PRF) is the concatenation of the - * ClientHello.Random + ServerHello.Random, while the label is "master secret" - * or "extended master secret". - * - * For example, `PSA_ALG_TLS12_PSK_TO_MS(PSA_ALG_SHA256)` represents the - * TLS-1.2 PSK to MasterSecret derivation PRF using HMAC-SHA-256. - * - * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p hash_alg) is true). - * - * \return The corresponding TLS-1.2 PSK to MS algorithm. - * \return Unspecified if \p alg is not a supported - * hash algorithm. - */ -#define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \ - (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) - -/** Whether the specified algorithm is a TLS-1.2 PSK to MS algorithm. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \c alg is a TLS-1.2 PSK to MS algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \c alg is not a supported - * key derivation algorithm identifier. - */ -#define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE) -#define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \ - (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) - -#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0x010fffff) - -/** Use a shared secret as is. - * - * Specify this algorithm as the selection component of a key agreement - * to use the raw result of the key agreement as key material. - * - * \warning The raw result of a key agreement algorithm such as finite-field - * Diffie-Hellman or elliptic curve Diffie-Hellman has biases and should - * not be used directly as key material. It can however be used as the secret - * input in a key derivation algorithm. - */ -#define PSA_ALG_SELECT_RAW ((psa_algorithm_t)0x31000001) - -#define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \ - (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION) - -#define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \ - ((alg) & ~PSA_ALG_KEY_DERIVATION_MASK) - -#define PSA_ALG_FFDH_BASE ((psa_algorithm_t)0x22100000) -/** The Diffie-Hellman key agreement algorithm. - * - * This algorithm combines the finite-field Diffie-Hellman (DH) key - * agreement, also known as Diffie-Hellman-Merkle (DHM) key agreement, - * to produce a shared secret from a private key and the peer's - * public key, with a key selection or key derivation algorithm to produce - * one or more shared keys and other shared cryptographic material. - * - * The shared secret produced by key agreement and passed as input to the - * derivation or selection algorithm \p kdf_alg is the shared secret - * `g^{ab}` in big-endian format. - * It is `ceiling(m / 8)` bytes long where `m` is the size of the prime `p` - * in bits. - * - * \param kdf_alg A key derivation algorithm (\c PSA_ALG_XXX value such - * that #PSA_ALG_IS_KEY_DERIVATION(\p hash_alg) is true) - * or a key selection algorithm (\c PSA_ALG_XXX value such - * that #PSA_ALG_IS_KEY_SELECTION(\p hash_alg) is true). - * - * \return The Diffie-Hellman algorithm with the specified - * selection or derivation algorithm. - */ -#define PSA_ALG_FFDH(kdf_alg) \ - (PSA_ALG_FFDH_BASE | ((kdf_alg) & PSA_ALG_KEY_DERIVATION_MASK)) -/** Whether the specified algorithm is a finite field Diffie-Hellman algorithm. - * - * This includes every supported key selection or key agreement algorithm - * for the output of the Diffie-Hellman calculation. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \c alg is a finite field Diffie-Hellman algorithm, 0 otherwise. - * This macro may return either 0 or 1 if \c alg is not a supported - * key agreement algorithm identifier. - */ -#define PSA_ALG_IS_FFDH(alg) \ - (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH_BASE) - -#define PSA_ALG_ECDH_BASE ((psa_algorithm_t)0x22200000) -/** The elliptic curve Diffie-Hellman (ECDH) key agreement algorithm. - * - * This algorithm combines the elliptic curve Diffie-Hellman key - * agreement to produce a shared secret from a private key and the peer's - * public key, with a key selection or key derivation algorithm to produce - * one or more shared keys and other shared cryptographic material. - * - * The shared secret produced by key agreement and passed as input to the - * derivation or selection algorithm \p kdf_alg is the x-coordinate of - * the shared secret point. It is always `ceiling(m / 8)` bytes long where - * `m` is the bit size associated with the curve, i.e. the bit size of the - * order of the curve's coordinate field. When `m` is not a multiple of 8, - * the byte containing the most significant bit of the shared secret - * is padded with zero bits. The byte order is either little-endian - * or big-endian depending on the curve type. - * - * - For Montgomery curves (curve types `PSA_ECC_CURVE_CURVEXXX`), - * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` - * in little-endian byte order. - * The bit size is 448 for Curve448 and 255 for Curve25519. - * - For Weierstrass curves over prime fields (curve types - * `PSA_ECC_CURVE_SECPXXX` and `PSA_ECC_CURVE_BRAINPOOL_PXXX`), - * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` - * in big-endian byte order. - * The bit size is `m = ceiling(log_2(p))` for the field `F_p`. - * - For Weierstrass curves over binary fields (curve types - * `PSA_ECC_CURVE_SECTXXX`), - * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` - * in big-endian byte order. - * The bit size is `m` for the field `F_{2^m}`. - * - * \param kdf_alg A key derivation algorithm (\c PSA_ALG_XXX value such - * that #PSA_ALG_IS_KEY_DERIVATION(\p hash_alg) is true) - * or a selection algorithm (\c PSA_ALG_XXX value such - * that #PSA_ALG_IS_KEY_SELECTION(\p hash_alg) is true). - * - * \return The Diffie-Hellman algorithm with the specified - * selection or derivation algorithm. - */ -#define PSA_ALG_ECDH(kdf_alg) \ - (PSA_ALG_ECDH_BASE | ((kdf_alg) & PSA_ALG_KEY_DERIVATION_MASK)) -/** Whether the specified algorithm is an elliptic curve Diffie-Hellman - * algorithm. - * - * This includes every supported key selection or key agreement algorithm - * for the output of the Diffie-Hellman calculation. - * - * \param alg An algorithm identifier (value of type #psa_algorithm_t). - * - * \return 1 if \c alg is an elliptic curve Diffie-Hellman algorithm, - * 0 otherwise. - * This macro may return either 0 or 1 if \c alg is not a supported - * key agreement algorithm identifier. - */ -#define PSA_ALG_IS_ECDH(alg) \ - (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH_BASE) - -/**@}*/ - -/** \defgroup key_management Key management - * @{ - */ - -/** - * \brief Import a key in binary format. - * - * This function supports any output from psa_export_key(). Refer to the - * documentation of psa_export_public_key() for the format of public keys - * and to the documentation of psa_export_key() for the format for - * other key types. - * - * This specification supports a single format for each key type. - * Implementations may support other formats as long as the standard - * format is supported. Implementations that support other formats - * should ensure that the formats are clearly unambiguous so as to - * minimize the risk that an invalid input is accidentally interpreted - * according to a different format. - * - * \param key Slot where the key will be stored. This must be a - * valid slot for a key of the chosen type. It must - * be unoccupied. - * \param type Key type (a \c PSA_KEY_TYPE_XXX value). On a successful - * import, the key slot will contain a key of this type. - * \param[in] data Buffer containing the key data. The content of this - * buffer is interpreted according to \p type. It must - * contain the format described in the documentation - * of psa_export_key() or psa_export_public_key() for - * the chosen type. - * \param data_length Size of the \p data buffer in bytes. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_NOT_SUPPORTED - * The key type or key size is not supported, either by the - * implementation in general or in this particular slot. - * \retval #PSA_ERROR_INVALID_ARGUMENT - * The key slot is invalid, - * or the key data is not correctly formatted. - * \retval #PSA_ERROR_OCCUPIED_SLOT - * There is already a key in the specified slot. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_INSUFFICIENT_STORAGE - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_STORAGE_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_import_key(psa_key_slot_t key, - psa_key_type_t type, - const uint8_t *data, - size_t data_length); - -/** - * \brief Destroy a key and restore the slot to its default state. - * - * This function destroys the content of the key slot from both volatile - * memory and, if applicable, non-volatile storage. Implementations shall - * make a best effort to ensure that any previous content of the slot is - * unrecoverable. - * - * This function also erases any metadata such as policies. It returns the - * specified slot to its default state. - * - * \param key The key slot to erase. - * - * \retval #PSA_SUCCESS - * The slot's content, if any, has been erased. - * \retval #PSA_ERROR_NOT_PERMITTED - * The slot holds content and cannot be erased because it is - * read-only, either due to a policy or due to physical restrictions. - * \retval #PSA_ERROR_INVALID_ARGUMENT - * The specified slot number does not designate a valid slot. - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * There was an failure in communication with the cryptoprocessor. - * The key material may still be present in the cryptoprocessor. - * \retval #PSA_ERROR_STORAGE_FAILURE - * The storage is corrupted. Implementations shall make a best effort - * to erase key material even in this stage, however applications - * should be aware that it may be impossible to guarantee that the - * key material is not recoverable in such cases. - * \retval #PSA_ERROR_TAMPERING_DETECTED - * An unexpected condition which is not a storage corruption or - * a communication failure occurred. The cryptoprocessor may have - * been compromised. - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_destroy_key(psa_key_slot_t key); - -/** - * \brief Get basic metadata about a key. - * - * \param key Slot whose content is queried. This must - * be an occupied key slot. - * \param[out] type On success, the key type (a \c PSA_KEY_TYPE_XXX value). - * This may be a null pointer, in which case the key type - * is not written. - * \param[out] bits On success, the key size in bits. - * This may be a null pointer, in which case the key size - * is not written. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_get_key_information(psa_key_slot_t key, - psa_key_type_t *type, - size_t *bits); - -/** - * \brief Export a key in binary format. - * - * The output of this function can be passed to psa_import_key() to - * create an equivalent object. - * - * If the implementation of psa_import_key() supports other formats - * beyond the format specified here, the output from psa_export_key() - * must use the representation specified here, not the original - * representation. - * - * For standard key types, the output format is as follows: - * - * - For symmetric keys (including MAC keys), the format is the - * raw bytes of the key. - * - For DES, the key data consists of 8 bytes. The parity bits must be - * correct. - * - For Triple-DES, the format is the concatenation of the - * two or three DES keys. - * - For RSA key pairs (#PSA_KEY_TYPE_RSA_KEYPAIR), the format - * is the non-encrypted DER encoding of the representation defined by - * PKCS\#1 (RFC 8017) as `RSAPrivateKey`, version 0. - * ``` - * RSAPrivateKey ::= SEQUENCE { - * version INTEGER, -- must be 0 - * modulus INTEGER, -- n - * publicExponent INTEGER, -- e - * privateExponent INTEGER, -- d - * prime1 INTEGER, -- p - * prime2 INTEGER, -- q - * exponent1 INTEGER, -- d mod (p-1) - * exponent2 INTEGER, -- d mod (q-1) - * coefficient INTEGER, -- (inverse of q) mod p - * } - * ``` - * - For DSA private keys (#PSA_KEY_TYPE_DSA_KEYPAIR), the format - * is the non-encrypted DER encoding of the representation used by - * OpenSSL and OpenSSH, whose structure is described in ASN.1 as follows: - * ``` - * DSAPrivateKey ::= SEQUENCE { - * version INTEGER, -- must be 0 - * prime INTEGER, -- p - * subprime INTEGER, -- q - * generator INTEGER, -- g - * public INTEGER, -- y - * private INTEGER, -- x - * } - * ``` - * - For elliptic curve key pairs (key types for which - * #PSA_KEY_TYPE_IS_ECC_KEYPAIR is true), the format is - * a representation of the private value as a `ceiling(m/8)`-byte string - * where `m` is the bit size associated with the curve, i.e. the bit size - * of the order of the curve's coordinate field. This byte string is - * in little-endian order for Montgomery curves (curve types - * `PSA_ECC_CURVE_CURVEXXX`), and in big-endian order for Weierstrass - * curves (curve types `PSA_ECC_CURVE_SECTXXX`, `PSA_ECC_CURVE_SECPXXX` - * and `PSA_ECC_CURVE_BRAINPOOL_PXXX`). - * This is the content of the `privateKey` field of the `ECPrivateKey` - * format defined by RFC 5915. - * - For public keys (key types for which #PSA_KEY_TYPE_IS_PUBLIC_KEY is - * true), the format is the same as for psa_export_public_key(). - * - * \param key Slot whose content is to be exported. This must - * be an occupied key slot. - * \param[out] data Buffer where the key data is to be written. - * \param data_size Size of the \p data buffer in bytes. - * \param[out] data_length On success, the number of bytes - * that make up the key data. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p data buffer is too small. You can determine a - * sufficient buffer size by calling - * #PSA_KEY_EXPORT_MAX_SIZE(\c type, \c bits) - * where \c type is the key type - * and \c bits is the key size in bits. - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_export_key(psa_key_slot_t key, - uint8_t *data, - size_t data_size, - size_t *data_length); - -/** - * \brief Export a public key or the public part of a key pair in binary format. - * - * The output of this function can be passed to psa_import_key() to - * create an object that is equivalent to the public key. - * - * The format is the DER representation defined by RFC 5280 as - * `SubjectPublicKeyInfo`, with the `subjectPublicKey` format - * specified below. - * ``` - * SubjectPublicKeyInfo ::= SEQUENCE { - * algorithm AlgorithmIdentifier, - * subjectPublicKey BIT STRING } - * AlgorithmIdentifier ::= SEQUENCE { - * algorithm OBJECT IDENTIFIER, - * parameters ANY DEFINED BY algorithm OPTIONAL } - * ``` - * - * - For RSA public keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY), - * the `subjectPublicKey` format is defined by RFC 3279 §2.3.1 as - * `RSAPublicKey`, - * with the OID `rsaEncryption`, - * and with the parameters `NULL`. - * ``` - * pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) - * rsadsi(113549) pkcs(1) 1 } - * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } - * - * RSAPublicKey ::= SEQUENCE { - * modulus INTEGER, -- n - * publicExponent INTEGER } -- e - * ``` - * - For DSA public keys (#PSA_KEY_TYPE_DSA_PUBLIC_KEY), - * the `subjectPublicKey` format is defined by RFC 3279 §2.3.2 as - * `DSAPublicKey`, - * with the OID `id-dsa`, - * and with the parameters `DSS-Parms`. - * ``` - * id-dsa OBJECT IDENTIFIER ::= { - * iso(1) member-body(2) us(840) x9-57(10040) x9cm(4) 1 } - * - * Dss-Parms ::= SEQUENCE { - * p INTEGER, - * q INTEGER, - * g INTEGER } - * DSAPublicKey ::= INTEGER -- public key, Y - * ``` - * - For elliptic curve public keys (key types for which - * #PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY is true), - * the `subjectPublicKey` format is defined by RFC 3279 §2.3.5 as - * `ECPoint`, which contains the uncompressed - * representation defined by SEC1 §2.3.3. - * The OID is `id-ecPublicKey`, - * and the parameters must be given as a `namedCurve` OID as specified in - * RFC 5480 §2.1.1.1 or other applicable standards. - * ``` - * ansi-X9-62 OBJECT IDENTIFIER ::= - * { iso(1) member-body(2) us(840) 10045 } - * id-public-key-type OBJECT IDENTIFIER ::= { ansi-X9.62 2 } - * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } - * - * ECPoint ::= ... - * -- first 8 bits: 0x04; - * -- then x_P as a `ceiling(m/8)`-byte string, big endian; - * -- then y_P as a `ceiling(m/8)`-byte string, big endian; - * -- where `m` is the bit size associated with the curve, - * -- i.e. the bit size of `q` for a curve over `F_q`. - * - * EcpkParameters ::= CHOICE { -- other choices are not allowed - * namedCurve OBJECT IDENTIFIER } - * ``` - * - * \param key Slot whose content is to be exported. This must - * be an occupied key slot. - * \param[out] data Buffer where the key data is to be written. - * \param data_size Size of the \p data buffer in bytes. - * \param[out] data_length On success, the number of bytes - * that make up the key data. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_INVALID_ARGUMENT - * The key is neither a public key nor a key pair. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p data buffer is too small. You can determine a - * sufficient buffer size by calling - * #PSA_KEY_EXPORT_MAX_SIZE(#PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(\c type), \c bits) - * where \c type is the key type - * and \c bits is the key size in bits. - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_export_public_key(psa_key_slot_t key, - uint8_t *data, - size_t data_size, - size_t *data_length); - -/**@}*/ - -/** \defgroup policy Key policies - * @{ - */ - -/** \brief Encoding of permitted usage on a key. */ -typedef uint32_t psa_key_usage_t; - -/** Whether the key may be exported. - * - * A public key or the public part of a key pair may always be exported - * regardless of the value of this permission flag. - * - * If a key does not have export permission, implementations shall not - * allow the key to be exported in plain form from the cryptoprocessor, - * whether through psa_export_key() or through a proprietary interface. - * The key may however be exportable in a wrapped form, i.e. in a form - * where it is encrypted by another key. - */ -#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001) - -/** Whether the key may be used to encrypt a message. - * - * This flag allows the key to be used for a symmetric encryption operation, - * for an AEAD encryption-and-authentication operation, - * or for an asymmetric encryption operation, - * if otherwise permitted by the key's type and policy. - * - * For a key pair, this concerns the public key. - */ -#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100) - -/** Whether the key may be used to decrypt a message. - * - * This flag allows the key to be used for a symmetric decryption operation, - * for an AEAD decryption-and-verification operation, - * or for an asymmetric decryption operation, - * if otherwise permitted by the key's type and policy. - * - * For a key pair, this concerns the private key. - */ -#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200) - -/** Whether the key may be used to sign a message. - * - * This flag allows the key to be used for a MAC calculation operation - * or for an asymmetric signature operation, - * if otherwise permitted by the key's type and policy. - * - * For a key pair, this concerns the private key. - */ -#define PSA_KEY_USAGE_SIGN ((psa_key_usage_t)0x00000400) - -/** Whether the key may be used to verify a message signature. - * - * This flag allows the key to be used for a MAC verification operation - * or for an asymmetric signature verification operation, - * if otherwise permitted by by the key's type and policy. - * - * For a key pair, this concerns the public key. - */ -#define PSA_KEY_USAGE_VERIFY ((psa_key_usage_t)0x00000800) - -/** Whether the key may be used to derive other keys. - */ -#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00001000) - -/** The type of the key policy data structure. - * - * This is an implementation-defined \c struct. Applications should not - * make any assumptions about the content of this structure except - * as directed by the documentation of a specific implementation. */ -typedef struct psa_key_policy_s psa_key_policy_t; - -/** \brief Initialize a key policy structure to a default that forbids all - * usage of the key. - * - * \param[out] policy The policy object to initialize. - */ -void psa_key_policy_init(psa_key_policy_t *policy); - -/** \brief Set the standard fields of a policy structure. - * - * Note that this function does not make any consistency check of the - * parameters. The values are only checked when applying the policy to - * a key slot with psa_set_key_policy(). - * - * \param[out] policy The policy object to modify. - * \param usage The permitted uses for the key. - * \param alg The algorithm that the key may be used for. - */ -void psa_key_policy_set_usage(psa_key_policy_t *policy, - psa_key_usage_t usage, - psa_algorithm_t alg); - -/** \brief Retrieve the usage field of a policy structure. - * - * \param[in] policy The policy object to query. - * - * \return The permitted uses for a key with this policy. - */ -psa_key_usage_t psa_key_policy_get_usage(const psa_key_policy_t *policy); - -/** \brief Retrieve the algorithm field of a policy structure. - * - * \param[in] policy The policy object to query. - * - * \return The permitted algorithm for a key with this policy. - */ -psa_algorithm_t psa_key_policy_get_algorithm(const psa_key_policy_t *policy); - -/** \brief Set the usage policy on a key slot. - * - * This function must be called on an empty key slot, before importing, - * generating or creating a key in the slot. Changing the policy of an - * existing key is not permitted. - * - * Implementations may set restrictions on supported key policies - * depending on the key type and the key slot. - * - * \param key The key slot whose policy is to be changed. - * \param[in] policy The policy object to query. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_OCCUPIED_SLOT - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_set_key_policy(psa_key_slot_t key, - const psa_key_policy_t *policy); - -/** \brief Get the usage policy for a key slot. - * - * \param key The key slot whose policy is being queried. - * \param[out] policy On success, the key's policy. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_get_key_policy(psa_key_slot_t key, - psa_key_policy_t *policy); - -/**@}*/ - -/** \defgroup persistence Key lifetime - * @{ - */ - -/** Encoding of key lifetimes. - */ -typedef uint32_t psa_key_lifetime_t; - -/** A volatile key slot retains its content as long as the application is - * running. It is guaranteed to be erased on a power reset. - */ -#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000) - -/** A persistent key slot retains its content as long as it is not explicitly - * destroyed. - */ -#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001) - -/** A write-once key slot may not be modified once a key has been set. - * It will retain its content as long as the device remains operational. - */ -#define PSA_KEY_LIFETIME_WRITE_ONCE ((psa_key_lifetime_t)0x7fffffff) - -/** \brief Retrieve the lifetime of a key slot. - * - * The assignment of lifetimes to slots is implementation-dependent. - * - * \param key Slot to query. - * \param[out] lifetime On success, the lifetime value. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_INVALID_ARGUMENT - * The key slot is invalid. - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_get_key_lifetime(psa_key_slot_t key, - psa_key_lifetime_t *lifetime); - -/** \brief Change the lifetime of a key slot. - * - * Whether the lifetime of a key slot can be changed at all, and if so - * whether the lifetime of an occupied key slot can be changed, is - * implementation-dependent. - * - * When creating a persistent key, you must call this function before creating - * the key material with psa_import_key(), psa_generate_key() or - * psa_generator_import_key(). To open an existing persistent key, you must - * call this function with the correct lifetime value before using the slot - * for a cryptographic operation. Once a slot's lifetime has been set, - * the lifetime remains associated with the slot until a subsequent call to - * psa_set_key_lifetime(), until the key is wiped with psa_destroy_key or - * until the application terminates (or disconnects from the cryptography - * service, if the implementation offers such a possibility). - * - * \param key Slot whose lifetime is to be changed. - * \param lifetime The lifetime value to set for the given key slot. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_INVALID_ARGUMENT - * The key slot is invalid, - * or the lifetime value is invalid. - * \retval #PSA_ERROR_NOT_SUPPORTED - * The implementation does not support the specified lifetime value, - * at least for the specified key slot. - * \retval #PSA_ERROR_OCCUPIED_SLOT - * The slot contains a key, and the implementation does not support - * changing the lifetime of an occupied slot. - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_set_key_lifetime(psa_key_slot_t key, - psa_key_lifetime_t lifetime); - -/**@}*/ - -/** \defgroup hash Message digests - * @{ - */ - -/** The type of the state data structure for multipart hash operations. - * - * This is an implementation-defined \c struct. Applications should not - * make any assumptions about the content of this structure except - * as directed by the documentation of a specific implementation. */ -typedef struct psa_hash_operation_s psa_hash_operation_t; - -/** The size of the output of psa_hash_finish(), in bytes. - * - * This is also the hash size that psa_hash_verify() expects. - * - * \param alg A hash algorithm (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_HASH(\p alg) is true), or an HMAC algorithm - * (#PSA_ALG_HMAC(\c hash_alg) where \c hash_alg is a - * hash algorithm). - * - * \return The hash size for the specified hash algorithm. - * If the hash algorithm is not recognized, return 0. - * An implementation may return either 0 or the correct size - * for a hash algorithm that it recognizes, but does not support. - */ -#define PSA_HASH_SIZE(alg) \ - ( \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \ - PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \ - 0) - -/** Start a multipart hash operation. - * - * The sequence of operations to calculate a hash (message digest) - * is as follows: - * -# Allocate an operation object which will be passed to all the functions - * listed here. - * -# Call psa_hash_setup() to specify the algorithm. - * -# Call psa_hash_update() zero, one or more times, passing a fragment - * of the message each time. The hash that is calculated is the hash - * of the concatenation of these messages in order. - * -# To calculate the hash, call psa_hash_finish(). - * To compare the hash with an expected value, call psa_hash_verify(). - * - * The application may call psa_hash_abort() at any time after the operation - * has been initialized with psa_hash_setup(). - * - * After a successful call to psa_hash_setup(), the application must - * eventually terminate the operation. The following events terminate an - * operation: - * - A failed call to psa_hash_update(). - * - A call to psa_hash_finish(), psa_hash_verify() or psa_hash_abort(). - * - * \param[out] operation The operation object to use. - * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value - * such that #PSA_ALG_IS_HASH(\p alg) is true). - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \p alg is not supported or is not a hash algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_hash_setup(psa_hash_operation_t *operation, - psa_algorithm_t alg); - -/** Add a message fragment to a multipart hash operation. - * - * The application must call psa_hash_setup() before calling this function. - * - * If this function returns an error status, the operation becomes inactive. - * - * \param[in,out] operation Active hash operation. - * \param[in] input Buffer containing the message fragment to hash. - * \param input_length Size of the \p input buffer in bytes. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, or already completed). - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_hash_update(psa_hash_operation_t *operation, - const uint8_t *input, - size_t input_length); - -/** Finish the calculation of the hash of a message. - * - * The application must call psa_hash_setup() before calling this function. - * This function calculates the hash of the message formed by concatenating - * the inputs passed to preceding calls to psa_hash_update(). - * - * When this function returns, the operation becomes inactive. - * - * \warning Applications should not call this function if they expect - * a specific value for the hash. Call psa_hash_verify() instead. - * Beware that comparing integrity or authenticity data such as - * hash values with a function such as \c memcmp is risky - * because the time taken by the comparison may leak information - * about the hashed data which could allow an attacker to guess - * a valid hash and thereby bypass security controls. - * - * \param[in,out] operation Active hash operation. - * \param[out] hash Buffer where the hash is to be written. - * \param hash_size Size of the \p hash buffer in bytes. - * \param[out] hash_length On success, the number of bytes - * that make up the hash value. This is always - * #PSA_HASH_SIZE(\c alg) where \c alg is the - * hash algorithm that is calculated. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, or already completed). - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p hash buffer is too small. You can determine a - * sufficient buffer size by calling #PSA_HASH_SIZE(\c alg) - * where \c alg is the hash algorithm that is calculated. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_hash_finish(psa_hash_operation_t *operation, - uint8_t *hash, - size_t hash_size, - size_t *hash_length); - -/** Finish the calculation of the hash of a message and compare it with - * an expected value. - * - * The application must call psa_hash_setup() before calling this function. - * This function calculates the hash of the message formed by concatenating - * the inputs passed to preceding calls to psa_hash_update(). It then - * compares the calculated hash with the expected hash passed as a - * parameter to this function. - * - * When this function returns, the operation becomes inactive. - * - * \note Implementations shall make the best effort to ensure that the - * comparison between the actual hash and the expected hash is performed - * in constant time. - * - * \param[in,out] operation Active hash operation. - * \param[in] hash Buffer containing the expected hash value. - * \param hash_length Size of the \p hash buffer in bytes. - * - * \retval #PSA_SUCCESS - * The expected hash is identical to the actual hash of the message. - * \retval #PSA_ERROR_INVALID_SIGNATURE - * The hash of the message was calculated successfully, but it - * differs from the expected hash. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, or already completed). - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_hash_verify(psa_hash_operation_t *operation, - const uint8_t *hash, - size_t hash_length); - -/** Abort a hash operation. - * - * Aborting an operation frees all associated resources except for the - * \p operation structure itself. Once aborted, the operation object - * can be reused for another operation by calling - * psa_hash_setup() again. - * - * You may call this function any time after the operation object has - * been initialized by any of the following methods: - * - A call to psa_hash_setup(), whether it succeeds or not. - * - Initializing the \c struct to all-bits-zero. - * - Initializing the \c struct to logical zeros, e.g. - * `psa_hash_operation_t operation = {0}`. - * - * In particular, calling psa_hash_abort() after the operation has been - * terminated by a call to psa_hash_abort(), psa_hash_finish() or - * psa_hash_verify() is safe and has no effect. - * - * \param[in,out] operation Initialized hash operation. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BAD_STATE - * \p operation is not an active hash operation. - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_hash_abort(psa_hash_operation_t *operation); - -/**@}*/ - -/** \defgroup MAC Message authentication codes - * @{ - */ - -/** The type of the state data structure for multipart MAC operations. - * - * This is an implementation-defined \c struct. Applications should not - * make any assumptions about the content of this structure except - * as directed by the documentation of a specific implementation. */ -typedef struct psa_mac_operation_s psa_mac_operation_t; - -/** Start a multipart MAC calculation operation. - * - * This function sets up the calculation of the MAC - * (message authentication code) of a byte string. - * To verify the MAC of a message against an - * expected value, use psa_mac_verify_setup() instead. - * - * The sequence of operations to calculate a MAC is as follows: - * -# Allocate an operation object which will be passed to all the functions - * listed here. - * -# Call psa_mac_sign_setup() to specify the algorithm and key. - * The key remains associated with the operation even if the content - * of the key slot changes. - * -# Call psa_mac_update() zero, one or more times, passing a fragment - * of the message each time. The MAC that is calculated is the MAC - * of the concatenation of these messages in order. - * -# At the end of the message, call psa_mac_sign_finish() to finish - * calculating the MAC value and retrieve it. - * - * The application may call psa_mac_abort() at any time after the operation - * has been initialized with psa_mac_sign_setup(). - * - * After a successful call to psa_mac_sign_setup(), the application must - * eventually terminate the operation through one of the following methods: - * - A failed call to psa_mac_update(). - * - A call to psa_mac_sign_finish() or psa_mac_abort(). - * - * \param[out] operation The operation object to use. - * \param key Slot containing the key to use for the operation. - * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value - * such that #PSA_ALG_IS_MAC(alg) is true). - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \p key is not compatible with \p alg. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \p alg is not supported or is not a MAC algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, - psa_key_slot_t key, - psa_algorithm_t alg); - -/** Start a multipart MAC verification operation. - * - * This function sets up the verification of the MAC - * (message authentication code) of a byte string against an expected value. - * - * The sequence of operations to verify a MAC is as follows: - * -# Allocate an operation object which will be passed to all the functions - * listed here. - * -# Call psa_mac_verify_setup() to specify the algorithm and key. - * The key remains associated with the operation even if the content - * of the key slot changes. - * -# Call psa_mac_update() zero, one or more times, passing a fragment - * of the message each time. The MAC that is calculated is the MAC - * of the concatenation of these messages in order. - * -# At the end of the message, call psa_mac_verify_finish() to finish - * calculating the actual MAC of the message and verify it against - * the expected value. - * - * The application may call psa_mac_abort() at any time after the operation - * has been initialized with psa_mac_verify_setup(). - * - * After a successful call to psa_mac_verify_setup(), the application must - * eventually terminate the operation through one of the following methods: - * - A failed call to psa_mac_update(). - * - A call to psa_mac_verify_finish() or psa_mac_abort(). - * - * \param[out] operation The operation object to use. - * \param key Slot containing the key to use for the operation. - * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value - * such that #PSA_ALG_IS_MAC(\p alg) is true). - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \c key is not compatible with \c alg. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \c alg is not supported or is not a MAC algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, - psa_key_slot_t key, - psa_algorithm_t alg); - -/** Add a message fragment to a multipart MAC operation. - * - * The application must call psa_mac_sign_setup() or psa_mac_verify_setup() - * before calling this function. - * - * If this function returns an error status, the operation becomes inactive. - * - * \param[in,out] operation Active MAC operation. - * \param[in] input Buffer containing the message fragment to add to - * the MAC calculation. - * \param input_length Size of the \p input buffer in bytes. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, or already completed). - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_mac_update(psa_mac_operation_t *operation, - const uint8_t *input, - size_t input_length); - -/** Finish the calculation of the MAC of a message. - * - * The application must call psa_mac_sign_setup() before calling this function. - * This function calculates the MAC of the message formed by concatenating - * the inputs passed to preceding calls to psa_mac_update(). - * - * When this function returns, the operation becomes inactive. - * - * \warning Applications should not call this function if they expect - * a specific value for the MAC. Call psa_mac_verify_finish() instead. - * Beware that comparing integrity or authenticity data such as - * MAC values with a function such as \c memcmp is risky - * because the time taken by the comparison may leak information - * about the MAC value which could allow an attacker to guess - * a valid MAC and thereby bypass security controls. - * - * \param[in,out] operation Active MAC operation. - * \param[out] mac Buffer where the MAC value is to be written. - * \param mac_size Size of the \p mac buffer in bytes. - * \param[out] mac_length On success, the number of bytes - * that make up the MAC value. This is always - * #PSA_MAC_FINAL_SIZE(\c key_type, \c key_bits, \c alg) - * where \c key_type and \c key_bits are the type and - * bit-size respectively of the key and \c alg is the - * MAC algorithm that is calculated. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, or already completed). - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p mac buffer is too small. You can determine a - * sufficient buffer size by calling PSA_MAC_FINAL_SIZE(). - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, - uint8_t *mac, - size_t mac_size, - size_t *mac_length); - -/** Finish the calculation of the MAC of a message and compare it with - * an expected value. - * - * The application must call psa_mac_verify_setup() before calling this function. - * This function calculates the MAC of the message formed by concatenating - * the inputs passed to preceding calls to psa_mac_update(). It then - * compares the calculated MAC with the expected MAC passed as a - * parameter to this function. - * - * When this function returns, the operation becomes inactive. - * - * \note Implementations shall make the best effort to ensure that the - * comparison between the actual MAC and the expected MAC is performed - * in constant time. - * - * \param[in,out] operation Active MAC operation. - * \param[in] mac Buffer containing the expected MAC value. - * \param mac_length Size of the \p mac buffer in bytes. - * - * \retval #PSA_SUCCESS - * The expected MAC is identical to the actual MAC of the message. - * \retval #PSA_ERROR_INVALID_SIGNATURE - * The MAC of the message was calculated successfully, but it - * differs from the expected MAC. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, or already completed). - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, - const uint8_t *mac, - size_t mac_length); - -/** Abort a MAC operation. - * - * Aborting an operation frees all associated resources except for the - * \p operation structure itself. Once aborted, the operation object - * can be reused for another operation by calling - * psa_mac_sign_setup() or psa_mac_verify_setup() again. - * - * You may call this function any time after the operation object has - * been initialized by any of the following methods: - * - A call to psa_mac_sign_setup() or psa_mac_verify_setup(), whether - * it succeeds or not. - * - Initializing the \c struct to all-bits-zero. - * - Initializing the \c struct to logical zeros, e.g. - * `psa_mac_operation_t operation = {0}`. - * - * In particular, calling psa_mac_abort() after the operation has been - * terminated by a call to psa_mac_abort(), psa_mac_sign_finish() or - * psa_mac_verify_finish() is safe and has no effect. - * - * \param[in,out] operation Initialized MAC operation. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BAD_STATE - * \p operation is not an active MAC operation. - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_mac_abort(psa_mac_operation_t *operation); - -/**@}*/ - -/** \defgroup cipher Symmetric ciphers - * @{ - */ - -/** The type of the state data structure for multipart cipher operations. - * - * This is an implementation-defined \c struct. Applications should not - * make any assumptions about the content of this structure except - * as directed by the documentation of a specific implementation. */ -typedef struct psa_cipher_operation_s psa_cipher_operation_t; - -/** Set the key for a multipart symmetric encryption operation. - * - * The sequence of operations to encrypt a message with a symmetric cipher - * is as follows: - * -# Allocate an operation object which will be passed to all the functions - * listed here. - * -# Call psa_cipher_encrypt_setup() to specify the algorithm and key. - * The key remains associated with the operation even if the content - * of the key slot changes. - * -# Call either psa_cipher_generate_iv() or psa_cipher_set_iv() to - * generate or set the IV (initialization vector). You should use - * psa_cipher_generate_iv() unless the protocol you are implementing - * requires a specific IV value. - * -# Call psa_cipher_update() zero, one or more times, passing a fragment - * of the message each time. - * -# Call psa_cipher_finish(). - * - * The application may call psa_cipher_abort() at any time after the operation - * has been initialized with psa_cipher_encrypt_setup(). - * - * After a successful call to psa_cipher_encrypt_setup(), the application must - * eventually terminate the operation. The following events terminate an - * operation: - * - A failed call to psa_cipher_generate_iv(), psa_cipher_set_iv() - * or psa_cipher_update(). - * - A call to psa_cipher_finish() or psa_cipher_abort(). - * - * \param[out] operation The operation object to use. - * \param key Slot containing the key to use for the operation. - * \param alg The cipher algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_CIPHER(\p alg) is true). - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \p key is not compatible with \p alg. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \p alg is not supported or is not a cipher algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, - psa_key_slot_t key, - psa_algorithm_t alg); - -/** Set the key for a multipart symmetric decryption operation. - * - * The sequence of operations to decrypt a message with a symmetric cipher - * is as follows: - * -# Allocate an operation object which will be passed to all the functions - * listed here. - * -# Call psa_cipher_decrypt_setup() to specify the algorithm and key. - * The key remains associated with the operation even if the content - * of the key slot changes. - * -# Call psa_cipher_update() with the IV (initialization vector) for the - * decryption. If the IV is prepended to the ciphertext, you can call - * psa_cipher_update() on a buffer containing the IV followed by the - * beginning of the message. - * -# Call psa_cipher_update() zero, one or more times, passing a fragment - * of the message each time. - * -# Call psa_cipher_finish(). - * - * The application may call psa_cipher_abort() at any time after the operation - * has been initialized with psa_cipher_decrypt_setup(). - * - * After a successful call to psa_cipher_decrypt_setup(), the application must - * eventually terminate the operation. The following events terminate an - * operation: - * - A failed call to psa_cipher_update(). - * - A call to psa_cipher_finish() or psa_cipher_abort(). - * - * \param[out] operation The operation object to use. - * \param key Slot containing the key to use for the operation. - * \param alg The cipher algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_CIPHER(\p alg) is true). - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \p key is not compatible with \p alg. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \p alg is not supported or is not a cipher algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, - psa_key_slot_t key, - psa_algorithm_t alg); - -/** Generate an IV for a symmetric encryption operation. - * - * This function generates a random IV (initialization vector), nonce - * or initial counter value for the encryption operation as appropriate - * for the chosen algorithm, key type and key size. - * - * The application must call psa_cipher_encrypt_setup() before - * calling this function. - * - * If this function returns an error status, the operation becomes inactive. - * - * \param[in,out] operation Active cipher operation. - * \param[out] iv Buffer where the generated IV is to be written. - * \param iv_size Size of the \p iv buffer in bytes. - * \param[out] iv_length On success, the number of bytes of the - * generated IV. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, or IV already set). - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p iv buffer is too small. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, - unsigned char *iv, - size_t iv_size, - size_t *iv_length); - -/** Set the IV for a symmetric encryption or decryption operation. - * - * This function sets the random IV (initialization vector), nonce - * or initial counter value for the encryption or decryption operation. - * - * The application must call psa_cipher_encrypt_setup() before - * calling this function. - * - * If this function returns an error status, the operation becomes inactive. - * - * \note When encrypting, applications should use psa_cipher_generate_iv() - * instead of this function, unless implementing a protocol that requires - * a non-random IV. - * - * \param[in,out] operation Active cipher operation. - * \param[in] iv Buffer containing the IV to use. - * \param iv_length Size of the IV in bytes. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, or IV already set). - * \retval #PSA_ERROR_INVALID_ARGUMENT - * The size of \p iv is not acceptable for the chosen algorithm, - * or the chosen algorithm does not use an IV. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, - const unsigned char *iv, - size_t iv_length); - -/** Encrypt or decrypt a message fragment in an active cipher operation. - * - * Before calling this function, you must: - * 1. Call either psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup(). - * The choice of setup function determines whether this function - * encrypts or decrypts its input. - * 2. If the algorithm requires an IV, call psa_cipher_generate_iv() - * (recommended when encrypting) or psa_cipher_set_iv(). - * - * If this function returns an error status, the operation becomes inactive. - * - * \param[in,out] operation Active cipher operation. - * \param[in] input Buffer containing the message fragment to - * encrypt or decrypt. - * \param input_length Size of the \p input buffer in bytes. - * \param[out] output Buffer where the output is to be written. - * \param output_size Size of the \p output buffer in bytes. - * \param[out] output_length On success, the number of bytes - * that make up the returned output. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, IV required but - * not set, or already completed). - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p output buffer is too small. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, - const uint8_t *input, - size_t input_length, - unsigned char *output, - size_t output_size, - size_t *output_length); - -/** Finish encrypting or decrypting a message in a cipher operation. - * - * The application must call psa_cipher_encrypt_setup() or - * psa_cipher_decrypt_setup() before calling this function. The choice - * of setup function determines whether this function encrypts or - * decrypts its input. - * - * This function finishes the encryption or decryption of the message - * formed by concatenating the inputs passed to preceding calls to - * psa_cipher_update(). - * - * When this function returns, the operation becomes inactive. - * - * \param[in,out] operation Active cipher operation. - * \param[out] output Buffer where the output is to be written. - * \param output_size Size of the \p output buffer in bytes. - * \param[out] output_length On success, the number of bytes - * that make up the returned output. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not started, IV required but - * not set, or already completed). - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p output buffer is too small. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, - uint8_t *output, - size_t output_size, - size_t *output_length); - -/** Abort a cipher operation. - * - * Aborting an operation frees all associated resources except for the - * \p operation structure itself. Once aborted, the operation object - * can be reused for another operation by calling - * psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup() again. - * - * You may call this function any time after the operation object has - * been initialized by any of the following methods: - * - A call to psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup(), - * whether it succeeds or not. - * - Initializing the \c struct to all-bits-zero. - * - Initializing the \c struct to logical zeros, e.g. - * `psa_cipher_operation_t operation = {0}`. - * - * In particular, calling psa_cipher_abort() after the operation has been - * terminated by a call to psa_cipher_abort() or psa_cipher_finish() - * is safe and has no effect. - * - * \param[in,out] operation Initialized cipher operation. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BAD_STATE - * \p operation is not an active cipher operation. - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation); - -/**@}*/ - -/** \defgroup aead Authenticated encryption with associated data (AEAD) - * @{ - */ - -/** The tag size for an AEAD algorithm, in bytes. - * - * \param alg An AEAD algorithm - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_AEAD(\p alg) is true). - * - * \return The tag size for the specified algorithm. - * If the AEAD algorithm does not have an identified - * tag that can be distinguished from the rest of - * the ciphertext, return 0. - * If the AEAD algorithm is not recognized, return 0. - * An implementation may return either 0 or a - * correct size for an AEAD algorithm that it - * recognizes, but does not support. - */ -#define PSA_AEAD_TAG_LENGTH(alg) \ - (PSA_ALG_IS_AEAD(alg) ? \ - (((alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> PSA_AEAD_TAG_LENGTH_OFFSET) : \ - 0) - -/** Process an authenticated encryption operation. - * - * \param key Slot containing the key to use. - * \param alg The AEAD algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_AEAD(\p alg) is true). - * \param[in] nonce Nonce or IV to use. - * \param nonce_length Size of the \p nonce buffer in bytes. - * \param[in] additional_data Additional data that will be authenticated - * but not encrypted. - * \param additional_data_length Size of \p additional_data in bytes. - * \param[in] plaintext Data that will be authenticated and - * encrypted. - * \param plaintext_length Size of \p plaintext in bytes. - * \param[out] ciphertext Output buffer for the authenticated and - * encrypted data. The additional data is not - * part of this output. For algorithms where the - * encrypted data and the authentication tag - * are defined as separate outputs, the - * authentication tag is appended to the - * encrypted data. - * \param ciphertext_size Size of the \p ciphertext buffer in bytes. - * This must be at least - * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(\p alg, - * \p plaintext_length). - * \param[out] ciphertext_length On success, the size of the output - * in the \b ciphertext buffer. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \p key is not compatible with \p alg. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \p alg is not supported or is not an AEAD algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_aead_encrypt(psa_key_slot_t key, - psa_algorithm_t alg, - const uint8_t *nonce, - size_t nonce_length, - const uint8_t *additional_data, - size_t additional_data_length, - const uint8_t *plaintext, - size_t plaintext_length, - uint8_t *ciphertext, - size_t ciphertext_size, - size_t *ciphertext_length); - -/** Process an authenticated decryption operation. - * - * \param key Slot containing the key to use. - * \param alg The AEAD algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_AEAD(\p alg) is true). - * \param[in] nonce Nonce or IV to use. - * \param nonce_length Size of the \p nonce buffer in bytes. - * \param[in] additional_data Additional data that has been authenticated - * but not encrypted. - * \param additional_data_length Size of \p additional_data in bytes. - * \param[in] ciphertext Data that has been authenticated and - * encrypted. For algorithms where the - * encrypted data and the authentication tag - * are defined as separate inputs, the buffer - * must contain the encrypted data followed - * by the authentication tag. - * \param ciphertext_length Size of \p ciphertext in bytes. - * \param[out] plaintext Output buffer for the decrypted data. - * \param plaintext_size Size of the \p plaintext buffer in bytes. - * This must be at least - * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(\p alg, - * \p ciphertext_length). - * \param[out] plaintext_length On success, the size of the output - * in the \b plaintext buffer. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_INVALID_SIGNATURE - * The ciphertext is not authentic. - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \p key is not compatible with \p alg. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \p alg is not supported or is not an AEAD algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_aead_decrypt(psa_key_slot_t key, - psa_algorithm_t alg, - const uint8_t *nonce, - size_t nonce_length, - const uint8_t *additional_data, - size_t additional_data_length, - const uint8_t *ciphertext, - size_t ciphertext_length, - uint8_t *plaintext, - size_t plaintext_size, - size_t *plaintext_length); - -/**@}*/ - -/** \defgroup asymmetric Asymmetric cryptography - * @{ - */ - -/** - * \brief ECDSA signature size for a given curve bit size - * - * \param curve_bits Curve size in bits. - * \return Signature size in bytes. - * - * \note This macro returns a compile-time constant if its argument is one. - */ -#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \ - (PSA_BITS_TO_BYTES(curve_bits) * 2) - -/** - * \brief Sign a hash or short message with a private key. - * - * Note that to perform a hash-and-sign signature algorithm, you must - * first calculate the hash by calling psa_hash_setup(), psa_hash_update() - * and psa_hash_finish(). Then pass the resulting hash as the \p hash - * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) - * to determine the hash algorithm to use. - * - * \param key Key slot containing an asymmetric key pair. - * \param alg A signature algorithm that is compatible with - * the type of \p key. - * \param[in] hash The hash or message to sign. - * \param hash_length Size of the \p hash buffer in bytes. - * \param[out] signature Buffer where the signature is to be written. - * \param signature_size Size of the \p signature buffer in bytes. - * \param[out] signature_length On success, the number of bytes - * that make up the returned signature value. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p signature buffer is too small. You can - * determine a sufficient buffer size by calling - * #PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) - * where \c key_type and \c key_bits are the type and bit-size - * respectively of \p key. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_asymmetric_sign(psa_key_slot_t key, - psa_algorithm_t alg, - const uint8_t *hash, - size_t hash_length, - uint8_t *signature, - size_t signature_size, - size_t *signature_length); - -/** - * \brief Verify the signature a hash or short message using a public key. - * - * Note that to perform a hash-and-sign signature algorithm, you must - * first calculate the hash by calling psa_hash_setup(), psa_hash_update() - * and psa_hash_finish(). Then pass the resulting hash as the \p hash - * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) - * to determine the hash algorithm to use. - * - * \param key Key slot containing a public key or an - * asymmetric key pair. - * \param alg A signature algorithm that is compatible with - * the type of \p key. - * \param[in] hash The hash or message whose signature is to be - * verified. - * \param hash_length Size of the \p hash buffer in bytes. - * \param[in] signature Buffer containing the signature to verify. - * \param signature_length Size of the \p signature buffer in bytes. - * - * \retval #PSA_SUCCESS - * The signature is valid. - * \retval #PSA_ERROR_INVALID_SIGNATURE - * The calculation was perfomed successfully, but the passed - * signature is not a valid signature. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_asymmetric_verify(psa_key_slot_t key, - psa_algorithm_t alg, - const uint8_t *hash, - size_t hash_length, - const uint8_t *signature, - size_t signature_length); - -#define PSA_RSA_MINIMUM_PADDING_SIZE(alg) \ - (PSA_ALG_IS_RSA_OAEP(alg) ? \ - 2 * PSA_HASH_FINAL_SIZE(PSA_ALG_RSA_OAEP_GET_HASH(alg)) + 1 : \ - 11 /*PKCS#1v1.5*/) - -/** - * \brief Encrypt a short message with a public key. - * - * \param key Key slot containing a public key or an - * asymmetric key pair. - * \param alg An asymmetric encryption algorithm that is - * compatible with the type of \p key. - * \param[in] input The message to encrypt. - * \param input_length Size of the \p input buffer in bytes. - * \param[in] salt A salt or label, if supported by the - * encryption algorithm. - * If the algorithm does not support a - * salt, pass \c NULL. - * If the algorithm supports an optional - * salt and you do not want to pass a salt, - * pass \c NULL. - * - * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is - * supported. - * \param salt_length Size of the \p salt buffer in bytes. - * If \p salt is \c NULL, pass 0. - * \param[out] output Buffer where the encrypted message is to - * be written. - * \param output_size Size of the \p output buffer in bytes. - * \param[out] output_length On success, the number of bytes - * that make up the returned output. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p output buffer is too small. You can - * determine a sufficient buffer size by calling - * #PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) - * where \c key_type and \c key_bits are the type and bit-size - * respectively of \p key. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_asymmetric_encrypt(psa_key_slot_t key, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - const uint8_t *salt, - size_t salt_length, - uint8_t *output, - size_t output_size, - size_t *output_length); - -/** - * \brief Decrypt a short message with a private key. - * - * \param key Key slot containing an asymmetric key pair. - * \param alg An asymmetric encryption algorithm that is - * compatible with the type of \p key. - * \param[in] input The message to decrypt. - * \param input_length Size of the \p input buffer in bytes. - * \param[in] salt A salt or label, if supported by the - * encryption algorithm. - * If the algorithm does not support a - * salt, pass \c NULL. - * If the algorithm supports an optional - * salt and you do not want to pass a salt, - * pass \c NULL. - * - * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is - * supported. - * \param salt_length Size of the \p salt buffer in bytes. - * If \p salt is \c NULL, pass 0. - * \param[out] output Buffer where the decrypted message is to - * be written. - * \param output_size Size of the \c output buffer in bytes. - * \param[out] output_length On success, the number of bytes - * that make up the returned output. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BUFFER_TOO_SMALL - * The size of the \p output buffer is too small. You can - * determine a sufficient buffer size by calling - * #PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) - * where \c key_type and \c key_bits are the type and bit-size - * respectively of \p key. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY - * \retval #PSA_ERROR_INVALID_PADDING - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_asymmetric_decrypt(psa_key_slot_t key, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - const uint8_t *salt, - size_t salt_length, - uint8_t *output, - size_t output_size, - size_t *output_length); - -/**@}*/ - -/** \defgroup generators Generators - * @{ - */ - -/** The type of the state data structure for generators. - * - * Before calling any function on a generator, the application must - * initialize it by any of the following means: - * - Set the structure to all-bits-zero, for example: - * \code - * psa_crypto_generator_t generator; - * memset(&generator, 0, sizeof(generator)); - * \endcode - * - Initialize the structure to logical zero values, for example: - * \code - * psa_crypto_generator_t generator = {0}; - * \endcode - * - Initialize the structure to the initializer #PSA_CRYPTO_GENERATOR_INIT, - * for example: - * \code - * psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT; - * \endcode - * - Assign the result of the function psa_crypto_generator_init() - * to the structure, for example: - * \code - * psa_crypto_generator_t generator; - * generator = psa_crypto_generator_init(); - * \endcode - * - * This is an implementation-defined \c struct. Applications should not - * make any assumptions about the content of this structure except - * as directed by the documentation of a specific implementation. - */ -typedef struct psa_crypto_generator_s psa_crypto_generator_t; - -/** \def PSA_CRYPTO_GENERATOR_INIT - * - * This macro returns a suitable initializer for a generator object - * of type #psa_crypto_generator_t. - */ -#ifdef __DOXYGEN_ONLY__ -/* This is an example definition for documentation purposes. - * Implementations should define a suitable value in `crypto_struct.h`. - */ -#define PSA_CRYPTO_GENERATOR_INIT {0} -#endif - -/** Return an initial value for a generator object. - */ -static psa_crypto_generator_t psa_crypto_generator_init(void); - -/** Retrieve the current capacity of a generator. - * - * The capacity of a generator is the maximum number of bytes that it can - * return. Reading *N* bytes from a generator reduces its capacity by *N*. - * - * \param[in] generator The generator to query. - * \param[out] capacity On success, the capacity of the generator. - * - * \retval PSA_SUCCESS - * \retval PSA_ERROR_BAD_STATE - * \retval PSA_ERROR_COMMUNICATION_FAILURE - */ -psa_status_t psa_get_generator_capacity(const psa_crypto_generator_t *generator, - size_t *capacity); - -/** Read some data from a generator. - * - * This function reads and returns a sequence of bytes from a generator. - * The data that is read is discarded from the generator. The generator's - * capacity is decreased by the number of bytes read. - * - * \param[in,out] generator The generator object to read from. - * \param[out] output Buffer where the generator output will be - * written. - * \param output_length Number of bytes to output. - * - * \retval PSA_SUCCESS - * \retval PSA_ERROR_INSUFFICIENT_CAPACITY - * There were fewer than \p output_length bytes - * in the generator. Note that in this case, no - * output is written to the output buffer. - * The generator's capacity is set to 0, thus - * subsequent calls to this function will not - * succeed, even with a smaller output buffer. - * \retval PSA_ERROR_BAD_STATE - * \retval PSA_ERROR_INSUFFICIENT_MEMORY - * \retval PSA_ERROR_COMMUNICATION_FAILURE - * \retval PSA_ERROR_HARDWARE_FAILURE - * \retval PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_generator_read(psa_crypto_generator_t *generator, - uint8_t *output, - size_t output_length); - -/** Create a symmetric key from data read from a generator. - * - * This function reads a sequence of bytes from a generator and imports - * these bytes as a key. - * The data that is read is discarded from the generator. The generator's - * capacity is decreased by the number of bytes read. - * - * This function is equivalent to calling #psa_generator_read and - * passing the resulting output to #psa_import_key, but - * if the implementation provides an isolation boundary then - * the key material is not exposed outside the isolation boundary. - * - * \param key Slot where the key will be stored. This must be a - * valid slot for a key of the chosen type. It must - * be unoccupied. - * \param type Key type (a \c PSA_KEY_TYPE_XXX value). - * This must be a symmetric key type. - * \param bits Key size in bits. - * \param[in,out] generator The generator object to read from. - * - * \retval PSA_SUCCESS - * Success. - * \retval PSA_ERROR_INSUFFICIENT_CAPACITY - * There were fewer than \p output_length bytes - * in the generator. Note that in this case, no - * output is written to the output buffer. - * The generator's capacity is set to 0, thus - * subsequent calls to this function will not - * succeed, even with a smaller output buffer. - * \retval PSA_ERROR_NOT_SUPPORTED - * The key type or key size is not supported, either by the - * implementation in general or in this particular slot. - * \retval PSA_ERROR_BAD_STATE - * \retval PSA_ERROR_INVALID_ARGUMENT - * The key slot is invalid. - * \retval PSA_ERROR_OCCUPIED_SLOT - * There is already a key in the specified slot. - * \retval PSA_ERROR_INSUFFICIENT_MEMORY - * \retval PSA_ERROR_INSUFFICIENT_STORAGE - * \retval PSA_ERROR_COMMUNICATION_FAILURE - * \retval PSA_ERROR_HARDWARE_FAILURE - * \retval PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_generator_import_key(psa_key_slot_t key, - psa_key_type_t type, - size_t bits, - psa_crypto_generator_t *generator); - -/** Abort a generator. - * - * Once a generator has been aborted, its capacity is zero. - * Aborting a generator frees all associated resources except for the - * \c generator structure itself. - * - * This function may be called at any time as long as the generator - * object has been initialized to #PSA_CRYPTO_GENERATOR_INIT, to - * psa_crypto_generator_init() or a zero value. In particular, it is valid - * to call psa_generator_abort() twice, or to call psa_generator_abort() - * on a generator that has not been set up. - * - * Once aborted, the generator object may be called. - * - * \param[in,out] generator The generator to abort. - * - * \retval PSA_SUCCESS - * \retval PSA_ERROR_BAD_STATE - * \retval PSA_ERROR_COMMUNICATION_FAILURE - * \retval PSA_ERROR_HARDWARE_FAILURE - * \retval PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_generator_abort(psa_crypto_generator_t *generator); - -/** Use the maximum possible capacity for a generator. - * - * Use this value as the capacity argument when setting up a generator - * to indicate that the generator should have the maximum possible capacity. - * The value of the maximum possible capacity depends on the generator - * algorithm. - */ -#define PSA_GENERATOR_UNBRIDLED_CAPACITY ((size_t)(-1)) - -/**@}*/ - -/** \defgroup derivation Key derivation - * @{ - */ - -/** Set up a key derivation operation. - * - * A key derivation algorithm takes three inputs: a secret input \p key and - * two non-secret inputs \p label and p salt. - * The result of this function is a byte generator which can - * be used to produce keys and other cryptographic material. - * - * The role of \p label and \p salt is as follows: - * - For HKDF (#PSA_ALG_HKDF), \p salt is the salt used in the "extract" step - * and \p label is the info string used in the "expand" step. - * - * \param[in,out] generator The generator object to set up. It must - * have been initialized to all-bits-zero, - * a logical zero (`{0}`), - * \c PSA_CRYPTO_GENERATOR_INIT or - * psa_crypto_generator_init(). - * \param key Slot containing the secret key to use. - * \param alg The key derivation algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_KEY_DERIVATION(\p alg) is true). - * \param[in] salt Salt to use. - * \param salt_length Size of the \p salt buffer in bytes. - * \param[in] label Label to use. - * \param label_length Size of the \p label buffer in bytes. - * \param capacity The maximum number of bytes that the - * generator will be able to provide. - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \c key is not compatible with \c alg, - * or \p capacity is too large for the specified algorithm and key. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \c alg is not supported or is not a key derivation algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_key_derivation(psa_crypto_generator_t *generator, - psa_key_slot_t key, - psa_algorithm_t alg, - const uint8_t *salt, - size_t salt_length, - const uint8_t *label, - size_t label_length, - size_t capacity); - -/** Set up a key agreement operation. - * - * A key agreement algorithm takes two inputs: a private key \p private_key - * a public key \p peer_key. - * The result of this function is a byte generator which can - * be used to produce keys and other cryptographic material. - * - * The resulting generator always has the maximum capacity permitted by - * the algorithm. - * - * \param[in,out] generator The generator object to set up. It must - * have been initialized to all-bits-zero, - * a logical zero (`{0}`), - * \c PSA_CRYPTO_GENERATOR_INIT or - * psa_crypto_generator_init(). - * \param private_key Slot containing the private key to use. - * \param[in] peer_key Public key of the peer. It must be - * in the same format that psa_import_key() - * accepts. The standard formats for public - * keys are documented in the documentation - * of psa_export_public_key(). - * \param peer_key_length Size of \p peer_key in bytes. - * \param alg The key agreement algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_KEY_AGREEMENT(\p alg) is true). - * - * \retval #PSA_SUCCESS - * Success. - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \c private_key is not compatible with \c alg, - * or \p peer_key is not valid for \c alg or not compatible with - * \c private_key. - * \retval #PSA_ERROR_NOT_SUPPORTED - * \c alg is not supported or is not a key derivation algorithm. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -psa_status_t psa_key_agreement(psa_crypto_generator_t *generator, - psa_key_slot_t private_key, - const uint8_t *peer_key, - size_t peer_key_length, - psa_algorithm_t alg); - -/**@}*/ - -/** \defgroup random Random generation - * @{ - */ - -/** - * \brief Generate random bytes. - * - * \warning This function **can** fail! Callers MUST check the return status - * and MUST NOT use the content of the output buffer if the return - * status is not #PSA_SUCCESS. - * - * \note To generate a key, use psa_generate_key() instead. - * - * \param[out] output Output buffer for the generated data. - * \param output_size Number of bytes to generate and output. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_generate_random(uint8_t *output, - size_t output_size); - -/** Extra parameters for RSA key generation. - * - * You may pass a pointer to a structure of this type as the \c extra - * parameter to psa_generate_key(). - */ -typedef struct { - uint32_t e; /**< Public exponent value. Default: 65537. */ -} psa_generate_key_extra_rsa; - -/** - * \brief Generate a key or key pair. - * - * \param key Slot where the key will be stored. This must be a - * valid slot for a key of the chosen type. It must - * be unoccupied. - * \param type Key type (a \c PSA_KEY_TYPE_XXX value). - * \param bits Key size in bits. - * \param[in] extra Extra parameters for key generation. The - * interpretation of this parameter depends on - * \p type. All types support \c NULL to use - * default parameters. Implementation that support - * the generation of vendor-specific key types - * that allow extra parameters shall document - * the format of these extra parameters and - * the default values. For standard parameters, - * the meaning of \p extra is as follows: - * - For a symmetric key type (a type such - * that #PSA_KEY_TYPE_IS_ASYMMETRIC(\p type) is - * false), \p extra must be \c NULL. - * - For an elliptic curve key type (a type - * such that #PSA_KEY_TYPE_IS_ECC(\p type) is - * false), \p extra must be \c NULL. - * - For an RSA key (\p type is - * #PSA_KEY_TYPE_RSA_KEYPAIR), \p extra is an - * optional #psa_generate_key_extra_rsa structure - * specifying the public exponent. The - * default public exponent used when \p extra - * is \c NULL is 65537. - * \param extra_size Size of the buffer that \p extra - * points to, in bytes. Note that if \p extra is - * \c NULL then \p extra_size must be zero. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_generate_key(psa_key_slot_t key, - psa_key_type_t type, - size_t bits, - const void *extra, - size_t extra_size); - -/**@}*/ - -#ifdef __cplusplus -} -#endif - -/* The file "crypto_sizes.h" contains definitions for size calculation - * macros whose definitions are implementation-specific. */ -#include "crypto_sizes.h" - -/* The file "crypto_struct.h" contains definitions for - * implementation-specific structs that are declared above. */ -#include "crypto_struct.h" - -/* The file "crypto_extra.h" contains vendor-specific definitions. This - * can include vendor-defined algorithms, extra functions, etc. */ -#include "crypto_extra.h" - -#endif /* PSA_CRYPTO_H */ diff --git a/features/mbedtls/inc/psa/crypto_driver.h b/features/mbedtls/inc/psa/crypto_driver.h deleted file mode 100644 index a52ecc427c1..00000000000 --- a/features/mbedtls/inc/psa/crypto_driver.h +++ /dev/null @@ -1,1787 +0,0 @@ -/** - * \file psa/crypto_driver.h - * \brief Platform Security Architecture cryptographic driver module - * - * This file describes the PSA Crypto Driver Model, containing functions for - * driver developers to implement to enable hardware to be called in a - * standardized way by a PSA Cryptographic API implementation. The functions - * comprising the driver model, which driver authors implement, are not - * intended to be called by application developers. - */ - -/* - * 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 PSA_CRYPTO_DRIVER_H -#define PSA_CRYPTO_DRIVER_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** The following types are redefinitions from the psa/crypto.h file. - * It is intended that these will be moved to a new common header file to - * avoid duplication. They are included here for expediency in publication. - */ -typedef uint32_t psa_status_t; -typedef uint32_t psa_algorithm_t; -typedef uint8_t psa_encrypt_or_decrypt_t; -typedef uint32_t psa_key_slot_t; -typedef uint32_t psa_key_type_t; -typedef uint32_t psa_key_usage_t; - -#define PSA_CRYPTO_DRIVER_ENCRYPT 1 -#define PSA_CRYPTO_DRIVER_DECRYPT 0 - -/** \defgroup opaque_mac Opaque Message Authentication Code - * Generation and authentication of Message Authentication Codes (MACs) using - * opaque keys can be done either as a single function call (via the - * `psa_drv_mac_opaque_generate_t` or `psa_drv_mac_opaque_verify_t` functions), or in - * parts using the following sequence: - * - `psa_drv_mac_opaque_setup_t` - * - `psa_drv_mac_opaque_update_t` - * - `psa_drv_mac_opaque_update_t` - * - ... - * - `psa_drv_mac_opaque_finish_t` or `psa_drv_mac_opaque_finish_verify_t` - * - * If a previously started Opaque MAC operation needs to be terminated, it - * should be done so by the `psa_drv_mac_opaque_abort_t`. Failure to do so may - * result in allocated resources not being freed or in other undefined - * behavior. - */ -/**@{*/ -/** \brief A function that starts a MAC operation for a PSA Crypto Driver - * implementation using an opaque key - * - * \param[in,out] p_context A structure that will contain the - * hardware-specific MAC context - * \param[in] key_slot The slot of the key to be used for the - * operation - * \param[in] algorithm The algorithm to be used to underly the MAC - * operation - * - * \retval PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_mac_opaque_setup_t)(void *p_context, - psa_key_slot_t key_slot, - psa_algorithm_t algorithm); - -/** \brief A function that continues a previously started MAC operation using - * an opaque key - * - * \param[in,out] p_context A hardware-specific structure for the - * previously-established MAC operation to be - * continued - * \param[in] p_input A buffer containing the message to be appended - * to the MAC operation - * \param[in] input_length The size in bytes of the input message buffer - */ -typedef psa_status_t (*psa_drv_mac_opaque_update_t)(void *p_context, - const uint8_t *p_input, - size_t input_length); - -/** \brief a function that completes a previously started MAC operation by - * returning the resulting MAC using an opaque key - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started MAC operation to be - * finished - * \param[out] p_mac A buffer where the generated MAC will be - * placed - * \param[in] mac_size The size in bytes of the buffer that has been - * allocated for the `output` buffer - * \param[out] p_mac_length After completion, will contain the number of - * bytes placed in the `p_mac` buffer - * - * \retval PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_mac_opaque_finish_t)(void *p_context, - uint8_t *p_mac, - size_t mac_size, - size_t *p_mac_length); - -/** \brief A function that completes a previously started MAC operation by - * comparing the resulting MAC against a known value using an opaque key - * - * \param[in,out] p_context A hardware-specific structure for the previously - * started MAC operation to be fiinished - * \param[in] p_mac The MAC value against which the resulting MAC will - * be compared against - * \param[in] mac_length The size in bytes of the value stored in `p_mac` - * - * \retval PSA_SUCCESS - * The operation completed successfully and the MACs matched each - * other - * \retval PSA_ERROR_INVALID_SIGNATURE - * The operation completed successfully, but the calculated MAC did - * not match the provided MAC - */ -typedef psa_status_t (*psa_drv_mac_opaque_finish_verify_t)(void *p_context, - const uint8_t *p_mac, - size_t mac_length); - -/** \brief A function that aborts a previous started opaque-key MAC operation - - * \param[in,out] p_context A hardware-specific structure for the previously - * started MAC operation to be aborted - */ -typedef psa_status_t (*psa_drv_mac_opaque_abort_t)(void *p_context); - -/** \brief A function that performs a MAC operation in one command and returns - * the calculated MAC using an opaque key - * - * \param[in] p_input A buffer containing the message to be MACed - * \param[in] input_length The size in bytes of `p_input` - * \param[in] key_slot The slot of the key to be used - * \param[in] alg The algorithm to be used to underlie the MAC - * operation - * \param[out] p_mac A buffer where the generated MAC will be - * placed - * \param[in] mac_size The size in bytes of the `p_mac` buffer - * \param[out] p_mac_length After completion, will contain the number of - * bytes placed in the `output` buffer - * - * \retval PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_mac_opaque_generate_t)(const uint8_t *p_input, - size_t input_length, - psa_key_slot_t key_slot, - psa_algorithm_t alg, - uint8_t *p_mac, - size_t mac_size, - size_t *p_mac_length); - -/** \brief A function that performs an MAC operation in one command and - * compare the resulting MAC against a known value using an opaque key - * - * \param[in] p_input A buffer containing the message to be MACed - * \param[in] input_length The size in bytes of `input` - * \param[in] key_slot The slot of the key to be used - * \param[in] alg The algorithm to be used to underlie the MAC - * operation - * \param[in] p_mac The MAC value against which the resulting MAC will - * be compared against - * \param[in] mac_length The size in bytes of `mac` - * - * \retval PSA_SUCCESS - * The operation completed successfully and the MACs matched each - * other - * \retval PSA_ERROR_INVALID_SIGNATURE - * The operation completed successfully, but the calculated MAC did - * not match the provided MAC - */ -typedef psa_status_t (*psa_drv_mac_opaque_verify_t)(const uint8_t *p_input, - size_t input_length, - psa_key_slot_t key_slot, - psa_algorithm_t alg, - const uint8_t *p_mac, - size_t mac_length); - -/** \brief A struct containing all of the function pointers needed to - * implement MAC operations using opaque keys. - * - * PSA Crypto API implementations should populate the table as appropriate - * upon startup. - * - * If one of the functions is not implemented (such as - * `psa_drv_mac_opaque_generate_t`), it should be set to NULL. - * - * Driver implementers should ensure that they implement all of the functions - * that make sense for their hardware, and that they provide a full solution - * (for example, if they support `p_setup`, they should also support - * `p_update` and at least one of `p_finish` or `p_finish_verify`). - * - */ -typedef struct { - /**The size in bytes of the hardware-specific Opaque-MAC Context structure - */ - size_t context_size; - /** Function that performs the setup operation - */ - psa_drv_mac_opaque_setup_t *p_setup; - /** Function that performs the update operation - */ - psa_drv_mac_opaque_update_t *p_update; - /** Function that completes the operation - */ - psa_drv_mac_opaque_finish_t *p_finish; - /** Function that completed a MAC operation with a verify check - */ - psa_drv_mac_opaque_finish_verify_t *p_finish_verify; - /** Function that aborts a previoustly started operation - */ - psa_drv_mac_opaque_abort_t *p_abort; - /** Function that performs the MAC operation in one call - */ - psa_drv_mac_opaque_generate_t *p_mac; - /** Function that performs the MAC and verify operation in one call - */ - psa_drv_mac_opaque_verify_t *p_mac_verify; -} psa_drv_mac_opaque_t; -/**@}*/ - -/** \defgroup transparent_mac Transparent Message Authentication Code - * Generation and authentication of Message Authentication Codes (MACs) using - * transparent keys can be done either as a single function call (via the - * `psa_drv_mac_transparent_generate_t` or `psa_drv_mac_transparent_verify_t` - * functions), or in parts using the following sequence: - * - `psa_drv_mac_transparent_setup_t` - * - `psa_drv_mac_transparent_update_t` - * - `psa_drv_mac_transparent_update_t` - * - ... - * - `psa_drv_mac_transparent_finish_t` or `psa_drv_mac_transparent_finish_verify_t` - * - * If a previously started Transparent MAC operation needs to be terminated, it - * should be done so by the `psa_drv_mac_transparent_abort_t`. Failure to do so may - * result in allocated resources not being freed or in other undefined - * behavior. - * - */ -/**@{*/ - -/** \brief The hardware-specific transparent-key MAC context structure - * - * The contents of this structure are implementation dependent and are - * therefore not described here. - */ -typedef struct psa_drv_mac_transparent_context_s psa_drv_mac_transparent_context_t; - -/** \brief The function prototype for the setup operation of a - * transparent-key MAC operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_mac_transparent___setup - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying primitive, and `MAC_VARIANT` - * is the specific variant of a MAC operation (such as HMAC or CMAC) - * - * \param[in,out] p_context A structure that will contain the - * hardware-specific MAC context - * \param[in] p_key A buffer containing the cleartext key material - * to be used in the operation - * \param[in] key_length The size in bytes of the key material - * - * \retval PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_mac_transparent_setup_t)(psa_drv_mac_transparent_context_t *p_context, - const uint8_t *p_key, - size_t key_length); - -/** \brief The function prototype for the update operation of a - * transparent-key MAC operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_mac_transparent___update - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` - * is the specific variant of a MAC operation (such as HMAC or CMAC) - * - * \param[in,out] p_context A hardware-specific structure for the - * previously-established MAC operation to be - * continued - * \param[in] p_input A buffer containing the message to be appended - * to the MAC operation - * \param[in] input_length The size in bytes of the input message buffer - */ -typedef psa_status_t (*psa_drv_mac_transparent_update_t)(psa_drv_mac_transparent_context_t *p_context, - const uint8_t *p_input, - size_t input_length); - -/** \brief The function prototype for the finish operation of a - * transparent-key MAC operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_mac_transparent___finish - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is - * the specific variant of a MAC operation (such as HMAC or CMAC) - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started MAC operation to be - * finished - * \param[out] p_mac A buffer where the generated MAC will be placed - * \param[in] mac_length The size in bytes of the buffer that has been - * allocated for the `p_mac` buffer - * - * \retval PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_mac_transparent_finish_t)(psa_drv_mac_transparent_context_t *p_context, - uint8_t *p_mac, - size_t mac_length); - -/** \brief The function prototype for the finish and verify operation of a - * transparent-key MAC operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_mac_transparent___finish_verify - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is - * the specific variant of a MAC operation (such as HMAC or CMAC) - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started MAC operation to be - * verified and finished - * \param[in] p_mac A buffer containing the MAC that will be used - * for verification - * \param[in] mac_length The size in bytes of the data in the `p_mac` - * buffer - * - * \retval PSA_SUCCESS - * The operation completed successfully and the comparison matched - */ -typedef psa_status_t (*psa_drv_mac_transparent_finish_verify_t)(psa_drv_mac_transparent_context_t *p_context, - const uint8_t *p_mac, - size_t mac_length); - -/** \brief The function prototype for the abort operation for a previously - * started transparent-key MAC operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_mac_transparent___abort - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is - * the specific variant of a MAC operation (such as HMAC or CMAC) - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started MAC operation to be - * aborted - * - */ -typedef psa_status_t (*psa_drv_mac_transparent_abort_t)(psa_drv_mac_transparent_context_t *p_context); - -/** \brief The function prototype for a one-shot operation of a transparent-key - * MAC operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_mac_transparent__ - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is - * the specific variant of a MAC operation (such as HMAC or CMAC) - * - * \param[in] p_input A buffer containing the data to be MACed - * \param[in] input_length The length in bytes of the `p_input` data - * \param[in] p_key A buffer containing the key material to be used - * for the MAC operation - * \param[in] key_length The length in bytes of the `p_key` data - * \param[in] alg The algorithm to be performed - * \param[out] p_mac The buffer where the resulting MAC will be placed - * upon success - * \param[in] mac_length The length in bytes of the `p_mac` buffer - */ -typedef psa_status_t (*psa_drv_mac_transparent_t)(const uint8_t *p_input, - size_t input_length, - const uint8_t *p_key, - size_t key_length, - psa_algorithm_t alg, - uint8_t *p_mac, - size_t mac_length); - -/** \brief The function prototype for a one-shot operation of a transparent-key - * MAC Verify operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_mac_transparent___verify - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is - * the specific variant of a MAC operation (such as HMAC or CMAC) - * - * \param[in] p_input A buffer containing the data to be MACed - * \param[in] input_length The length in bytes of the `p_input` data - * \param[in] p_key A buffer containing the key material to be used - * for the MAC operation - * \param[in] key_length The length in bytes of the `p_key` data - * \param[in] alg The algorithm to be performed - * \param[in] p_mac The MAC data to be compared - * \param[in] mac_length The length in bytes of the `p_mac` buffer - * - * \retval PSA_SUCCESS - * The operation completed successfully and the comparison matched - */ -typedef psa_status_t (*psa_drv_mac_transparent_verify_t)(const uint8_t *p_input, - size_t input_length, - const uint8_t *p_key, - size_t key_length, - psa_algorithm_t alg, - const uint8_t *p_mac, - size_t mac_length); -/**@}*/ - -/** \defgroup opaque_cipher Opaque Symmetric Ciphers - * - * Encryption and Decryption using opaque keys in block modes other than ECB - * must be done in multiple parts, using the following flow: - * - `psa_drv_cipher_opaque_setup_t` - * - `psa_drv_cipher_opaque_set_iv_t` (optional depending upon block mode) - * - `psa_drv_cipher_opaque_update_t` - * - ... - * - `psa_drv_cipher_opaque_finish_t` - - * If a previously started Opaque Cipher operation needs to be terminated, it - * should be done so by the `psa_drv_cipher_opaque_abort_t`. Failure to do so may - * result in allocated resources not being freed or in other undefined - * behavior. - * - * In situations where a PSA Cryptographic API implementation is using a block - * mode not-supported by the underlying hardware or driver, it can construct - * the block mode itself, while calling the `psa_drv_cipher_opaque_ecb_t` function - * pointer for the cipher operations. - */ -/**@{*/ - -/** \brief A function pointer that provides the cipher setup function for - * opaque-key operations - * - * \param[in,out] p_context A structure that will contain the - * hardware-specific cipher context. - * \param[in] key_slot The slot of the key to be used for the - * operation - * \param[in] algorithm The algorithm to be used in the cipher - * operation - * \param[in] direction Indicates whether the operation is an encrypt - * or decrypt - * - * \retval PSA_SUCCESS - * \retval PSA_ERROR_NOT_SUPPORTED - */ -typedef psa_status_t (*psa_drv_cipher_opaque_setup_t)(void *p_context, - psa_key_slot_t key_slot, - psa_algorithm_t algorithm, - psa_encrypt_or_decrypt_t direction); - -/** \brief A function pointer that sets the initialization vector (if - * necessary) for an opaque cipher operation - * - * Rationale: The `psa_cipher_*` function in the PSA Cryptographic API has two - * IV functions: one to set the IV, and one to generate it internally. The - * generate function is not necessary for the drivers to implement as the PSA - * Crypto implementation can do the generation using its RNG features. - * - * \param[in,out] p_context A structure that contains the previously set up - * hardware-specific cipher context - * \param[in] p_iv A buffer containing the initialization vector - * \param[in] iv_length The size (in bytes) of the `p_iv` buffer - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_cipher_opaque_set_iv_t)(void *p_context, - const uint8_t *p_iv, - size_t iv_length); - -/** \brief A function that continues a previously started opaque-key cipher - * operation - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started cipher operation - * \param[in] p_input A buffer containing the data to be - * encrypted/decrypted - * \param[in] input_size The size in bytes of the buffer pointed to - * by `p_input` - * \param[out] p_output The caller-allocated buffer where the - * output will be placed - * \param[in] output_size The allocated size in bytes of the - * `p_output` buffer - * \param[out] p_output_length After completion, will contain the number - * of bytes placed in the `p_output` buffer - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_cipher_opaque_update_t)(void *p_context, - const uint8_t *p_input, - size_t input_size, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** \brief A function that completes a previously started opaque-key cipher - * operation - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started cipher operation - * \param[out] p_output The caller-allocated buffer where the output - * will be placed - * \param[in] output_size The allocated size in bytes of the `p_output` - * buffer - * \param[out] p_output_length After completion, will contain the number of - * bytes placed in the `p_output` buffer - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_cipher_opaque_finish_t)(void *p_context, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** \brief A function that aborts a previously started opaque-key cipher - * operation - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started cipher operation - */ -typedef psa_status_t (*psa_drv_cipher_opaque_abort_t)(void *p_context); - -/** \brief A function that performs the ECB block mode for opaque-key cipher - * operations - * - * Note: this function should only be used with implementations that do not - * provide a needed higher-level operation. - * - * \param[in] key_slot The slot of the key to be used for the operation - * \param[in] algorithm The algorithm to be used in the cipher operation - * \param[in] direction Indicates whether the operation is an encrypt or - * decrypt - * \param[in] p_input A buffer containing the data to be - * encrypted/decrypted - * \param[in] input_size The size in bytes of the buffer pointed to by - * `p_input` - * \param[out] p_output The caller-allocated buffer where the output will - * be placed - * \param[in] output_size The allocated size in bytes of the `p_output` - * buffer - * - * \retval PSA_SUCCESS - * \retval PSA_ERROR_NOT_SUPPORTED - */ -typedef psa_status_t (*psa_drv_cipher_opaque_ecb_t)(psa_key_slot_t key_slot, - psa_algorithm_t algorithm, - psa_encrypt_or_decrypt_t direction, - const uint8_t *p_input, - size_t input_size, - uint8_t *p_output, - size_t output_size); - -/** - * \brief A struct containing all of the function pointers needed to implement - * cipher operations using opaque keys. - * - * PSA Crypto API implementations should populate instances of the table as - * appropriate upon startup. - * - * If one of the functions is not implemented (such as - * `psa_drv_cipher_opaque_ecb_t`), it should be set to NULL. - */ -typedef struct { - /** The size in bytes of the hardware-specific Opaque Cipher context - * structure - */ - size_t size; - /** Function that performs the setup operation */ - psa_drv_cipher_opaque_setup_t *p_setup; - /** Function that sets the IV (if necessary) */ - psa_drv_cipher_opaque_set_iv_t *p_set_iv; - /** Function that performs the update operation */ - psa_drv_cipher_opaque_update_t *p_update; - /** Function that completes the operation */ - psa_drv_cipher_opaque_finish_t *p_finish; - /** Function that aborts the operation */ - psa_drv_cipher_opaque_abort_t *p_abort; - /** Function that performs ECB mode for the cipher - * (Danger: ECB mode should not be used directly by clients of the PSA - * Crypto Client API) - */ - psa_drv_cipher_opaque_ecb_t *p_ecb; -} psa_drv_cipher_opaque_t; - -/**@}*/ - -/** \defgroup transparent_cipher Transparent Block Cipher - * Encryption and Decryption using transparent keys in block modes other than - * ECB must be done in multiple parts, using the following flow: - * - `psa_drv_cipher_transparent_setup_t` - * - `psa_drv_cipher_transparent_set_iv_t` (optional depending upon block mode) - * - `psa_drv_cipher_transparent_update_t` - * - ... - * - `psa_drv_cipher_transparent_finish_t` - - * If a previously started Transparent Cipher operation needs to be terminated, - * it should be done so by the `psa_drv_cipher_transparent_abort_t`. Failure to do - * so may result in allocated resources not being freed or in other undefined - * behavior. - */ -/**@{*/ - -/** \brief The hardware-specific transparent-key Cipher context structure - * - * The contents of this structure are implementation dependent and are - * therefore not described here. - */ -typedef struct psa_drv_cipher_transparent_context_s psa_drv_cipher_transparent_context_t; - -/** \brief The function prototype for the setup operation of transparent-key - * block cipher operations. - * Functions that implement the prototype should be named in the following - * conventions: - * ~~~~~~~~~~~~~{.c} - * psa_drv_cipher_transparent_setup__ - * ~~~~~~~~~~~~~ - * Where - * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) - * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) - * or for stream ciphers: - * ~~~~~~~~~~~~~{.c} - * psa_drv_cipher_transparent_setup_ - * ~~~~~~~~~~~~~ - * Where `CIPHER_NAME` is the name of a stream cipher (i.e. RC4) - * - * \param[in,out] p_context A structure that will contain the - * hardware-specific cipher context - * \param[in] direction Indicates if the operation is an encrypt or a - * decrypt - * \param[in] p_key_data A buffer containing the cleartext key material - * to be used in the operation - * \param[in] key_data_size The size in bytes of the key material - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_cipher_transparent_setup_t)(psa_drv_cipher_transparent_context_t *p_context, - psa_encrypt_or_decrypt_t direction, - const uint8_t *p_key_data, - size_t key_data_size); - -/** \brief The function prototype for the set initialization vector operation - * of transparent-key block cipher operations - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_cipher_transparent_set_iv__ - * ~~~~~~~~~~~~~ - * Where - * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) - * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) - * - * \param[in,out] p_context A structure that contains the previously setup - * hardware-specific cipher context - * \param[in] p_iv A buffer containing the initialization vecotr - * \param[in] iv_length The size in bytes of the contents of `p_iv` - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_cipher_transparent_set_iv_t)(psa_drv_cipher_transparent_context_t *p_context, - const uint8_t *p_iv, - size_t iv_length); - -/** \brief The function prototype for the update operation of transparent-key - * block cipher operations. - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_cipher_transparent_update__ - * ~~~~~~~~~~~~~ - * Where - * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) - * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started cipher operation - * \param[in] p_input A buffer containing the data to be - * encrypted or decrypted - * \param[in] input_size The size in bytes of the `p_input` buffer - * \param[out] p_output A caller-allocated buffer where the - * generated output will be placed - * \param[in] output_size The size in bytes of the `p_output` buffer - * \param[out] p_output_length After completion, will contain the number - * of bytes placed in the `p_output` buffer - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_cipher_transparent_update_t)(psa_drv_cipher_transparent_context_t *p_context, - const uint8_t *p_input, - size_t input_size, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** \brief The function prototype for the finish operation of transparent-key - * block cipher operations. - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_cipher_transparent_finish__ - * ~~~~~~~~~~~~~ - * Where - * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) - * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started cipher operation - * \param[out] p_output A caller-allocated buffer where the generated - * output will be placed - * \param[in] output_size The size in bytes of the `p_output` buffer - * \param[out] p_output_length After completion, will contain the number of - * bytes placed in the `p_output` buffer - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_cipher_transparent_finish_t)(psa_drv_cipher_transparent_context_t *p_context, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** \brief The function prototype for the abort operation of transparent-key - * block cipher operations. - * - * Functions that implement the following prototype should be named in the - * following convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_cipher_transparent_abort__ - * ~~~~~~~~~~~~~ - * Where - * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) - * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started cipher operation - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_cipher_transparent_abort_t)(psa_drv_cipher_transparent_context_t *p_context); - -/**@}*/ - -/** \defgroup driver_digest Message Digests - * - * Generation and authentication of Message Digests (aka hashes) must be done - * in parts using the following sequence: - * - `psa_drv_hash_setup_t` - * - `psa_drv_hash_update_t` - * - ... - * - `psa_drv_hash_finish_t` - * - * If a previously started Message Digest operation needs to be terminated - * before the `psa_drv_hash_finish_t` operation is complete, it should be aborted - * by the `psa_drv_hash_abort_t`. Failure to do so may result in allocated - * resources not being freed or in other undefined behavior. - */ -/**@{*/ - -/** \brief The hardware-specific hash context structure - * - * The contents of this structure are implementation dependent and are - * therefore not described here - */ -typedef struct psa_drv_hash_context_s psa_drv_hash_context_t; - -/** \brief The function prototype for the start operation of a hash (message - * digest) operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_hash__setup - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying hash function - * - * \param[in,out] p_context A structure that will contain the - * hardware-specific hash context - * - * \retval PSA_SUCCESS Success. - */ -typedef psa_status_t (*psa_drv_hash_setup_t)(psa_drv_hash_context_t *p_context); - -/** \brief The function prototype for the update operation of a hash (message - * digest) operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_hash__update - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm - * - * \param[in,out] p_context A hardware-specific structure for the - * previously-established hash operation to be - * continued - * \param[in] p_input A buffer containing the message to be appended - * to the hash operation - * \param[in] input_length The size in bytes of the input message buffer - */ -typedef psa_status_t (*psa_drv_hash_update_t)(psa_drv_hash_context_t *p_context, - const uint8_t *p_input, - size_t input_length); - -/** \brief The prototype for the finish operation of a hash (message digest) - * operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_hash__finish - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm - * - * \param[in,out] p_context A hardware-specific structure for the - * previously started hash operation to be - * fiinished - * \param[out] p_output A buffer where the generated digest will be - * placed - * \param[in] output_size The size in bytes of the buffer that has been - * allocated for the `p_output` buffer - * \param[out] p_output_length The number of bytes placed in `p_output` after - * success - * - * \retval PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_hash_finish_t)(psa_drv_hash_context_t *p_context, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** \brief The function prototype for the abort operation of a hash (message - * digest) operation - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_hash__abort - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the underlying algorithm - * - * \param[in,out] p_context A hardware-specific structure for the previously - * started hash operation to be aborted - */ -typedef void (*psa_drv_hash_abort_t)(psa_drv_hash_context_t *p_context); - -/**@}*/ - - -/** \defgroup opaque_asymmetric Opaque Asymmetric Cryptography - * - * Since the amount of data that can (or should) be encrypted or signed using - * asymmetric keys is limited by the key size, asymmetric key operations using - * opaque keys must be done in single function calls. - */ -/**@{*/ - -/** - * \brief A function that signs a hash or short message with a private key - * - * \param[in] key_slot Key slot of an asymmetric key pair - * \param[in] alg A signature algorithm that is compatible - * with the type of `key` - * \param[in] p_hash The hash to sign - * \param[in] hash_length Size of the `p_hash` buffer in bytes - * \param[out] p_signature Buffer where the signature is to be written - * \param[in] signature_size Size of the `p_signature` buffer in bytes - * \param[out] p_signature_length On success, the number of bytes - * that make up the returned signature value - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_asymmetric_opaque_sign_t)(psa_key_slot_t key_slot, - psa_algorithm_t alg, - const uint8_t *p_hash, - size_t hash_length, - uint8_t *p_signature, - size_t signature_size, - size_t *p_signature_length); - -/** - * \brief A function that verifies the signature a hash or short message using - * an asymmetric public key - * - * \param[in] key_slot Key slot of a public key or an asymmetric key - * pair - * \param[in] alg A signature algorithm that is compatible with - * the type of `key` - * \param[in] p_hash The hash whose signature is to be verified - * \param[in] hash_length Size of the `p_hash` buffer in bytes - * \param[in] p_signature Buffer containing the signature to verify - * \param[in] signature_length Size of the `p_signature` buffer in bytes - * - * \retval PSA_SUCCESS - * The signature is valid. - */ -typedef psa_status_t (*psa_drv_asymmetric_opaque_verify_t)(psa_key_slot_t key_slot, - psa_algorithm_t alg, - const uint8_t *p_hash, - size_t hash_length, - const uint8_t *p_signature, - size_t signature_length); - -/** - * \brief A function that encrypts a short message with an asymmetric public - * key - * - * \param[in] key_slot Key slot of a public key or an asymmetric key - * pair - * \param[in] alg An asymmetric encryption algorithm that is - * compatible with the type of `key` - * \param[in] p_input The message to encrypt - * \param[in] input_length Size of the `p_input` buffer in bytes - * \param[in] p_salt A salt or label, if supported by the - * encryption algorithm - * If the algorithm does not support a - * salt, pass `NULL`. - * If the algorithm supports an optional - * salt and you do not want to pass a salt, - * pass `NULL`. - * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is - * supported. - * \param[in] salt_length Size of the `p_salt` buffer in bytes - * If `p_salt` is `NULL`, pass 0. - * \param[out] p_output Buffer where the encrypted message is to - * be written - * \param[in] output_size Size of the `p_output` buffer in bytes - * \param[out] p_output_length On success, the number of bytes that make up - * the returned output - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_asymmetric_opaque_encrypt_t)(psa_key_slot_t key_slot, - psa_algorithm_t alg, - const uint8_t *p_input, - size_t input_length, - const uint8_t *p_salt, - size_t salt_length, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** - * \brief Decrypt a short message with an asymmetric private key. - * - * \param[in] key_slot Key slot of an asymmetric key pair - * \param[in] alg An asymmetric encryption algorithm that is - * compatible with the type of `key` - * \param[in] p_input The message to decrypt - * \param[in] input_length Size of the `p_input` buffer in bytes - * \param[in] p_salt A salt or label, if supported by the - * encryption algorithm - * If the algorithm does not support a - * salt, pass `NULL`. - * If the algorithm supports an optional - * salt and you do not want to pass a salt, - * pass `NULL`. - * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is - * supported. - * \param[in] salt_length Size of the `p_salt` buffer in bytes - * If `p_salt` is `NULL`, pass 0. - * \param[out] p_output Buffer where the decrypted message is to - * be written - * \param[in] output_size Size of the `p_output` buffer in bytes - * \param[out] p_output_length On success, the number of bytes - * that make up the returned output - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_asymmetric_opaque_decrypt_t)(psa_key_slot_t key_slot, - psa_algorithm_t alg, - const uint8_t *p_input, - size_t input_length, - const uint8_t *p_salt, - size_t salt_length, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** - * \brief A struct containing all of the function pointers needed to implement - * asymmetric cryptographic operations using opaque keys. - * - * PSA Crypto API implementations should populate instances of the table as - * appropriate upon startup. - * - * If one of the functions is not implemented, it should be set to NULL. - */ -typedef struct { - /** Function that performs the asymmetric sign operation */ - psa_drv_asymmetric_opaque_sign_t *p_sign; - /** Function that performs the asymmetric verify operation */ - psa_drv_asymmetric_opaque_verify_t *p_verify; - /** Function that performs the asymmetric encrypt operation */ - psa_drv_asymmetric_opaque_encrypt_t *p_encrypt; - /** Function that performs the asymmetric decrypt operation */ - psa_drv_asymmetric_opaque_decrypt_t *p_decrypt; -} psa_drv_asymmetric_opaque_t; - -/**@}*/ - -/** \defgroup transparent_asymmetric Transparent Asymmetric Cryptography - * - * Since the amount of data that can (or should) be encrypted or signed using - * asymmetric keys is limited by the key size, asymmetric key operations using - * transparent keys must be done in single function calls. - */ -/**@{*/ - - -/** - * \brief A function that signs a hash or short message with a transparent - * asymmetric private key - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_asymmetric__sign - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the signing algorithm - * - * \param[in] p_key A buffer containing the private key - * material - * \param[in] key_size The size in bytes of the `p_key` data - * \param[in] alg A signature algorithm that is compatible - * with the type of `p_key` - * \param[in] p_hash The hash or message to sign - * \param[in] hash_length Size of the `p_hash` buffer in bytes - * \param[out] p_signature Buffer where the signature is to be written - * \param[in] signature_size Size of the `p_signature` buffer in bytes - * \param[out] p_signature_length On success, the number of bytes - * that make up the returned signature value - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_asymmetric_transparent_sign_t)(const uint8_t *p_key, - size_t key_size, - psa_algorithm_t alg, - const uint8_t *p_hash, - size_t hash_length, - uint8_t *p_signature, - size_t signature_size, - size_t *p_signature_length); - -/** - * \brief A function that verifies the signature a hash or short message using - * a transparent asymmetric public key - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_asymmetric__verify - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the signing algorithm - * - * \param[in] p_key A buffer containing the public key material - * \param[in] key_size The size in bytes of the `p_key` data - * \param[in] alg A signature algorithm that is compatible with - * the type of `key` - * \param[in] p_hash The hash or message whose signature is to be - * verified - * \param[in] hash_length Size of the `p_hash` buffer in bytes - * \param[in] p_signature Buffer containing the signature to verify - * \param[in] signature_length Size of the `p_signature` buffer in bytes - * - * \retval PSA_SUCCESS - * The signature is valid. - */ -typedef psa_status_t (*psa_drv_asymmetric_transparent_verify_t)(const uint8_t *p_key, - size_t key_size, - psa_algorithm_t alg, - const uint8_t *p_hash, - size_t hash_length, - const uint8_t *p_signature, - size_t signature_length); - -/** - * \brief A function that encrypts a short message with a transparent - * asymmetric public key - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_asymmetric__encrypt - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the encryption algorithm - * - * \param[in] p_key A buffer containing the public key material - * \param[in] key_size The size in bytes of the `p_key` data - * \param[in] alg An asymmetric encryption algorithm that is - * compatible with the type of `key` - * \param[in] p_input The message to encrypt - * \param[in] input_length Size of the `p_input` buffer in bytes - * \param[in] p_salt A salt or label, if supported by the - * encryption algorithm - * If the algorithm does not support a - * salt, pass `NULL` - * If the algorithm supports an optional - * salt and you do not want to pass a salt, - * pass `NULL`. - * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is - * supported. - * \param[in] salt_length Size of the `p_salt` buffer in bytes - * If `p_salt` is `NULL`, pass 0. - * \param[out] p_output Buffer where the encrypted message is to - * be written - * \param[in] output_size Size of the `p_output` buffer in bytes - * \param[out] p_output_length On success, the number of bytes - * that make up the returned output - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_asymmetric_transparent_encrypt_t)(const uint8_t *p_key, - size_t key_size, - psa_algorithm_t alg, - const uint8_t *p_input, - size_t input_length, - const uint8_t *p_salt, - size_t salt_length, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** - * \brief Decrypt a short message with a transparent asymmetric private key - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_asymmetric__decrypt - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the encryption algorithm - * - * \param[in] p_key A buffer containing the private key material - * \param[in] key_size The size in bytes of the `p_key` data - * \param[in] alg An asymmetric encryption algorithm that is - * compatible with the type of `key` - * \param[in] p_input The message to decrypt - * \param[in] input_length Size of the `p_input` buffer in bytes - * \param[in] p_salt A salt or label, if supported by the - * encryption algorithm - * If the algorithm does not support a - * salt, pass `NULL`. - * If the algorithm supports an optional - * salt and you do not want to pass a salt, - * pass `NULL`. - * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is - * supported - * \param[in] salt_length Size of the `p_salt` buffer in bytes - * If `p_salt` is `NULL`, pass 0 - * \param[out] p_output Buffer where the decrypted message is to - * be written - * \param[in] output_size Size of the `p_output` buffer in bytes - * \param[out] p_output_length On success, the number of bytes - * that make up the returned output - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_asymmetric_transparent_decrypt_t)(const uint8_t *p_key, - size_t key_size, - psa_algorithm_t alg, - const uint8_t *p_input, - size_t input_length, - const uint8_t *p_salt, - size_t salt_length, - uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/**@}*/ - -/** \defgroup aead_opaque AEAD Opaque - * Authenticated Encryption with Additional Data (AEAD) operations with opaque - * keys must be done in one function call. While this creates a burden for - * implementers as there must be sufficient space in memory for the entire - * message, it prevents decrypted data from being made available before the - * authentication operation is complete and the data is known to be authentic. - */ -/**@{*/ - -/** \brief Process an authenticated encryption operation using an opaque key - * - * \param[in] key_slot Slot containing the key to use. - * \param[in] algorithm The AEAD algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_AEAD(`alg`) is true) - * \param[in] p_nonce Nonce or IV to use - * \param[in] nonce_length Size of the `p_nonce` buffer in bytes - * \param[in] p_additional_data Additional data that will be - * authenticated but not encrypted - * \param[in] additional_data_length Size of `p_additional_data` in bytes - * \param[in] p_plaintext Data that will be authenticated and - * encrypted - * \param[in] plaintext_length Size of `p_plaintext` in bytes - * \param[out] p_ciphertext Output buffer for the authenticated and - * encrypted data. The additional data is - * not part of this output. For algorithms - * where the encrypted data and the - * authentication tag are defined as - * separate outputs, the authentication - * tag is appended to the encrypted data. - * \param[in] ciphertext_size Size of the `p_ciphertext` buffer in - * bytes - * \param[out] p_ciphertext_length On success, the size of the output in - * the `p_ciphertext` buffer - * - * \retval #PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_aead_opaque_encrypt_t)(psa_key_slot_t key_slot, - psa_algorithm_t algorithm, - const uint8_t *p_nonce, - size_t nonce_length, - const uint8_t *p_additional_data, - size_t additional_data_length, - const uint8_t *p_plaintext, - size_t plaintext_length, - uint8_t *p_ciphertext, - size_t ciphertext_size, - size_t *p_ciphertext_length); - -/** Process an authenticated decryption operation using an opaque key - * - * \param[in] key_slot Slot containing the key to use - * \param[in] algorithm The AEAD algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_AEAD(`alg`) is true) - * \param[in] p_nonce Nonce or IV to use - * \param[in] nonce_length Size of the `p_nonce` buffer in bytes - * \param[in] p_additional_data Additional data that has been - * authenticated but not encrypted - * \param[in] additional_data_length Size of `p_additional_data` in bytes - * \param[in] p_ciphertext Data that has been authenticated and - * encrypted. - * For algorithms where the encrypted data - * and the authentication tag are defined - * as separate inputs, the buffer must - * contain the encrypted data followed by - * the authentication tag. - * \param[in] ciphertext_length Size of `p_ciphertext` in bytes - * \param[out] p_plaintext Output buffer for the decrypted data - * \param[in] plaintext_size Size of the `p_plaintext` buffer in - * bytes - * \param[out] p_plaintext_length On success, the size of the output in - * the `p_plaintext` buffer - * - * \retval #PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_aead_opaque_decrypt_t)(psa_key_slot_t key_slot, - psa_algorithm_t algorithm, - const uint8_t *p_nonce, - size_t nonce_length, - const uint8_t *p_additional_data, - size_t additional_data_length, - const uint8_t *p_ciphertext, - size_t ciphertext_length, - uint8_t *p_plaintext, - size_t plaintext_size, - size_t *p_plaintext_length); - -/** - * \brief A struct containing all of the function pointers needed to implement - * Authenticated Encryption with Additional Data operations using opaque keys - * - * PSA Crypto API implementations should populate instances of the table as - * appropriate upon startup. - * - * If one of the functions is not implemented, it should be set to NULL. - */ -typedef struct { - /** Function that performs the AEAD encrypt operation */ - psa_drv_aead_opaque_encrypt_t *p_encrypt; - /** Function that performs the AEAD decrypt operation */ - psa_drv_aead_opaque_decrypt_t *p_decrypt; -} psa_drv_aead_opaque_t; -/**@}*/ - -/** \defgroup aead_transparent AEAD Transparent - * - * Authenticated Encryption with Additional Data (AEAD) operations with - * transparent keys must be done in one function call. While this creates a - * burden for implementers as there must be sufficient space in memory for the - * entire message, it prevents decrypted data from being made available before - * the authentication operation is complete and the data is known to be - * authentic. - */ -/**@{*/ - -/** Process an authenticated encryption operation using an opaque key. - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_aead__encrypt - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the AEAD algorithm - * - * \param[in] p_key A pointer to the key material - * \param[in] key_length The size in bytes of the key material - * \param[in] alg The AEAD algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_AEAD(`alg`) is true) - * \param[in] nonce Nonce or IV to use - * \param[in] nonce_length Size of the `nonce` buffer in bytes - * \param[in] additional_data Additional data that will be MACed - * but not encrypted. - * \param[in] additional_data_length Size of `additional_data` in bytes - * \param[in] plaintext Data that will be MACed and - * encrypted. - * \param[in] plaintext_length Size of `plaintext` in bytes - * \param[out] ciphertext Output buffer for the authenticated and - * encrypted data. The additional data is - * not part of this output. For algorithms - * where the encrypted data and the - * authentication tag are defined as - * separate outputs, the authentication - * tag is appended to the encrypted data. - * \param[in] ciphertext_size Size of the `ciphertext` buffer in - * bytes - * This must be at least - * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(`alg`, - * `plaintext_length`). - * \param[out] ciphertext_length On success, the size of the output in - * the `ciphertext` buffer - * - * \retval #PSA_SUCCESS - - */ -typedef psa_status_t (*psa_drv_aead_transparent_encrypt_t)(const uint8_t *p_key, - size_t key_length, - psa_algorithm_t alg, - const uint8_t *nonce, - size_t nonce_length, - const uint8_t *additional_data, - size_t additional_data_length, - const uint8_t *plaintext, - size_t plaintext_length, - uint8_t *ciphertext, - size_t ciphertext_size, - size_t *ciphertext_length); - -/** Process an authenticated decryption operation using an opaque key. - * - * Functions that implement the prototype should be named in the following - * convention: - * ~~~~~~~~~~~~~{.c} - * psa_drv_aead__decrypt - * ~~~~~~~~~~~~~ - * Where `ALGO` is the name of the AEAD algorithm - * \param[in] p_key A pointer to the key material - * \param[in] key_length The size in bytes of the key material - * \param[in] alg The AEAD algorithm to compute - * (\c PSA_ALG_XXX value such that - * #PSA_ALG_IS_AEAD(`alg`) is true) - * \param[in] nonce Nonce or IV to use - * \param[in] nonce_length Size of the `nonce` buffer in bytes - * \param[in] additional_data Additional data that has been MACed - * but not encrypted - * \param[in] additional_data_length Size of `additional_data` in bytes - * \param[in] ciphertext Data that has been MACed and - * encrypted - * For algorithms where the encrypted data - * and the authentication tag are defined - * as separate inputs, the buffer must - * contain the encrypted data followed by - * the authentication tag. - * \param[in] ciphertext_length Size of `ciphertext` in bytes - * \param[out] plaintext Output buffer for the decrypted data - * \param[in] plaintext_size Size of the `plaintext` buffer in - * bytes - * This must be at least - * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(`alg`, - * `ciphertext_length`). - * \param[out] plaintext_length On success, the size of the output - * in the \b plaintext buffer - * - * \retval #PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_aead_transparent_decrypt_t)(const uint8_t *p_key, - size_t key_length, - psa_algorithm_t alg, - const uint8_t *nonce, - size_t nonce_length, - const uint8_t *additional_data, - size_t additional_data_length, - const uint8_t *ciphertext, - size_t ciphertext_length, - uint8_t *plaintext, - size_t plaintext_size, - size_t *plaintext_length); - -/**@}*/ - - -/** \defgroup driver_rng Entropy Generation - */ -/**@{*/ - -/** \brief A hardware-specific structure for a entropy providing hardware - */ -typedef struct psa_drv_entropy_context_s psa_drv_entropy_context_t; - -/** \brief Initialize an entropy driver - * - * - * \param[in,out] p_context A hardware-specific structure - * containing any context information for - * the implementation - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_entropy_init_t)(psa_drv_entropy_context_t *p_context); - -/** \brief Get a specified number of bits from the entropy source - * - * It retrives `buffer_size` bytes of data from the entropy source. The entropy - * source will always fill the provided buffer to its full size, however, most - * entropy sources have biases, and the actual amount of entropy contained in - * the buffer will be less than the number of bytes. - * The driver will return the actual number of bytes of entropy placed in the - * buffer in `p_received_entropy_bytes`. - * A PSA Crypto API implementation will likely feed the output of this function - * into a Digital Random Bit Generator (DRBG), and typically has a minimum - * amount of entropy that it needs. - * To accomplish this, the PSA Crypto implementation should be designed to call - * this function multiple times until it has received the required amount of - * entropy from the entropy source. - * - * \param[in,out] p_context A hardware-specific structure - * containing any context information - * for the implementation - * \param[out] p_buffer A caller-allocated buffer for the - * retrieved entropy to be placed in - * \param[in] buffer_size The allocated size of `p_buffer` - * \param[out] p_received_entropy_bits The amount of entropy (in bits) - * actually provided in `p_buffer` - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_entropy_get_bits_t)(psa_drv_entropy_context_t *p_context, - uint8_t *p_buffer, - uint32_t buffer_size, - uint32_t *p_received_entropy_bits); - -/** - * \brief A struct containing all of the function pointers needed to interface - * to an entropy source - * - * PSA Crypto API implementations should populate instances of the table as - * appropriate upon startup. - * - * If one of the functions is not implemented, it should be set to NULL. - */ -typedef struct { - /** Function that performs initialization for the entropy source */ - psa_drv_entropy_init_t *p_init; - /** Function that performs the get_bits operation for the entropy source - */ - psa_drv_entropy_get_bits_t *p_get_bits; -} psa_drv_entropy_t; -/**@}*/ - -/** \defgroup driver_key_management Key Management - * Currently, key management is limited to importing keys in the clear, - * destroying keys, and exporting keys in the clear. - * Whether a key may be exported is determined by the key policies in place - * on the key slot. - */ -/**@{*/ - -/** \brief Import a key in binary format - * - * This function can support any output from psa_export_key(). Refer to the - * documentation of psa_export_key() for the format for each key type. - * - * \param[in] key_slot Slot where the key will be stored - * This must be a valid slot for a key of the chosen - * type. It must be unoccupied. - * \param[in] type Key type (a \c PSA_KEY_TYPE_XXX value) - * \param[in] algorithm Key algorithm (a \c PSA_ALG_XXX value) - * \param[in] usage The allowed uses of the key - * \param[in] p_data Buffer containing the key data - * \param[in] data_length Size of the `data` buffer in bytes - * - * \retval #PSA_SUCCESS - * Success. - */ -typedef psa_status_t (*psa_drv_opaque_import_key_t)(psa_key_slot_t key_slot, - psa_key_type_t type, - psa_algorithm_t algorithm, - psa_key_usage_t usage, - const uint8_t *p_data, - size_t data_length); - -/** - * \brief Destroy a key and restore the slot to its default state - * - * This function destroys the content of the key slot from both volatile - * memory and, if applicable, non-volatile storage. Implementations shall - * make a best effort to ensure that any previous content of the slot is - * unrecoverable. - * - * This function also erases any metadata such as policies. It returns the - * specified slot to its default state. - * - * \param[in] key_slot The key slot to erase. - * - * \retval #PSA_SUCCESS - * The slot's content, if any, has been erased. - */ -typedef psa_status_t (*psa_drv_destroy_key_t)(psa_key_slot_t key); - -/** - * \brief Export a key in binary format - * - * The output of this function can be passed to psa_import_key() to - * create an equivalent object. - * - * If a key is created with `psa_import_key()` and then exported with - * this function, it is not guaranteed that the resulting data is - * identical: the implementation may choose a different representation - * of the same key if the format permits it. - * - * For standard key types, the output format is as follows: - * - * - For symmetric keys (including MAC keys), the format is the - * raw bytes of the key. - * - For DES, the key data consists of 8 bytes. The parity bits must be - * correct. - * - For Triple-DES, the format is the concatenation of the - * two or three DES keys. - * - For RSA key pairs (#PSA_KEY_TYPE_RSA_KEYPAIR), the format - * is the non-encrypted DER representation defined by PKCS\#1 (RFC 8017) - * as RSAPrivateKey. - * - For RSA public keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY), the format - * is the DER representation defined by RFC 5280 as SubjectPublicKeyInfo. - * - * \param[in] key Slot whose content is to be exported. This must - * be an occupied key slot. - * \param[out] p_data Buffer where the key data is to be written. - * \param[in] data_size Size of the `p_data` buffer in bytes. - * \param[out] p_data_length On success, the number of bytes - * that make up the key data. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_EMPTY_SLOT - * \retval #PSA_ERROR_NOT_PERMITTED - * \retval #PSA_ERROR_NOT_SUPPORTED - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_TAMPERING_DETECTED - */ -typedef psa_status_t (*psa_drv_export_key_t)(psa_key_slot_t key, - uint8_t *p_data, - size_t data_size, - size_t *p_data_length); - -/** - * \brief Export a public key or the public part of a key pair in binary format - * - * The output of this function can be passed to psa_import_key() to - * create an object that is equivalent to the public key. - * - * For standard key types, the output format is as follows: - * - * - For RSA keys (#PSA_KEY_TYPE_RSA_KEYPAIR or #PSA_KEY_TYPE_RSA_PUBLIC_KEY), - * the format is the DER representation of the public key defined by RFC 5280 - * as SubjectPublicKeyInfo. - * - * \param[in] key_slot Slot whose content is to be exported. This must - * be an occupied key slot. - * \param[out] p_data Buffer where the key data is to be written. - * \param[in] data_size Size of the `data` buffer in bytes. - * \param[out] p_data_length On success, the number of bytes - * that make up the key data. - * - * \retval #PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_export_public_key_t)(psa_key_slot_t key, - uint8_t *p_data, - size_t data_size, - size_t *p_data_length); - -/** - * \brief A struct containing all of the function pointers needed to for key - * management using opaque keys - * - * PSA Crypto API implementations should populate instances of the table as - * appropriate upon startup. - * - * If one of the functions is not implemented, it should be set to NULL. - */ -typedef struct { - /** Function that performs the key import operation */ - psa_drv_opaque_import_key_t *p_import; - /** Function that performs the key destroy operation */ - psa_drv_destroy_key_t *p_destroy; - /** Function that performs the key export operation */ - psa_drv_export_key_t *p_export; - /** Function that perforsm the public key export operation */ - psa_drv_export_public_key_t *p_export_public; -} psa_drv_key_management_t; - -/**@}*/ - -/** \defgroup driver_derivation Key Derivation and Agreement - * Key derivation is the process of generating new key material using an - * existing key and additional parameters, iterating through a basic - * cryptographic function, such as a hash. - * Key agreement is a part of cryptographic protocols that allows two parties - * to agree on the same key value, but starting from different original key - * material. - * The flows are similar, and the PSA Crypto Driver Model uses the same functions - * for both of the flows. - * - * There are two different final functions for the flows, - * `psa_drv_key_derivation_derive` and `psa_drv_key_derivation_export`. - * `psa_drv_key_derivation_derive` is used when the key material should be placed - * in a slot on the hardware and not exposed to the caller. - * `psa_drv_key_derivation_export` is used when the key material should be returned - * to the PSA Cryptographic API implementation. - * - * Different key derivation algorithms require a different number of inputs. - * Instead of having an API that takes as input variable length arrays, which - * can be problemmatic to manage on embedded platforms, the inputs are passed - * to the driver via a function, `psa_drv_key_derivation_collateral`, that is - * called multiple times with different `collateral_id`s. Thus, for a key - * derivation algorithm that required 3 paramter inputs, the flow would look - * something like: - * ~~~~~~~~~~~~~{.c} - * psa_drv_key_derivation_setup(kdf_algorithm, source_key, dest_key_size_bytes); - * psa_drv_key_derivation_collateral(kdf_algorithm_collateral_id_0, - * p_collateral_0, - * collateral_0_size); - * psa_drv_key_derivation_collateral(kdf_algorithm_collateral_id_1, - * p_collateral_1, - * collateral_1_size); - * psa_drv_key_derivation_collateral(kdf_algorithm_collateral_id_2, - * p_collateral_2, - * collateral_2_size); - * psa_drv_key_derivation_derive(); - * ~~~~~~~~~~~~~ - * - * key agreement example: - * ~~~~~~~~~~~~~{.c} - * psa_drv_key_derivation_setup(alg, source_key. dest_key_size_bytes); - * psa_drv_key_derivation_collateral(DHE_PUBKEY, p_pubkey, pubkey_size); - * psa_drv_key_derivation_export(p_session_key, - * session_key_size, - * &session_key_length); - * ~~~~~~~~~~~~~ - */ -/**@{*/ - -/** \brief The hardware-specific key derivation context structure - * - * The contents of this structure are implementation dependent and are - * therefore not described here - */ -typedef struct psa_drv_key_derivation_context_s psa_drv_key_derivation_context_t; - -/** \brief Set up a key derivation operation by specifying the algorithm and - * the source key sot - * - * \param[in,out] p_context A hardware-specific structure containing any - * context information for the implementation - * \param[in] kdf_alg The algorithm to be used for the key derivation - * \param[in] souce_key The key to be used as the source material for the - * key derivation - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_key_derivation_setup_t)(psa_drv_key_derivation_context_t *p_context, - psa_algorithm_t kdf_alg, - psa_key_slot_t source_key); - -/** \brief Provide collateral (parameters) needed for a key derivation or key - * agreement operation - * - * Since many key derivation algorithms require multiple parameters, it is - * expeced that this function may be called multiple times for the same - * operation, each with a different algorithm-specific `collateral_id` - * - * \param[in,out] p_context A hardware-specific structure containing any - * context information for the implementation - * \param[in] collateral_id An ID for the collateral being provided - * \param[in] p_collateral A buffer containing the collateral data - * \param[in] collateral_size The size in bytes of the collateral - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_key_derivation_collateral_t)(psa_drv_key_derivation_context_t *p_context, - uint32_t collateral_id, - const uint8_t *p_collateral, - size_t collateral_size); - -/** \brief Perform the final key derivation step and place the generated key - * material in a slot - * \param[in,out] p_context A hardware-specific structure containing any - * context information for the implementation - * \param[in] dest_key The slot where the generated key material - * should be placed - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_key_derivation_derive_t)(psa_drv_key_derivation_context_t *p_context, - psa_key_slot_t dest_key); - -/** \brief Perform the final step of a key agreement and place the generated - * key material in a buffer - * - * \param[out] p_output Buffer in which to place the generated key - * material - * \param[in] output_size The size in bytes of `p_output` - * \param[out] p_output_length Upon success, contains the number of bytes of - * key material placed in `p_output` - * - * \retval PSA_SUCCESS - */ -typedef psa_status_t (*psa_drv_key_derivation_export_t)(uint8_t *p_output, - size_t output_size, - size_t *p_output_length); - -/** - * \brief A struct containing all of the function pointers needed to for key - * derivation and agreement - * - * PSA Crypto API implementations should populate instances of the table as - * appropriate upon startup. - * - * If one of the functions is not implemented, it should be set to NULL. - */ -typedef struct { - /** Function that performs the key derivation setup */ - psa_drv_key_derivation_setup_t *p_setup; - /** Function that sets the key derivation collateral */ - psa_drv_key_derivation_collateral_t *p_collateral; - /** Function that performs the final key derivation step */ - psa_drv_key_derivation_derive_t *p_derive; - /** Function that perforsm the final key derivation or agreement and - * exports the key */ - psa_drv_key_derivation_export_t *p_export; -} psa_drv_key_derivation_t; - -/**@}*/ - -#ifdef __cplusplus -} -#endif - -#endif /* PSA_CRYPTO_DRIVER_H */ diff --git a/features/mbedtls/inc/psa/crypto_platform.h b/features/mbedtls/inc/psa/crypto_platform.h deleted file mode 100644 index 9af320d1e9a..00000000000 --- a/features/mbedtls/inc/psa/crypto_platform.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - * \file psa/crypto_platform.h - * - * \brief PSA cryptography module: Mbed TLS platfom definitions - * - * \note This file may not be included directly. Applications must - * include psa/crypto.h. - * - * This file contains platform-dependent type definitions. - * - * In implementations with isolation between the application and the - * cryptography module, implementers should take care to ensure that - * the definitions that are exposed to applications match what the - * module implements. - */ -/* - * 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. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#ifndef PSA_CRYPTO_PLATFORM_H -#define PSA_CRYPTO_PLATFORM_H - -/* Include the Mbed TLS configuration file, the way Mbed TLS does it - * in each of its header files. */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "../mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif - -/* PSA requires several types which C99 provides in stdint.h. */ -#include - -/* Integral type representing a key slot number. */ -typedef uint16_t psa_key_slot_t; - -#endif /* PSA_CRYPTO_PLATFORM_H */ diff --git a/features/mbedtls/mbed-crypto/LICENSE b/features/mbedtls/mbed-crypto/LICENSE new file mode 100644 index 00000000000..546a8e631f5 --- /dev/null +++ b/features/mbedtls/mbed-crypto/LICENSE @@ -0,0 +1,2 @@ +Unless specifically indicated otherwise in a file, files are licensed +under the Apache 2.0 license, as can be found in: apache-2.0.txt diff --git a/features/mbedtls/mbed-crypto/VERSION.txt b/features/mbedtls/mbed-crypto/VERSION.txt new file mode 100644 index 00000000000..17d6b30a1b8 --- /dev/null +++ b/features/mbedtls/mbed-crypto/VERSION.txt @@ -0,0 +1 @@ +mbedcrypto-1.0.0d4 diff --git a/features/mbedtls/mbed-crypto/apache-2.0.txt b/features/mbedtls/mbed-crypto/apache-2.0.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/features/mbedtls/mbed-crypto/apache-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT 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/mbedtls/mbed-crypto/importer/Makefile b/features/mbedtls/mbed-crypto/importer/Makefile new file mode 100644 index 00000000000..385d33d7a76 --- /dev/null +++ b/features/mbedtls/mbed-crypto/importer/Makefile @@ -0,0 +1,114 @@ +########################################################################### +# +# Copyright (c) 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# 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 this file to import an Mbed Crypto release into Mbed OS as follows: +# +# 1) Set the CRYPTO_RELEASE variable to the required Mbed Crypto release +# tag +# 2) make update +# 3) make +# 4) commit and push changes via git +# + +# Set the Mbed Crypto release to import (this can/should be edited before +# import) +CRYPTO_RELEASE ?= mbedcrypto-1.0.0d4 +CRYPTO_REPO_URL ?= git@github.com:ARMmbed/mbed-crypto.git + +# Translate between Mbed Crypto namespace and Mbed OS namespace +TARGET_PREFIX:=.. +TARGET_INC:=$(TARGET_PREFIX)/inc + +# A folder structure is introduced here for targets that have both a Secure +# Processing Environment (SPE) targets and Non-secure Processing Environment +# (NSPE). Documentation for each folder as follows: +# COMPONENT_PSA_SRV_IMPL - Include secure service implementation code. For +# example PSA Crypto or PSA Secure Time implementations +TARGET_SRV_IMPL:=$(TARGET_PREFIX)/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL +# COMPONENT_SPE - Include code that compiles ONLY to the SPE image and never +# compiles to the NSPE image +TARGET_SPE:=$(TARGET_PREFIX)/platform/TARGET_PSA/COMPONENT_SPE +# COMPONENT_NSPE - Include code that compiles ONLY to the NSPE image and never +# compiles to the SPE image +TARGET_NSPE:=$(TARGET_SRV_IMPL)/COMPONENT_NSPE + +# Mbed Crypto source directory - hidden from mbed via TARGET_IGNORE +CRYPTO_DIR:=TARGET_IGNORE/mbed-crypto +CRYPTO_API:=$(CRYPTO_DIR)/include/psa +CRYPTO_GIT_CFG=$(CRYPTO_DIR)/.git/config + + +.PHONY: all rsync clean update + +all: rsync + +rsync: + # + # Copying Mbed Crypto headers to includes... + rm -rf $(TARGET_INC) + mkdir -p $(TARGET_INC) + rsync -a --delete --exclude='crypto_struct.h' $(CRYPTO_API) $(TARGET_INC)/ + # + # Copying licenses + cp $(CRYPTO_DIR)/LICENSE $(TARGET_PREFIX)/ + cp $(CRYPTO_DIR)/apache-2.0.txt $(TARGET_PREFIX)/ + # + # Copying Mbed Crypto into Mbed OS... + rm -rf $(TARGET_SRV_IMPL) + rm -rf $(TARGET_SPE) + + mkdir -p $(TARGET_SRV_IMPL) + mkdir -p $(TARGET_SPE) + mkdir -p $(TARGET_NSPE) + + rsync -a --delete $(CRYPTO_API)/crypto_struct.h $(TARGET_NSPE)/ + rsync -a --delete $(CRYPTO_API)/crypto_struct.h $(TARGET_SPE)/crypto_struct_spe.h + rsync -a --delete $(CRYPTO_DIR)/library/psa_*.c $(TARGET_SRV_IMPL)/ + rsync -a --delete $(CRYPTO_DIR)/library/psa_*.h $(TARGET_SRV_IMPL)/ + +update: $(CRYPTO_GIT_CFG) + # + # Updating to the specified Mbed Crypto library version + # (If it is not an initial checkout we will start with the repository + # being in a detached head state) + git -C $(CRYPTO_DIR) fetch + # + # Checking out the required release + git -C $(CRYPTO_DIR) checkout $(CRYPTO_RELEASE) + # + # Update and checkout git submodules + git -C $(CRYPTO_DIR) submodule update --init --recursive + # + # Updating Mbed Crypto checked out version tag + git -C $(CRYPTO_DIR) describe --tags --abbrev=12 --dirty --always > $(TARGET_PREFIX)/VERSION.txt + +$(CRYPTO_GIT_CFG): + rm -rf $(CRYPTO_DIR) + git clone $(CRYPTO_REPO_URL) $(CRYPTO_DIR) + +clean: + rm -f $(TARGET_PREFIX)/LICENSE + rm -f $(TARGET_PREFIX)/apache-2.0.txt + rm -f $(TARGET_PREFIX)/VERSION.txt + rm -f $(TARGET_PREFIX)/AUTHORS.txt + rm -rf $(TARGET_INC) + rm -rf $(CRYPTO_DIR) + rm -rf $(TARGET_SRV_IMPL) + rm -rf $(TARGET_SPE) diff --git a/features/mbedtls/mbed-crypto/importer/TARGET_IGNORE/.gitignore b/features/mbedtls/mbed-crypto/importer/TARGET_IGNORE/.gitignore new file mode 100644 index 00000000000..05fd348e289 --- /dev/null +++ b/features/mbedtls/mbed-crypto/importer/TARGET_IGNORE/.gitignore @@ -0,0 +1 @@ +mbed-crypto diff --git a/features/mbedtls/mbed-crypto/inc/psa/crypto.h b/features/mbedtls/mbed-crypto/inc/psa/crypto.h new file mode 100644 index 00000000000..b62788b492e --- /dev/null +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto.h @@ -0,0 +1,2388 @@ +/** + * \file psa/crypto.h + * \brief Platform Security Architecture cryptography module + */ +/* + * 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 PSA_CRYPTO_H +#define PSA_CRYPTO_H + +#include "crypto_platform.h" + +#include + +#ifdef __DOXYGEN_ONLY__ +/* This __DOXYGEN_ONLY__ block contains mock definitions for things that + * must be defined in the crypto_platform.h header. These mock definitions + * are present in this file as a convenience to generate pretty-printed + * documentation that includes those definitions. */ + +/** \defgroup platform Implementation-specific definitions + * @{ + */ + +/** \brief Key handle. + * + * This type represents open handles to keys. It must be an unsigned integral + * type. The choice of type is implementation-dependent. + * + * 0 is not a valid key handle. How other handle values are assigned is + * implementation-dependent. + */ +typedef _unsigned_integral_type_ psa_key_handle_t; + +/**@}*/ +#endif /* __DOXYGEN_ONLY__ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* The file "crypto_types.h" declares types that encode errors, + * algorithms, key types, policies, etc. */ +#include "crypto_types.h" + +/* The file "crypto_values.h" declares macros to build and analyze values + * of integral types defined in "crypto_types.h". */ +#include "crypto_values.h" + +/** \defgroup initialization Library initialization + * @{ + */ + +/** + * \brief Library initialization. + * + * Applications must call this function before calling any other + * function in this module. + * + * Applications may call this function more than once. Once a call + * succeeds, subsequent calls are guaranteed to succeed. + * + * If the application calls other functions before calling psa_crypto_init(), + * the behavior is undefined. Implementations are encouraged to either perform + * the operation as if the library had been initialized or to return + * #PSA_ERROR_BAD_STATE or some other applicable error. In particular, + * implementations should not return a success status if the lack of + * initialization may have security implications, for example due to improper + * seeding of the random number generator. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + */ +psa_status_t psa_crypto_init(void); + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** The type of the key policy data structure. + * + * Before calling any function on a key policy, the application must initialize + * it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_key_policy_t policy; + * memset(&policy, 0, sizeof(policy)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_key_policy_t policy = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_KEY_POLICY_INIT, + * for example: + * \code + * psa_key_policy_t policy = PSA_KEY_POLICY_INIT; + * \endcode + * - Assign the result of the function psa_key_policy_init() + * to the structure, for example: + * \code + * psa_key_policy_t policy; + * policy = psa_key_policy_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_key_policy_s psa_key_policy_t; + +/** \def PSA_KEY_POLICY_INIT + * + * This macro returns a suitable initializer for a key policy object of type + * #psa_key_policy_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_KEY_POLICY_INIT {0} +#endif + +/** Return an initial value for a key policy that forbids all usage of the key. + */ +static psa_key_policy_t psa_key_policy_init(void); + +/** \brief Set the standard fields of a policy structure. + * + * Note that this function does not make any consistency check of the + * parameters. The values are only checked when applying the policy to + * a key slot with psa_set_key_policy(). + * + * \param[in,out] policy The key policy to modify. It must have been + * initialized as per the documentation for + * #psa_key_policy_t. + * \param usage The permitted uses for the key. + * \param alg The algorithm that the key may be used for. + */ +void psa_key_policy_set_usage(psa_key_policy_t *policy, + psa_key_usage_t usage, + psa_algorithm_t alg); + +/** \brief Retrieve the usage field of a policy structure. + * + * \param[in] policy The policy object to query. + * + * \return The permitted uses for a key with this policy. + */ +psa_key_usage_t psa_key_policy_get_usage(const psa_key_policy_t *policy); + +/** \brief Retrieve the algorithm field of a policy structure. + * + * \param[in] policy The policy object to query. + * + * \return The permitted algorithm for a key with this policy. + */ +psa_algorithm_t psa_key_policy_get_algorithm(const psa_key_policy_t *policy); + +/** \brief Set the usage policy on a key slot. + * + * This function must be called on an empty key slot, before importing, + * generating or creating a key in the slot. Changing the policy of an + * existing key is not permitted. + * + * Implementations may set restrictions on supported key policies + * depending on the key type and the key slot. + * + * \param handle Handle to the key whose policy is to be changed. + * \param[in] policy The policy object to query. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, it is implementation-defined whether + * the policy has been saved to persistent storage. Implementations + * may defer saving the policy until the key material is created. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_ALREADY_EXISTS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_set_key_policy(psa_key_handle_t handle, + const psa_key_policy_t *policy); + +/** \brief Get the usage policy for a key slot. + * + * \param handle Handle to the key slot whose policy is being queried. + * \param[out] policy On success, the key's policy. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_get_key_policy(psa_key_handle_t handle, + psa_key_policy_t *policy); + +/**@}*/ + +/** \defgroup key_management Key management + * @{ + */ + +/** \brief Retrieve the lifetime of an open key. + * + * \param handle Handle to query. + * \param[out] lifetime On success, the lifetime value. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_get_key_lifetime(psa_key_handle_t handle, + psa_key_lifetime_t *lifetime); + + +/** Allocate a key slot for a transient key, i.e. a key which is only stored + * in volatile memory. + * + * The allocated key slot and its handle remain valid until the + * application calls psa_close_key() or psa_destroy_key() or until the + * application terminates. + * + * \param[out] handle On success, a handle to a volatile key slot. + * + * \retval #PSA_SUCCESS + * Success. The application can now use the value of `*handle` + * to access the newly allocated key slot. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * There was not enough memory, or the maximum number of key slots + * has been reached. + */ +psa_status_t psa_allocate_key(psa_key_handle_t *handle); + +/** Open a handle to an existing persistent key. + * + * Open a handle to a key which was previously created with psa_create_key(). + * + * \param lifetime The lifetime of the key. This designates a storage + * area where the key material is stored. This must not + * be #PSA_KEY_LIFETIME_VOLATILE. + * \param id The persistent identifier of the key. + * \param[out] handle On success, a handle to a key slot which contains + * the data and metadata loaded from the specified + * persistent location. + * + * \retval #PSA_SUCCESS + * Success. The application can now use the value of `*handle` + * to access the newly allocated key slot. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p lifetime is invalid, for example #PSA_KEY_LIFETIME_VOLATILE. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p id is invalid for the specified lifetime. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p lifetime is not supported. + * \retval #PSA_ERROR_NOT_PERMITTED + * The specified key exists, but the application does not have the + * permission to access it. Note that this specification does not + * define any way to create such a key, but it may be possible + * through implementation-specific means. + */ +psa_status_t psa_open_key(psa_key_lifetime_t lifetime, + psa_key_id_t id, + psa_key_handle_t *handle); + +/** Create a new persistent key slot. + * + * Create a new persistent key slot and return a handle to it. The handle + * remains valid until the application calls psa_close_key() or terminates. + * The application can open the key again with psa_open_key() until it + * removes the key by calling psa_destroy_key(). + * + * \param lifetime The lifetime of the key. This designates a storage + * area where the key material is stored. This must not + * be #PSA_KEY_LIFETIME_VOLATILE. + * \param id The persistent identifier of the key. + * \param[out] handle On success, a handle to the newly created key slot. + * When key material is later created in this key slot, + * it will be saved to the specified persistent location. + * + * \retval #PSA_SUCCESS + * Success. The application can now use the value of `*handle` + * to access the newly allocated key slot. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_ALREADY_EXISTS + * There is already a key with the identifier \p id in the storage + * area designated by \p lifetime. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p lifetime is invalid, for example #PSA_KEY_LIFETIME_VOLATILE. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p id is invalid for the specified lifetime. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p lifetime is not supported. + * \retval #PSA_ERROR_NOT_PERMITTED + * \p lifetime is valid, but the application does not have the + * permission to create a key there. + */ +psa_status_t psa_create_key(psa_key_lifetime_t lifetime, + psa_key_id_t id, + psa_key_handle_t *handle); + +/** Close a key handle. + * + * If the handle designates a volatile key, destroy the key material and + * free all associated resources, just like psa_destroy_key(). + * + * If the handle designates a persistent key, free all resources associated + * with the key in volatile memory. The key slot in persistent storage is + * not affected and can be opened again later with psa_open_key(). + * + * \param handle The key handle to close. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + */ +psa_status_t psa_close_key(psa_key_handle_t handle); + +/**@}*/ + +/** \defgroup import_export Key import and export + * @{ + */ + +/** + * \brief Import a key in binary format. + * + * This function supports any output from psa_export_key(). Refer to the + * documentation of psa_export_public_key() for the format of public keys + * and to the documentation of psa_export_key() for the format for + * other key types. + * + * This specification supports a single format for each key type. + * Implementations may support other formats as long as the standard + * format is supported. Implementations that support other formats + * should ensure that the formats are clearly unambiguous so as to + * minimize the risk that an invalid input is accidentally interpreted + * according to a different format. + * + * \param handle Handle to the slot where the key will be stored. + * It must have been obtained by calling + * psa_allocate_key() or psa_create_key() and must + * not contain key material yet. + * \param type Key type (a \c PSA_KEY_TYPE_XXX value). On a successful + * import, the key slot will contain a key of this type. + * \param[in] data Buffer containing the key data. The content of this + * buffer is interpreted according to \p type. It must + * contain the format described in the documentation + * of psa_export_key() or psa_export_public_key() for + * the chosen type. + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_SUPPORTED + * The key type or key size is not supported, either by the + * implementation in general or in this particular slot. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key slot is invalid, + * or the key data is not correctly formatted. + * \retval #PSA_ERROR_ALREADY_EXISTS + * There is already a key in the specified slot. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_import_key(psa_key_handle_t handle, + psa_key_type_t type, + const uint8_t *data, + size_t data_length); + +/** + * \brief Destroy a key. + * + * This function destroys the content of the key slot from both volatile + * memory and, if applicable, non-volatile storage. Implementations shall + * make a best effort to ensure that any previous content of the slot is + * unrecoverable. + * + * This function also erases any metadata such as policies and frees all + * resources associated with the key. + * + * \param handle Handle to the key slot to erase. + * + * \retval #PSA_SUCCESS + * The slot's content, if any, has been erased. + * \retval #PSA_ERROR_NOT_PERMITTED + * The slot holds content and cannot be erased because it is + * read-only, either due to a policy or due to physical restrictions. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * There was an failure in communication with the cryptoprocessor. + * The key material may still be present in the cryptoprocessor. + * \retval #PSA_ERROR_STORAGE_FAILURE + * The storage is corrupted. Implementations shall make a best effort + * to erase key material even in this stage, however applications + * should be aware that it may be impossible to guarantee that the + * key material is not recoverable in such cases. + * \retval #PSA_ERROR_TAMPERING_DETECTED + * An unexpected condition which is not a storage corruption or + * a communication failure occurred. The cryptoprocessor may have + * been compromised. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_destroy_key(psa_key_handle_t handle); + +/** + * \brief Get basic metadata about a key. + * + * \param handle Handle to the key slot to query. + * \param[out] type On success, the key type (a \c PSA_KEY_TYPE_XXX value). + * This may be a null pointer, in which case the key type + * is not written. + * \param[out] bits On success, the key size in bits. + * This may be a null pointer, in which case the key size + * is not written. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * The handle is to a key slot which does not contain key material yet. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_get_key_information(psa_key_handle_t handle, + psa_key_type_t *type, + size_t *bits); + +/** + * \brief Export a key in binary format. + * + * The output of this function can be passed to psa_import_key() to + * create an equivalent object. + * + * If the implementation of psa_import_key() supports other formats + * beyond the format specified here, the output from psa_export_key() + * must use the representation specified here, not the original + * representation. + * + * For standard key types, the output format is as follows: + * + * - For symmetric keys (including MAC keys), the format is the + * raw bytes of the key. + * - For DES, the key data consists of 8 bytes. The parity bits must be + * correct. + * - For Triple-DES, the format is the concatenation of the + * two or three DES keys. + * - For RSA key pairs (#PSA_KEY_TYPE_RSA_KEYPAIR), the format + * is the non-encrypted DER encoding of the representation defined by + * PKCS\#1 (RFC 8017) as `RSAPrivateKey`, version 0. + * ``` + * RSAPrivateKey ::= SEQUENCE { + * version INTEGER, -- must be 0 + * modulus INTEGER, -- n + * publicExponent INTEGER, -- e + * privateExponent INTEGER, -- d + * prime1 INTEGER, -- p + * prime2 INTEGER, -- q + * exponent1 INTEGER, -- d mod (p-1) + * exponent2 INTEGER, -- d mod (q-1) + * coefficient INTEGER, -- (inverse of q) mod p + * } + * ``` + * - For DSA private keys (#PSA_KEY_TYPE_DSA_KEYPAIR), the format + * is the non-encrypted DER encoding of the representation used by + * OpenSSL and OpenSSH, whose structure is described in ASN.1 as follows: + * ``` + * DSAPrivateKey ::= SEQUENCE { + * version INTEGER, -- must be 0 + * prime INTEGER, -- p + * subprime INTEGER, -- q + * generator INTEGER, -- g + * public INTEGER, -- y + * private INTEGER, -- x + * } + * ``` + * - For elliptic curve key pairs (key types for which + * #PSA_KEY_TYPE_IS_ECC_KEYPAIR is true), the format is + * a representation of the private value as a `ceiling(m/8)`-byte string + * where `m` is the bit size associated with the curve, i.e. the bit size + * of the order of the curve's coordinate field. This byte string is + * in little-endian order for Montgomery curves (curve types + * `PSA_ECC_CURVE_CURVEXXX`), and in big-endian order for Weierstrass + * curves (curve types `PSA_ECC_CURVE_SECTXXX`, `PSA_ECC_CURVE_SECPXXX` + * and `PSA_ECC_CURVE_BRAINPOOL_PXXX`). + * This is the content of the `privateKey` field of the `ECPrivateKey` + * format defined by RFC 5915. + * - For public keys (key types for which #PSA_KEY_TYPE_IS_PUBLIC_KEY is + * true), the format is the same as for psa_export_public_key(). + * + * \param handle Handle to the key to export. + * \param[out] data Buffer where the key data is to be written. + * \param data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p data buffer is too small. You can determine a + * sufficient buffer size by calling + * #PSA_KEY_EXPORT_MAX_SIZE(\c type, \c bits) + * where \c type is the key type + * and \c bits is the key size in bits. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_export_key(psa_key_handle_t handle, + uint8_t *data, + size_t data_size, + size_t *data_length); + +/** + * \brief Export a public key or the public part of a key pair in binary format. + * + * The output of this function can be passed to psa_import_key() to + * create an object that is equivalent to the public key. + * + * This specification supports a single format for each key type. + * Implementations may support other formats as long as the standard + * format is supported. Implementations that support other formats + * should ensure that the formats are clearly unambiguous so as to + * minimize the risk that an invalid input is accidentally interpreted + * according to a different format. + * + * For standard key types, the output format is as follows: + * - For RSA public keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY), the DER encoding of + * the representation defined by RFC 3279 §2.3.1 as `RSAPublicKey`. + * ``` + * RSAPublicKey ::= SEQUENCE { + * modulus INTEGER, -- n + * publicExponent INTEGER } -- e + * ``` + * - For elliptic curve public keys (key types for which + * #PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY is true), the format is the uncompressed + * representation defined by SEC1 §2.3.3 as the content of an ECPoint: + * Let `m` be the bit size associated with the curve, i.e. the bit size of + * `q` for a curve over `F_q`. The representation consists of: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian. + * + * For other public key types, the format is the DER representation defined by + * RFC 5280 as `SubjectPublicKeyInfo`, with the `subjectPublicKey` format + * specified below. + * ``` + * SubjectPublicKeyInfo ::= SEQUENCE { + * algorithm AlgorithmIdentifier, + * subjectPublicKey BIT STRING } + * AlgorithmIdentifier ::= SEQUENCE { + * algorithm OBJECT IDENTIFIER, + * parameters ANY DEFINED BY algorithm OPTIONAL } + * ``` + * - For DSA public keys (#PSA_KEY_TYPE_DSA_PUBLIC_KEY), + * the `subjectPublicKey` format is defined by RFC 3279 §2.3.2 as + * `DSAPublicKey`, + * with the OID `id-dsa`, + * and with the parameters `DSS-Parms`. + * ``` + * id-dsa OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57(10040) x9cm(4) 1 } + * + * Dss-Parms ::= SEQUENCE { + * p INTEGER, + * q INTEGER, + * g INTEGER } + * DSAPublicKey ::= INTEGER -- public key, Y + * ``` + * + * \param handle Handle to the key to export. + * \param[out] data Buffer where the key data is to be written. + * \param data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key is neither a public key nor a key pair. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p data buffer is too small. You can determine a + * sufficient buffer size by calling + * #PSA_KEY_EXPORT_MAX_SIZE(#PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(\c type), \c bits) + * where \c type is the key type + * and \c bits is the key size in bits. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_export_public_key(psa_key_handle_t handle, + uint8_t *data, + size_t data_size, + size_t *data_length); + +/** Make a copy of a key. + * + * Copy key material from one location to another. + * + * This function is primarily useful to copy a key from one location + * to another, since it populates a key using the material from + * another key which may have a different lifetime. + * + * In an implementation where slots have different ownerships, + * this function may be used to share a key with a different party, + * subject to implementation-defined restrictions on key sharing. + * In this case \p constraint would typically prevent the recipient + * from exporting the key. + * + * The resulting key may only be used in a way that conforms to all + * three of: the policy of the source key, the policy previously set + * on the target, and the \p constraint parameter passed when calling + * this function. + * - The usage flags on the resulting key are the bitwise-and of the + * usage flags on the source policy, the previously-set target policy + * and the policy constraint. + * - If all three policies allow the same algorithm or wildcard-based + * algorithm policy, the resulting key has the same algorithm policy. + * - If one of the policies allows an algorithm and all the other policies + * either allow the same algorithm or a wildcard-based algorithm policy + * that includes this algorithm, the resulting key allows the same + * algorithm. + * + * The effect of this function on implementation-defined metadata is + * implementation-defined. + * + * \param source_handle The key to copy. It must be a handle to an + * occupied slot. + * \param target_handle A handle to the target slot. It must not contain + * key material yet. + * \param[in] constraint An optional policy constraint. If this parameter + * is non-null then the resulting key will conform + * to this policy in addition to the source policy + * and the policy already present on the target + * slot. If this parameter is null then the + * function behaves in the same way as if it was + * the target policy, i.e. only the source and + * target policies apply. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_ALREADY_EXISTS + * \p target already contains key material. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \p source does not contain key material. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The policy constraints on the source, on the target and + * \p constraints are incompatible. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key is not exportable and its lifetime does not + * allow copying it to the target's lifetime. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_copy_key(psa_key_handle_t source_handle, + psa_key_handle_t target_handle, + const psa_key_policy_t *constraint); + +/**@}*/ + +/** \defgroup hash Message digests + * @{ + */ + +/** The type of the state data structure for multipart hash operations. + * + * Before calling any function on a hash operation object, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_hash_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_hash_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_HASH_OPERATION_INIT, + * for example: + * \code + * psa_hash_operation_t operation = PSA_HASH_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_hash_operation_init() + * to the structure, for example: + * \code + * psa_hash_operation_t operation; + * operation = psa_hash_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_hash_operation_s psa_hash_operation_t; + +/** \def PSA_HASH_OPERATION_INIT + * + * This macro returns a suitable initializer for a hash operation object + * of type #psa_hash_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_HASH_OPERATION_INIT {0} +#endif + +/** Return an initial value for a hash operation object. + */ +static psa_hash_operation_t psa_hash_operation_init(void); + +/** Set up a multipart hash operation. + * + * The sequence of operations to calculate a hash (message digest) + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_hash_operation_t, e.g. PSA_HASH_OPERATION_INIT. + * -# Call psa_hash_setup() to specify the algorithm. + * -# Call psa_hash_update() zero, one or more times, passing a fragment + * of the message each time. The hash that is calculated is the hash + * of the concatenation of these messages in order. + * -# To calculate the hash, call psa_hash_finish(). + * To compare the hash with an expected value, call psa_hash_verify(). + * + * The application may call psa_hash_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_hash_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A failed call to psa_hash_update(). + * - A call to psa_hash_finish(), psa_hash_verify() or psa_hash_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_hash_operation_t and not yet in use. + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a hash algorithm. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (already set up and not + * subsequently completed). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_hash_setup(psa_hash_operation_t *operation, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart hash operation. + * + * The application must call psa_hash_setup() before calling this function. + * + * If this function returns an error status, the operation becomes inactive. + * + * \param[in,out] operation Active hash operation. + * \param[in] input Buffer containing the message fragment to hash. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, or already completed). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_hash_update(psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Finish the calculation of the hash of a message. + * + * The application must call psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to psa_hash_update(). + * + * When this function returns, the operation becomes inactive. + * + * \warning Applications should not call this function if they expect + * a specific value for the hash. Call psa_hash_verify() instead. + * Beware that comparing integrity or authenticity data such as + * hash values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the hashed data which could allow an attacker to guess + * a valid hash and thereby bypass security controls. + * + * \param[in,out] operation Active hash operation. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_SIZE(\c alg) where \c alg is the + * hash algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, or already completed). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p hash buffer is too small. You can determine a + * sufficient buffer size by calling #PSA_HASH_SIZE(\c alg) + * where \c alg is the hash algorithm that is calculated. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_hash_finish(psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +/** Finish the calculation of the hash of a message and compare it with + * an expected value. + * + * The application must call psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to psa_hash_update(). It then + * compares the calculated hash with the expected hash passed as a + * parameter to this function. + * + * When this function returns, the operation becomes inactive. + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual hash and the expected hash is performed + * in constant time. + * + * \param[in,out] operation Active hash operation. + * \param[in] hash Buffer containing the expected hash value. + * \param hash_length Size of the \p hash buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected hash is identical to the actual hash of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The hash of the message was calculated successfully, but it + * differs from the expected hash. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, or already completed). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_hash_verify(psa_hash_operation_t *operation, + const uint8_t *hash, + size_t hash_length); + +/** Abort a hash operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_hash_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by any of the following methods: + * - A call to psa_hash_setup(), whether it succeeds or not. + * - Initializing the \c struct to all-bits-zero. + * - Initializing the \c struct to logical zeros, e.g. + * `psa_hash_operation_t operation = {0}`. + * + * In particular, calling psa_hash_abort() after the operation has been + * terminated by a call to psa_hash_abort(), psa_hash_finish() or + * psa_hash_verify() is safe and has no effect. + * + * \param[in,out] operation Initialized hash operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * \p operation is not an active hash operation. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_hash_abort(psa_hash_operation_t *operation); + +/** Clone a hash operation. + * + * This function copies the state of an ongoing hash operation to + * a new operation object. In other words, this function is equivalent + * to calling psa_hash_setup() on \p target_operation with the same + * algorithm that \p source_operation was set up for, then + * psa_hash_update() on \p target_operation with the same input that + * that was passed to \p source_operation. After this function returns, the + * two objects are independent, i.e. subsequent calls involving one of + * the objects do not affect the other object. + * + * \param[in] source_operation The active hash operation to clone. + * \param[in,out] target_operation The operation object to set up. + * It must be initialized but not active. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * \p source_operation is not an active hash operation. + * \retval #PSA_ERROR_BAD_STATE + * \p target_operation is active. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation); + +/**@}*/ + +/** \defgroup MAC Message authentication codes + * @{ + */ + +/** The type of the state data structure for multipart MAC operations. + * + * Before calling any function on a MAC operation object, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_mac_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_mac_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_MAC_OPERATION_INIT, + * for example: + * \code + * psa_mac_operation_t operation = PSA_MAC_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_mac_operation_init() + * to the structure, for example: + * \code + * psa_mac_operation_t operation; + * operation = psa_mac_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_mac_operation_s psa_mac_operation_t; + +/** \def PSA_MAC_OPERATION_INIT + * + * This macro returns a suitable initializer for a MAC operation object of type + * #psa_mac_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_MAC_OPERATION_INIT {0} +#endif + +/** Return an initial value for a MAC operation object. + */ +static psa_mac_operation_t psa_mac_operation_init(void); + +/** Set up a multipart MAC calculation operation. + * + * This function sets up the calculation of the MAC + * (message authentication code) of a byte string. + * To verify the MAC of a message against an + * expected value, use psa_mac_verify_setup() instead. + * + * The sequence of operations to calculate a MAC is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_mac_operation_t, e.g. PSA_MAC_OPERATION_INIT. + * -# Call psa_mac_sign_setup() to specify the algorithm and key. + * The key remains associated with the operation even if the content + * of the key slot changes. + * -# Call psa_mac_update() zero, one or more times, passing a fragment + * of the message each time. The MAC that is calculated is the MAC + * of the concatenation of these messages in order. + * -# At the end of the message, call psa_mac_sign_finish() to finish + * calculating the MAC value and retrieve it. + * + * The application may call psa_mac_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_mac_sign_setup(), the application must + * eventually terminate the operation through one of the following methods: + * - A failed call to psa_mac_update(). + * - A call to psa_mac_sign_finish() or psa_mac_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_mac_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (already set up and not + * subsequently completed). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Set up a multipart MAC verification operation. + * + * This function sets up the verification of the MAC + * (message authentication code) of a byte string against an expected value. + * + * The sequence of operations to verify a MAC is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_mac_operation_t, e.g. PSA_MAC_OPERATION_INIT. + * -# Call psa_mac_verify_setup() to specify the algorithm and key. + * The key remains associated with the operation even if the content + * of the key slot changes. + * -# Call psa_mac_update() zero, one or more times, passing a fragment + * of the message each time. The MAC that is calculated is the MAC + * of the concatenation of these messages in order. + * -# At the end of the message, call psa_mac_verify_finish() to finish + * calculating the actual MAC of the message and verify it against + * the expected value. + * + * The application may call psa_mac_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_mac_verify_setup(), the application must + * eventually terminate the operation through one of the following methods: + * - A failed call to psa_mac_update(). + * - A call to psa_mac_verify_finish() or psa_mac_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_mac_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c key is not compatible with \c alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (already set up and not + * subsequently completed). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart MAC operation. + * + * The application must call psa_mac_sign_setup() or psa_mac_verify_setup() + * before calling this function. + * + * If this function returns an error status, the operation becomes inactive. + * + * \param[in,out] operation Active MAC operation. + * \param[in] input Buffer containing the message fragment to add to + * the MAC calculation. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, or already completed). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_mac_update(psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Finish the calculation of the MAC of a message. + * + * The application must call psa_mac_sign_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to psa_mac_update(). + * + * When this function returns, the operation becomes inactive. + * + * \warning Applications should not call this function if they expect + * a specific value for the MAC. Call psa_mac_verify_finish() instead. + * Beware that comparing integrity or authenticity data such as + * MAC values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the MAC value which could allow an attacker to guess + * a valid MAC and thereby bypass security controls. + * + * \param[in,out] operation Active MAC operation. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Size of the \p mac buffer in bytes. + * \param[out] mac_length On success, the number of bytes + * that make up the MAC value. This is always + * #PSA_MAC_FINAL_SIZE(\c key_type, \c key_bits, \c alg) + * where \c key_type and \c key_bits are the type and + * bit-size respectively of the key and \c alg is the + * MAC algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, or already completed). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p mac buffer is too small. You can determine a + * sufficient buffer size by calling PSA_MAC_FINAL_SIZE(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length); + +/** Finish the calculation of the MAC of a message and compare it with + * an expected value. + * + * The application must call psa_mac_verify_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to psa_mac_update(). It then + * compares the calculated MAC with the expected MAC passed as a + * parameter to this function. + * + * When this function returns, the operation becomes inactive. + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual MAC and the expected MAC is performed + * in constant time. + * + * \param[in,out] operation Active MAC operation. + * \param[in] mac Buffer containing the expected MAC value. + * \param mac_length Size of the \p mac buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected MAC is identical to the actual MAC of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The MAC of the message was calculated successfully, but it + * differs from the expected MAC. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, or already completed). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length); + +/** Abort a MAC operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_mac_sign_setup() or psa_mac_verify_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by any of the following methods: + * - A call to psa_mac_sign_setup() or psa_mac_verify_setup(), whether + * it succeeds or not. + * - Initializing the \c struct to all-bits-zero. + * - Initializing the \c struct to logical zeros, e.g. + * `psa_mac_operation_t operation = {0}`. + * + * In particular, calling psa_mac_abort() after the operation has been + * terminated by a call to psa_mac_abort(), psa_mac_sign_finish() or + * psa_mac_verify_finish() is safe and has no effect. + * + * \param[in,out] operation Initialized MAC operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * \p operation is not an active MAC operation. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_mac_abort(psa_mac_operation_t *operation); + +/**@}*/ + +/** \defgroup cipher Symmetric ciphers + * @{ + */ + +/** The type of the state data structure for multipart cipher operations. + * + * Before calling any function on a cipher operation object, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_cipher_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_cipher_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_CIPHER_OPERATION_INIT, + * for example: + * \code + * psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_cipher_operation_init() + * to the structure, for example: + * \code + * psa_cipher_operation_t operation; + * operation = psa_cipher_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_cipher_operation_s psa_cipher_operation_t; + +/** \def PSA_CIPHER_OPERATION_INIT + * + * This macro returns a suitable initializer for a cipher operation object of + * type #psa_cipher_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_CIPHER_OPERATION_INIT {0} +#endif + +/** Return an initial value for a cipher operation object. + */ +static psa_cipher_operation_t psa_cipher_operation_init(void); + +/** Set the key for a multipart symmetric encryption operation. + * + * The sequence of operations to encrypt a message with a symmetric cipher + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_cipher_operation_t, e.g. + * PSA_CIPHER_OPERATION_INIT. + * -# Call psa_cipher_encrypt_setup() to specify the algorithm and key. + * The key remains associated with the operation even if the content + * of the key slot changes. + * -# Call either psa_cipher_generate_iv() or psa_cipher_set_iv() to + * generate or set the IV (initialization vector). You should use + * psa_cipher_generate_iv() unless the protocol you are implementing + * requires a specific IV value. + * -# Call psa_cipher_update() zero, one or more times, passing a fragment + * of the message each time. + * -# Call psa_cipher_finish(). + * + * The application may call psa_cipher_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_cipher_encrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A failed call to psa_cipher_generate_iv(), psa_cipher_set_iv() + * or psa_cipher_update(). + * - A call to psa_cipher_finish() or psa_cipher_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (already set up and not + * subsequently completed). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Set the key for a multipart symmetric decryption operation. + * + * The sequence of operations to decrypt a message with a symmetric cipher + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_cipher_operation_t, e.g. + * PSA_CIPHER_OPERATION_INIT. + * -# Call psa_cipher_decrypt_setup() to specify the algorithm and key. + * The key remains associated with the operation even if the content + * of the key slot changes. + * -# Call psa_cipher_update() with the IV (initialization vector) for the + * decryption. If the IV is prepended to the ciphertext, you can call + * psa_cipher_update() on a buffer containing the IV followed by the + * beginning of the message. + * -# Call psa_cipher_update() zero, one or more times, passing a fragment + * of the message each time. + * -# Call psa_cipher_finish(). + * + * The application may call psa_cipher_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_cipher_decrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A failed call to psa_cipher_update(). + * - A call to psa_cipher_finish() or psa_cipher_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (already set up and not + * subsequently completed). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Generate an IV for a symmetric encryption operation. + * + * This function generates a random IV (initialization vector), nonce + * or initial counter value for the encryption operation as appropriate + * for the chosen algorithm, key type and key size. + * + * The application must call psa_cipher_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation becomes inactive. + * + * \param[in,out] operation Active cipher operation. + * \param[out] iv Buffer where the generated IV is to be written. + * \param iv_size Size of the \p iv buffer in bytes. + * \param[out] iv_length On success, the number of bytes of the + * generated IV. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, or IV already set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p iv buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, + unsigned char *iv, + size_t iv_size, + size_t *iv_length); + +/** Set the IV for a symmetric encryption or decryption operation. + * + * This function sets the random IV (initialization vector), nonce + * or initial counter value for the encryption or decryption operation. + * + * The application must call psa_cipher_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation becomes inactive. + * + * \note When encrypting, applications should use psa_cipher_generate_iv() + * instead of this function, unless implementing a protocol that requires + * a non-random IV. + * + * \param[in,out] operation Active cipher operation. + * \param[in] iv Buffer containing the IV to use. + * \param iv_length Size of the IV in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, or IV already set). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p iv is not acceptable for the chosen algorithm, + * or the chosen algorithm does not use an IV. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, + const unsigned char *iv, + size_t iv_length); + +/** Encrypt or decrypt a message fragment in an active cipher operation. + * + * Before calling this function, you must: + * 1. Call either psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup(). + * The choice of setup function determines whether this function + * encrypts or decrypts its input. + * 2. If the algorithm requires an IV, call psa_cipher_generate_iv() + * (recommended when encrypting) or psa_cipher_set_iv(). + * + * If this function returns an error status, the operation becomes inactive. + * + * \param[in,out] operation Active cipher operation. + * \param[in] input Buffer containing the message fragment to + * encrypt or decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, IV required but + * not set, or already completed). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, + const uint8_t *input, + size_t input_length, + unsigned char *output, + size_t output_size, + size_t *output_length); + +/** Finish encrypting or decrypting a message in a cipher operation. + * + * The application must call psa_cipher_encrypt_setup() or + * psa_cipher_decrypt_setup() before calling this function. The choice + * of setup function determines whether this function encrypts or + * decrypts its input. + * + * This function finishes the encryption or decryption of the message + * formed by concatenating the inputs passed to preceding calls to + * psa_cipher_update(). + * + * When this function returns, the operation becomes inactive. + * + * \param[in,out] operation Active cipher operation. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (not set up, IV required but + * not set, or already completed). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Abort a cipher operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by any of the following methods: + * - A call to psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup(), + * whether it succeeds or not. + * - Initializing the \c struct to all-bits-zero. + * - Initializing the \c struct to logical zeros, e.g. + * `psa_cipher_operation_t operation = {0}`. + * + * In particular, calling psa_cipher_abort() after the operation has been + * terminated by a call to psa_cipher_abort() or psa_cipher_finish() + * is safe and has no effect. + * + * \param[in,out] operation Initialized cipher operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * \p operation is not an active cipher operation. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation); + +/**@}*/ + +/** \defgroup aead Authenticated encryption with associated data (AEAD) + * @{ + */ + +/** Process an authenticated encryption operation. + * + * \param handle Handle to the key to use for the operation. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the \p nonce buffer in bytes. + * \param[in] additional_data Additional data that will be authenticated + * but not encrypted. + * \param additional_data_length Size of \p additional_data in bytes. + * \param[in] plaintext Data that will be authenticated and + * encrypted. + * \param plaintext_length Size of \p plaintext in bytes. + * \param[out] ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is not + * part of this output. For algorithms where the + * encrypted data and the authentication tag + * are defined as separate outputs, the + * authentication tag is appended to the + * encrypted data. + * \param ciphertext_size Size of the \p ciphertext buffer in bytes. + * This must be at least + * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(\p alg, + * \p plaintext_length). + * \param[out] ciphertext_length On success, the size of the output + * in the \b ciphertext buffer. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *plaintext, + size_t plaintext_length, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length); + +/** Process an authenticated decryption operation. + * + * \param handle Handle to the key to use for the operation. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the \p nonce buffer in bytes. + * \param[in] additional_data Additional data that has been authenticated + * but not encrypted. + * \param additional_data_length Size of \p additional_data in bytes. + * \param[in] ciphertext Data that has been authenticated and + * encrypted. For algorithms where the + * encrypted data and the authentication tag + * are defined as separate inputs, the buffer + * must contain the encrypted data followed + * by the authentication tag. + * \param ciphertext_length Size of \p ciphertext in bytes. + * \param[out] plaintext Output buffer for the decrypted data. + * \param plaintext_size Size of the \p plaintext buffer in bytes. + * This must be at least + * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(\p alg, + * \p ciphertext_length). + * \param[out] plaintext_length On success, the size of the output + * in the \b plaintext buffer. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The ciphertext is not authentic. + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length); + +/**@}*/ + +/** \defgroup asymmetric Asymmetric cryptography + * @{ + */ + +/** + * \brief Sign a hash or short message with a private key. + * + * Note that to perform a hash-and-sign signature algorithm, you must + * first calculate the hash by calling psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(). Then pass the resulting hash as the \p hash + * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) + * to determine the hash algorithm to use. + * + * \param handle Handle to the key to use for the operation. + * It must be an asymmetric key pair. + * \param alg A signature algorithm that is compatible with + * the type of \p key. + * \param[in] hash The hash or message to sign. + * \param hash_length Size of the \p hash buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param signature_size Size of the \p signature buffer in bytes. + * \param[out] signature_length On success, the number of bytes + * that make up the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_sign(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length); + +/** + * \brief Verify the signature a hash or short message using a public key. + * + * Note that to perform a hash-and-sign signature algorithm, you must + * first calculate the hash by calling psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(). Then pass the resulting hash as the \p hash + * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) + * to determine the hash algorithm to use. + * + * \param handle Handle to the key to use for the operation. + * It must be a public key or an asymmetric key pair. + * \param alg A signature algorithm that is compatible with + * the type of \p key. + * \param[in] hash The hash or message whose signature is to be + * verified. + * \param hash_length Size of the \p hash buffer in bytes. + * \param[in] signature Buffer containing the signature to verify. + * \param signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * The signature is valid. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was perfomed successfully, but the passed + * signature is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_verify(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length); + +/** + * \brief Encrypt a short message with a public key. + * + * \param handle Handle to the key to use for the operation. + * It must be a public key or an asymmetric + * key pair. + * \param alg An asymmetric encryption algorithm that is + * compatible with the type of \p key. + * \param[in] input The message to encrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[in] salt A salt or label, if supported by the + * encryption algorithm. + * If the algorithm does not support a + * salt, pass \c NULL. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass \c NULL. + * + * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param salt_length Size of the \p salt buffer in bytes. + * If \p salt is \c NULL, pass 0. + * \param[out] output Buffer where the encrypted message is to + * be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** + * \brief Decrypt a short message with a private key. + * + * \param handle Handle to the key to use for the operation. + * It must be an asymmetric key pair. + * \param alg An asymmetric encryption algorithm that is + * compatible with the type of \p key. + * \param[in] input The message to decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[in] salt A salt or label, if supported by the + * encryption algorithm. + * If the algorithm does not support a + * salt, pass \c NULL. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass \c NULL. + * + * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param salt_length Size of the \p salt buffer in bytes. + * If \p salt is \c NULL, pass 0. + * \param[out] output Buffer where the decrypted message is to + * be written. + * \param output_size Size of the \c output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_INVALID_PADDING + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/**@}*/ + +/** \defgroup generators Generators + * @{ + */ + +/** The type of the state data structure for generators. + * + * Before calling any function on a generator, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_crypto_generator_t generator; + * memset(&generator, 0, sizeof(generator)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_crypto_generator_t generator = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_CRYPTO_GENERATOR_INIT, + * for example: + * \code + * psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT; + * \endcode + * - Assign the result of the function psa_crypto_generator_init() + * to the structure, for example: + * \code + * psa_crypto_generator_t generator; + * generator = psa_crypto_generator_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. + */ +typedef struct psa_crypto_generator_s psa_crypto_generator_t; + +/** \def PSA_CRYPTO_GENERATOR_INIT + * + * This macro returns a suitable initializer for a generator object + * of type #psa_crypto_generator_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_CRYPTO_GENERATOR_INIT {0} +#endif + +/** Return an initial value for a generator object. + */ +static psa_crypto_generator_t psa_crypto_generator_init(void); + +/** Retrieve the current capacity of a generator. + * + * The capacity of a generator is the maximum number of bytes that it can + * return. Reading *N* bytes from a generator reduces its capacity by *N*. + * + * \param[in] generator The generator to query. + * \param[out] capacity On success, the capacity of the generator. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + */ +psa_status_t psa_get_generator_capacity(const psa_crypto_generator_t *generator, + size_t *capacity); + +/** Read some data from a generator. + * + * This function reads and returns a sequence of bytes from a generator. + * The data that is read is discarded from the generator. The generator's + * capacity is decreased by the number of bytes read. + * + * \param[in,out] generator The generator object to read from. + * \param[out] output Buffer where the generator output will be + * written. + * \param output_length Number of bytes to output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_DATA + * There were fewer than \p output_length bytes + * in the generator. Note that in this case, no + * output is written to the output buffer. + * The generator's capacity is set to 0, thus + * subsequent calls to this function will not + * succeed, even with a smaller output buffer. + * \retval #PSA_ERROR_BAD_STATE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_generator_read(psa_crypto_generator_t *generator, + uint8_t *output, + size_t output_length); + +/** Create a symmetric key from data read from a generator. + * + * This function reads a sequence of bytes from a generator and imports + * these bytes as a key. + * The data that is read is discarded from the generator. The generator's + * capacity is decreased by the number of bytes read. + * + * This function is equivalent to calling #psa_generator_read and + * passing the resulting output to #psa_import_key, but + * if the implementation provides an isolation boundary then + * the key material is not exposed outside the isolation boundary. + * + * \param handle Handle to the slot where the key will be stored. + * It must have been obtained by calling + * psa_allocate_key() or psa_create_key() and must + * not contain key material yet. + * \param type Key type (a \c PSA_KEY_TYPE_XXX value). + * This must be a symmetric key type. + * \param bits Key size in bits. + * \param[in,out] generator The generator object to read from. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_INSUFFICIENT_DATA + * There were fewer than \p output_length bytes + * in the generator. Note that in this case, no + * output is written to the output buffer. + * The generator's capacity is set to 0, thus + * subsequent calls to this function will not + * succeed, even with a smaller output buffer. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The key type or key size is not supported, either by the + * implementation in general or in this particular slot. + * \retval #PSA_ERROR_BAD_STATE + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_ALREADY_EXISTS + * There is already a key in the specified slot. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generator_import_key(psa_key_handle_t handle, + psa_key_type_t type, + size_t bits, + psa_crypto_generator_t *generator); + +/** Abort a generator. + * + * Once a generator has been aborted, its capacity is zero. + * Aborting a generator frees all associated resources except for the + * \c generator structure itself. + * + * This function may be called at any time as long as the generator + * object has been initialized to #PSA_CRYPTO_GENERATOR_INIT, to + * psa_crypto_generator_init() or a zero value. In particular, it is valid + * to call psa_generator_abort() twice, or to call psa_generator_abort() + * on a generator that has not been set up. + * + * Once aborted, the generator object may be called. + * + * \param[in,out] generator The generator to abort. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_generator_abort(psa_crypto_generator_t *generator); + +/** Use the maximum possible capacity for a generator. + * + * Use this value as the capacity argument when setting up a generator + * to indicate that the generator should have the maximum possible capacity. + * The value of the maximum possible capacity depends on the generator + * algorithm. + */ +#define PSA_GENERATOR_UNBRIDLED_CAPACITY ((size_t)(-1)) + +/**@}*/ + +/** \defgroup derivation Key derivation + * @{ + */ + +/** Set up a key derivation operation. + * + * A key derivation algorithm takes three inputs: a secret input \p key and + * two non-secret inputs \p label and p salt. + * The result of this function is a byte generator which can + * be used to produce keys and other cryptographic material. + * + * The role of \p label and \p salt is as follows: + * - For HKDF (#PSA_ALG_HKDF), \p salt is the salt used in the "extract" step + * and \p label is the info string used in the "expand" step. + * + * \param[in,out] generator The generator object to set up. It must have + * been initialized as per the documentation for + * #psa_crypto_generator_t and not yet in use. + * \param handle Handle to the secret key. + * \param alg The key derivation algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_KEY_DERIVATION(\p alg) is true). + * \param[in] salt Salt to use. + * \param salt_length Size of the \p salt buffer in bytes. + * \param[in] label Label to use. + * \param label_length Size of the \p label buffer in bytes. + * \param capacity The maximum number of bytes that the + * generator will be able to provide. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c key is not compatible with \c alg, + * or \p capacity is too large for the specified algorithm and key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation(psa_crypto_generator_t *generator, + psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *salt, + size_t salt_length, + const uint8_t *label, + size_t label_length, + size_t capacity); + +/** Set up a key agreement operation. + * + * A key agreement algorithm takes two inputs: a private key \p private_key + * a public key \p peer_key. + * The result of this function is a byte generator which can + * be used to produce keys and other cryptographic material. + * + * The resulting generator always has the maximum capacity permitted by + * the algorithm. + * + * \param[in,out] generator The generator object to set up. It must have been + * initialized as per the documentation for + * #psa_crypto_generator_t and not yet in use. + * \param private_key Handle to the private key to use. + * \param[in] peer_key Public key of the peer. The peer key must be in the + * same format that psa_import_key() accepts for the + * public key type corresponding to the type of + * \p private_key. That is, this function performs the + * equivalent of + * `psa_import_key(internal_public_key_handle, + * PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(private_key_type), + * peer_key, peer_key_length)` where + * `private_key_type` is the type of \p private_key. + * For example, for EC keys, this means that \p + * peer_key is interpreted as a point on the curve + * that the private key is associated with. The + * standard formats for public keys are documented in + * the documentation of psa_export_public_key(). + * \param peer_key_length Size of \p peer_key in bytes. + * \param alg The key agreement algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_KEY_AGREEMENT(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c private_key is not compatible with \c alg, + * or \p peer_key is not valid for \c alg or not compatible with + * \c private_key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_key_agreement(psa_crypto_generator_t *generator, + psa_key_handle_t private_key, + const uint8_t *peer_key, + size_t peer_key_length, + psa_algorithm_t alg); + +/**@}*/ + +/** \defgroup random Random generation + * @{ + */ + +/** + * \brief Generate random bytes. + * + * \warning This function **can** fail! Callers MUST check the return status + * and MUST NOT use the content of the output buffer if the return + * status is not #PSA_SUCCESS. + * + * \note To generate a key, use psa_generate_key() instead. + * + * \param[out] output Output buffer for the generated data. + * \param output_size Number of bytes to generate and output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generate_random(uint8_t *output, + size_t output_size); + +/** Extra parameters for RSA key generation. + * + * You may pass a pointer to a structure of this type as the \c extra + * parameter to psa_generate_key(). + */ +typedef struct { + uint32_t e; /**< Public exponent value. Default: 65537. */ +} psa_generate_key_extra_rsa; + +/** + * \brief Generate a key or key pair. + * + * \param handle Handle to the slot where the key will be stored. + * It must have been obtained by calling + * psa_allocate_key() or psa_create_key() and must + * not contain key material yet. + * \param type Key type (a \c PSA_KEY_TYPE_XXX value). + * \param bits Key size in bits. + * \param[in] extra Extra parameters for key generation. The + * interpretation of this parameter depends on + * \p type. All types support \c NULL to use + * default parameters. Implementation that support + * the generation of vendor-specific key types + * that allow extra parameters shall document + * the format of these extra parameters and + * the default values. For standard parameters, + * the meaning of \p extra is as follows: + * - For a symmetric key type (a type such + * that #PSA_KEY_TYPE_IS_ASYMMETRIC(\p type) is + * false), \p extra must be \c NULL. + * - For an elliptic curve key type (a type + * such that #PSA_KEY_TYPE_IS_ECC(\p type) is + * false), \p extra must be \c NULL. + * - For an RSA key (\p type is + * #PSA_KEY_TYPE_RSA_KEYPAIR), \p extra is an + * optional #psa_generate_key_extra_rsa structure + * specifying the public exponent. The + * default public exponent used when \p extra + * is \c NULL is 65537. + * \param extra_size Size of the buffer that \p extra + * points to, in bytes. Note that if \p extra is + * \c NULL then \p extra_size must be zero. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_ALREADY_EXISTS + * There is already a key in the specified slot. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generate_key(psa_key_handle_t handle, + psa_key_type_t type, + size_t bits, + const void *extra, + size_t extra_size); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +/* The file "crypto_sizes.h" contains definitions for size calculation + * macros whose definitions are implementation-specific. */ +#include "crypto_sizes.h" + +/* The file "crypto_struct.h" contains definitions for + * implementation-specific structs that are declared above. */ +#include "crypto_struct.h" + +/* The file "crypto_extra.h" contains vendor-specific definitions. This + * can include vendor-defined algorithms, extra functions, etc. */ +#include "crypto_extra.h" + +#endif /* PSA_CRYPTO_H */ diff --git a/features/mbedtls/mbed-crypto/inc/psa/crypto_accel_driver.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_accel_driver.h new file mode 100644 index 00000000000..b752fed8819 --- /dev/null +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_accel_driver.h @@ -0,0 +1,796 @@ +/** + * \file psa/crypto_accel_driver.h + * \brief PSA cryptography accelerator driver module + * + * This header declares types and function signatures for cryptography + * drivers that access key material directly. This is meant for + * on-chip cryptography accelerators. + * + * This file is part of the PSA Crypto Driver Model, containing functions for + * driver developers to implement to enable hardware to be called in a + * standardized way by a PSA Cryptographic API implementation. The functions + * comprising the driver model, which driver authors implement, are not + * intended to be called by application developers. + */ + +/* + * 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 PSA_CRYPTO_ACCEL_DRIVER_H +#define PSA_CRYPTO_ACCEL_DRIVER_H + +#include "crypto_driver_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup driver_digest Message Digests + * + * Generation and authentication of Message Digests (aka hashes) must be done + * in parts using the following sequence: + * - `psa_drv_hash_setup_t` + * - `psa_drv_hash_update_t` + * - ... + * - `psa_drv_hash_finish_t` + * + * If a previously started Message Digest operation needs to be terminated + * before the `psa_drv_hash_finish_t` operation is complete, it should be aborted + * by the `psa_drv_hash_abort_t`. Failure to do so may result in allocated + * resources not being freed or in other undefined behavior. + */ +/**@{*/ + +/** \brief The hardware-specific hash context structure + * + * The contents of this structure are implementation dependent and are + * therefore not described here + */ +typedef struct psa_drv_hash_context_s psa_drv_hash_context_t; + +/** \brief The function prototype for the start operation of a hash (message + * digest) operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_hash__setup + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying hash function + * + * \param[in,out] p_context A structure that will contain the + * hardware-specific hash context + * + * \retval PSA_SUCCESS Success. + */ +typedef psa_status_t (*psa_drv_hash_setup_t)(psa_drv_hash_context_t *p_context); + +/** \brief The function prototype for the update operation of a hash (message + * digest) operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_hash__update + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm + * + * \param[in,out] p_context A hardware-specific structure for the + * previously-established hash operation to be + * continued + * \param[in] p_input A buffer containing the message to be appended + * to the hash operation + * \param[in] input_length The size in bytes of the input message buffer + */ +typedef psa_status_t (*psa_drv_hash_update_t)(psa_drv_hash_context_t *p_context, + const uint8_t *p_input, + size_t input_length); + +/** \brief The prototype for the finish operation of a hash (message digest) + * operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_hash__finish + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started hash operation to be + * fiinished + * \param[out] p_output A buffer where the generated digest will be + * placed + * \param[in] output_size The size in bytes of the buffer that has been + * allocated for the `p_output` buffer + * \param[out] p_output_length The number of bytes placed in `p_output` after + * success + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_hash_finish_t)(psa_drv_hash_context_t *p_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief The function prototype for the abort operation of a hash (message + * digest) operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_hash__abort + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm + * + * \param[in,out] p_context A hardware-specific structure for the previously + * started hash operation to be aborted + */ +typedef void (*psa_drv_hash_abort_t)(psa_drv_hash_context_t *p_context); + +/**@}*/ + +/** \defgroup transparent_mac Transparent Message Authentication Code + * Generation and authentication of Message Authentication Codes (MACs) using + * transparent keys can be done either as a single function call (via the + * `psa_drv_mac_transparent_generate_t` or `psa_drv_mac_transparent_verify_t` + * functions), or in parts using the following sequence: + * - `psa_drv_mac_transparent_setup_t` + * - `psa_drv_mac_transparent_update_t` + * - `psa_drv_mac_transparent_update_t` + * - ... + * - `psa_drv_mac_transparent_finish_t` or `psa_drv_mac_transparent_finish_verify_t` + * + * If a previously started Transparent MAC operation needs to be terminated, it + * should be done so by the `psa_drv_mac_transparent_abort_t`. Failure to do so may + * result in allocated resources not being freed or in other undefined + * behavior. + * + */ +/**@{*/ + +/** \brief The hardware-specific transparent-key MAC context structure + * + * The contents of this structure are implementation dependent and are + * therefore not described here. + */ +typedef struct psa_drv_mac_transparent_context_s psa_drv_mac_transparent_context_t; + +/** \brief The function prototype for the setup operation of a + * transparent-key MAC operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_mac_transparent___setup + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying primitive, and `MAC_VARIANT` + * is the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A structure that will contain the + * hardware-specific MAC context + * \param[in] p_key A buffer containing the cleartext key material + * to be used in the operation + * \param[in] key_length The size in bytes of the key material + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_mac_transparent_setup_t)(psa_drv_mac_transparent_context_t *p_context, + const uint8_t *p_key, + size_t key_length); + +/** \brief The function prototype for the update operation of a + * transparent-key MAC operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_mac_transparent___update + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` + * is the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously-established MAC operation to be + * continued + * \param[in] p_input A buffer containing the message to be appended + * to the MAC operation + * \param[in] input_length The size in bytes of the input message buffer + */ +typedef psa_status_t (*psa_drv_mac_transparent_update_t)(psa_drv_mac_transparent_context_t *p_context, + const uint8_t *p_input, + size_t input_length); + +/** \brief The function prototype for the finish operation of a + * transparent-key MAC operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_mac_transparent___finish + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started MAC operation to be + * finished + * \param[out] p_mac A buffer where the generated MAC will be placed + * \param[in] mac_length The size in bytes of the buffer that has been + * allocated for the `p_mac` buffer + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_mac_transparent_finish_t)(psa_drv_mac_transparent_context_t *p_context, + uint8_t *p_mac, + size_t mac_length); + +/** \brief The function prototype for the finish and verify operation of a + * transparent-key MAC operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_mac_transparent___finish_verify + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started MAC operation to be + * verified and finished + * \param[in] p_mac A buffer containing the MAC that will be used + * for verification + * \param[in] mac_length The size in bytes of the data in the `p_mac` + * buffer + * + * \retval PSA_SUCCESS + * The operation completed successfully and the comparison matched + */ +typedef psa_status_t (*psa_drv_mac_transparent_finish_verify_t)(psa_drv_mac_transparent_context_t *p_context, + const uint8_t *p_mac, + size_t mac_length); + +/** \brief The function prototype for the abort operation for a previously + * started transparent-key MAC operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_mac_transparent___abort + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started MAC operation to be + * aborted + * + */ +typedef psa_status_t (*psa_drv_mac_transparent_abort_t)(psa_drv_mac_transparent_context_t *p_context); + +/** \brief The function prototype for a one-shot operation of a transparent-key + * MAC operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_mac_transparent__ + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in] p_input A buffer containing the data to be MACed + * \param[in] input_length The length in bytes of the `p_input` data + * \param[in] p_key A buffer containing the key material to be used + * for the MAC operation + * \param[in] key_length The length in bytes of the `p_key` data + * \param[in] alg The algorithm to be performed + * \param[out] p_mac The buffer where the resulting MAC will be placed + * upon success + * \param[in] mac_length The length in bytes of the `p_mac` buffer + */ +typedef psa_status_t (*psa_drv_mac_transparent_t)(const uint8_t *p_input, + size_t input_length, + const uint8_t *p_key, + size_t key_length, + psa_algorithm_t alg, + uint8_t *p_mac, + size_t mac_length); + +/** \brief The function prototype for a one-shot operation of a transparent-key + * MAC Verify operation + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_mac_transparent___verify + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in] p_input A buffer containing the data to be MACed + * \param[in] input_length The length in bytes of the `p_input` data + * \param[in] p_key A buffer containing the key material to be used + * for the MAC operation + * \param[in] key_length The length in bytes of the `p_key` data + * \param[in] alg The algorithm to be performed + * \param[in] p_mac The MAC data to be compared + * \param[in] mac_length The length in bytes of the `p_mac` buffer + * + * \retval PSA_SUCCESS + * The operation completed successfully and the comparison matched + */ +typedef psa_status_t (*psa_drv_mac_transparent_verify_t)(const uint8_t *p_input, + size_t input_length, + const uint8_t *p_key, + size_t key_length, + psa_algorithm_t alg, + const uint8_t *p_mac, + size_t mac_length); +/**@}*/ + +/** \defgroup transparent_cipher Transparent Block Cipher + * Encryption and Decryption using transparent keys in block modes other than + * ECB must be done in multiple parts, using the following flow: + * - `psa_drv_cipher_transparent_setup_t` + * - `psa_drv_cipher_transparent_set_iv_t` (optional depending upon block mode) + * - `psa_drv_cipher_transparent_update_t` + * - ... + * - `psa_drv_cipher_transparent_finish_t` + + * If a previously started Transparent Cipher operation needs to be terminated, + * it should be done so by the `psa_drv_cipher_transparent_abort_t`. Failure to do + * so may result in allocated resources not being freed or in other undefined + * behavior. + */ +/**@{*/ + +/** \brief The hardware-specific transparent-key Cipher context structure + * + * The contents of this structure are implementation dependent and are + * therefore not described here. + */ +typedef struct psa_drv_cipher_transparent_context_s psa_drv_cipher_transparent_context_t; + +/** \brief The function prototype for the setup operation of transparent-key + * block cipher operations. + * Functions that implement the prototype should be named in the following + * conventions: + * ~~~~~~~~~~~~~{.c} + * psa_drv_cipher_transparent_setup__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * or for stream ciphers: + * ~~~~~~~~~~~~~{.c} + * psa_drv_cipher_transparent_setup_ + * ~~~~~~~~~~~~~ + * Where `CIPHER_NAME` is the name of a stream cipher (i.e. RC4) + * + * \param[in,out] p_context A structure that will contain the + * hardware-specific cipher context + * \param[in] direction Indicates if the operation is an encrypt or a + * decrypt + * \param[in] p_key_data A buffer containing the cleartext key material + * to be used in the operation + * \param[in] key_data_size The size in bytes of the key material + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_cipher_transparent_setup_t)(psa_drv_cipher_transparent_context_t *p_context, + psa_encrypt_or_decrypt_t direction, + const uint8_t *p_key_data, + size_t key_data_size); + +/** \brief The function prototype for the set initialization vector operation + * of transparent-key block cipher operations + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_cipher_transparent_set_iv__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * \param[in,out] p_context A structure that contains the previously setup + * hardware-specific cipher context + * \param[in] p_iv A buffer containing the initialization vecotr + * \param[in] iv_length The size in bytes of the contents of `p_iv` + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_cipher_transparent_set_iv_t)(psa_drv_cipher_transparent_context_t *p_context, + const uint8_t *p_iv, + size_t iv_length); + +/** \brief The function prototype for the update operation of transparent-key + * block cipher operations. + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_cipher_transparent_update__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + * \param[in] p_input A buffer containing the data to be + * encrypted or decrypted + * \param[in] input_size The size in bytes of the `p_input` buffer + * \param[out] p_output A caller-allocated buffer where the + * generated output will be placed + * \param[in] output_size The size in bytes of the `p_output` buffer + * \param[out] p_output_length After completion, will contain the number + * of bytes placed in the `p_output` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_cipher_transparent_update_t)(psa_drv_cipher_transparent_context_t *p_context, + const uint8_t *p_input, + size_t input_size, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief The function prototype for the finish operation of transparent-key + * block cipher operations. + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_cipher_transparent_finish__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + * \param[out] p_output A caller-allocated buffer where the generated + * output will be placed + * \param[in] output_size The size in bytes of the `p_output` buffer + * \param[out] p_output_length After completion, will contain the number of + * bytes placed in the `p_output` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_cipher_transparent_finish_t)(psa_drv_cipher_transparent_context_t *p_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief The function prototype for the abort operation of transparent-key + * block cipher operations. + * + * Functions that implement the following prototype should be named in the + * following convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_cipher_transparent_abort__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_cipher_transparent_abort_t)(psa_drv_cipher_transparent_context_t *p_context); + +/**@}*/ + +/** \defgroup aead_transparent AEAD Transparent + * + * Authenticated Encryption with Additional Data (AEAD) operations with + * transparent keys must be done in one function call. While this creates a + * burden for implementers as there must be sufficient space in memory for the + * entire message, it prevents decrypted data from being made available before + * the authentication operation is complete and the data is known to be + * authentic. + */ +/**@{*/ + +/** Process an authenticated encryption operation using an opaque key. + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_aead__encrypt + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the AEAD algorithm + * + * \param[in] p_key A pointer to the key material + * \param[in] key_length The size in bytes of the key material + * \param[in] alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] nonce Nonce or IV to use + * \param[in] nonce_length Size of the `nonce` buffer in bytes + * \param[in] additional_data Additional data that will be MACed + * but not encrypted. + * \param[in] additional_data_length Size of `additional_data` in bytes + * \param[in] plaintext Data that will be MACed and + * encrypted. + * \param[in] plaintext_length Size of `plaintext` in bytes + * \param[out] ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is + * not part of this output. For algorithms + * where the encrypted data and the + * authentication tag are defined as + * separate outputs, the authentication + * tag is appended to the encrypted data. + * \param[in] ciphertext_size Size of the `ciphertext` buffer in + * bytes + * This must be at least + * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(`alg`, + * `plaintext_length`). + * \param[out] ciphertext_length On success, the size of the output in + * the `ciphertext` buffer + * + * \retval #PSA_SUCCESS + + */ +typedef psa_status_t (*psa_drv_aead_transparent_encrypt_t)(const uint8_t *p_key, + size_t key_length, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *plaintext, + size_t plaintext_length, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length); + +/** Process an authenticated decryption operation using an opaque key. + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_aead__decrypt + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the AEAD algorithm + * \param[in] p_key A pointer to the key material + * \param[in] key_length The size in bytes of the key material + * \param[in] alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] nonce Nonce or IV to use + * \param[in] nonce_length Size of the `nonce` buffer in bytes + * \param[in] additional_data Additional data that has been MACed + * but not encrypted + * \param[in] additional_data_length Size of `additional_data` in bytes + * \param[in] ciphertext Data that has been MACed and + * encrypted + * For algorithms where the encrypted data + * and the authentication tag are defined + * as separate inputs, the buffer must + * contain the encrypted data followed by + * the authentication tag. + * \param[in] ciphertext_length Size of `ciphertext` in bytes + * \param[out] plaintext Output buffer for the decrypted data + * \param[in] plaintext_size Size of the `plaintext` buffer in + * bytes + * This must be at least + * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(`alg`, + * `ciphertext_length`). + * \param[out] plaintext_length On success, the size of the output + * in the \b plaintext buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_aead_transparent_decrypt_t)(const uint8_t *p_key, + size_t key_length, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length); + +/**@}*/ + +/** \defgroup transparent_asymmetric Transparent Asymmetric Cryptography + * + * Since the amount of data that can (or should) be encrypted or signed using + * asymmetric keys is limited by the key size, asymmetric key operations using + * transparent keys must be done in single function calls. + */ +/**@{*/ + + +/** + * \brief A function that signs a hash or short message with a transparent + * asymmetric private key + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_asymmetric__sign + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the signing algorithm + * + * \param[in] p_key A buffer containing the private key + * material + * \param[in] key_size The size in bytes of the `p_key` data + * \param[in] alg A signature algorithm that is compatible + * with the type of `p_key` + * \param[in] p_hash The hash or message to sign + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[out] p_signature Buffer where the signature is to be written + * \param[in] signature_size Size of the `p_signature` buffer in bytes + * \param[out] p_signature_length On success, the number of bytes + * that make up the returned signature value + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_asymmetric_transparent_sign_t)(const uint8_t *p_key, + size_t key_size, + psa_algorithm_t alg, + const uint8_t *p_hash, + size_t hash_length, + uint8_t *p_signature, + size_t signature_size, + size_t *p_signature_length); + +/** + * \brief A function that verifies the signature a hash or short message using + * a transparent asymmetric public key + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_asymmetric__verify + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the signing algorithm + * + * \param[in] p_key A buffer containing the public key material + * \param[in] key_size The size in bytes of the `p_key` data + * \param[in] alg A signature algorithm that is compatible with + * the type of `key` + * \param[in] p_hash The hash or message whose signature is to be + * verified + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[in] p_signature Buffer containing the signature to verify + * \param[in] signature_length Size of the `p_signature` buffer in bytes + * + * \retval PSA_SUCCESS + * The signature is valid. + */ +typedef psa_status_t (*psa_drv_asymmetric_transparent_verify_t)(const uint8_t *p_key, + size_t key_size, + psa_algorithm_t alg, + const uint8_t *p_hash, + size_t hash_length, + const uint8_t *p_signature, + size_t signature_length); + +/** + * \brief A function that encrypts a short message with a transparent + * asymmetric public key + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_asymmetric__encrypt + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the encryption algorithm + * + * \param[in] p_key A buffer containing the public key material + * \param[in] key_size The size in bytes of the `p_key` data + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to encrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL` + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0. + * \param[out] p_output Buffer where the encrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes + * that make up the returned output + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_asymmetric_transparent_encrypt_t)(const uint8_t *p_key, + size_t key_size, + psa_algorithm_t alg, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief Decrypt a short message with a transparent asymmetric private key + * + * Functions that implement the prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_asymmetric__decrypt + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the encryption algorithm + * + * \param[in] p_key A buffer containing the private key material + * \param[in] key_size The size in bytes of the `p_key` data + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to decrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL`. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0 + * \param[out] p_output Buffer where the decrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes + * that make up the returned output + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_asymmetric_transparent_decrypt_t)(const uint8_t *p_key, + size_t key_size, + psa_algorithm_t alg, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_ACCEL_DRIVER_H */ diff --git a/features/mbedtls/mbed-crypto/inc/psa/crypto_driver_common.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_driver_common.h new file mode 100644 index 00000000000..6f1a5d5d9b1 --- /dev/null +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_driver_common.h @@ -0,0 +1,54 @@ +/** + * \file psa/crypto_driver_common.h + * \brief Definitions for all PSA crypto drivers + * + * This file contains common definitions shared by all PSA crypto drivers. + * Do not include it directly: instead, include the header file(s) for + * the type(s) of driver that you are implementing. For example, if + * you are writing a driver for a chip that provides both a hardware + * random generator and an accelerator for some cryptographic algorithms, + * include `psa/crypto_entropy_driver.h` and `psa/crypto_accel_driver.h`. + * + * This file is part of the PSA Crypto Driver Model, containing functions for + * driver developers to implement to enable hardware to be called in a + * standardized way by a PSA Cryptographic API implementation. The functions + * comprising the driver model, which driver authors implement, are not + * intended to be called by application developers. + */ + +/* + * 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 PSA_CRYPTO_DRIVER_COMMON_H +#define PSA_CRYPTO_DRIVER_COMMON_H + +#include +#include + +/* Include type definitions (psa_status_t, psa_algorithm_t, + * psa_key_type_t, etc.) and macros to build and analyze values + * of these types. */ +#include "crypto_types.h" +#include "crypto_values.h" + +/** For encrypt-decrypt functions, whether the operation is an encryption + * or a decryption. */ +typedef enum { + PSA_CRYPTO_DRIVER_DECRYPT, + PSA_CRYPTO_DRIVER_ENCRYPT +} psa_encrypt_or_decrypt_t; + +#endif /* PSA_CRYPTO_DRIVER_COMMON_H */ diff --git a/features/mbedtls/mbed-crypto/inc/psa/crypto_entropy_driver.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_entropy_driver.h new file mode 100644 index 00000000000..f5e383e6cb6 --- /dev/null +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_entropy_driver.h @@ -0,0 +1,111 @@ +/** + * \file psa/crypto_entropy_driver.h + * \brief PSA entropy source driver module + * + * This header declares types and function signatures for entropy sources. + * + * This file is part of the PSA Crypto Driver Model, containing functions for + * driver developers to implement to enable hardware to be called in a + * standardized way by a PSA Cryptographic API implementation. The functions + * comprising the driver model, which driver authors implement, are not + * intended to be called by application developers. + */ + +/* + * 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 PSA_CRYPTO_ENTROPY_DRIVER_H +#define PSA_CRYPTO_ENTROPY_DRIVER_H + +#include "crypto_driver_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup driver_rng Entropy Generation + */ +/**@{*/ + +/** \brief A hardware-specific structure for a entropy providing hardware + */ +typedef struct psa_drv_entropy_context_s psa_drv_entropy_context_t; + +/** \brief Initialize an entropy driver + * + * + * \param[in,out] p_context A hardware-specific structure + * containing any context information for + * the implementation + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_entropy_init_t)(psa_drv_entropy_context_t *p_context); + +/** \brief Get a specified number of bits from the entropy source + * + * It retrives `buffer_size` bytes of data from the entropy source. The entropy + * source will always fill the provided buffer to its full size, however, most + * entropy sources have biases, and the actual amount of entropy contained in + * the buffer will be less than the number of bytes. + * The driver will return the actual number of bytes of entropy placed in the + * buffer in `p_received_entropy_bytes`. + * A PSA Crypto API implementation will likely feed the output of this function + * into a Digital Random Bit Generator (DRBG), and typically has a minimum + * amount of entropy that it needs. + * To accomplish this, the PSA Crypto implementation should be designed to call + * this function multiple times until it has received the required amount of + * entropy from the entropy source. + * + * \param[in,out] p_context A hardware-specific structure + * containing any context information + * for the implementation + * \param[out] p_buffer A caller-allocated buffer for the + * retrieved entropy to be placed in + * \param[in] buffer_size The allocated size of `p_buffer` + * \param[out] p_received_entropy_bits The amount of entropy (in bits) + * actually provided in `p_buffer` + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_entropy_get_bits_t)(psa_drv_entropy_context_t *p_context, + uint8_t *p_buffer, + uint32_t buffer_size, + uint32_t *p_received_entropy_bits); + +/** + * \brief A struct containing all of the function pointers needed to interface + * to an entropy source + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs initialization for the entropy source */ + psa_drv_entropy_init_t *p_init; + /** Function that performs the get_bits operation for the entropy source + */ + psa_drv_entropy_get_bits_t *p_get_bits; +} psa_drv_entropy_t; +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_ENTROPY_DRIVER_H */ diff --git a/features/mbedtls/inc/psa/crypto_extra.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_extra.h similarity index 99% rename from features/mbedtls/inc/psa/crypto_extra.h rename to features/mbedtls/mbed-crypto/inc/psa/crypto_extra.h index 7f08857942c..96b478b7f4e 100644 --- a/features/mbedtls/inc/psa/crypto_extra.h +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_extra.h @@ -111,7 +111,6 @@ void mbedtls_psa_crypto_free( void ); * \retval #PSA_ERROR_INVALID_ARGUMENT * \p seed_size is out of range. * \retval #PSA_ERROR_STORAGE_FAILURE - * \retval `PSA_ITS_ERROR_XXX` * There was a failure reading or writing from storage. * \retval #PSA_ERROR_NOT_PERMITTED * The library has already been initialized. It is no longer diff --git a/features/mbedtls/mbed-crypto/inc/psa/crypto_platform.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_platform.h new file mode 100644 index 00000000000..42cdad32a4b --- /dev/null +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_platform.h @@ -0,0 +1,101 @@ +/** + * \file psa/crypto_platform.h + * + * \brief PSA cryptography module: Mbed TLS platfom definitions + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains platform-dependent type definitions. + * + * In implementations with isolation between the application and the + * cryptography module, implementers should take care to ensure that + * the definitions that are exposed to applications match what the + * module implements. + */ +/* + * 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_PLATFORM_H +#define PSA_CRYPTO_PLATFORM_H + +/* Include the Mbed TLS configuration file, the way Mbed TLS does it + * in each of its header files. */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "../mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +/* PSA requires several types which C99 provides in stdint.h. */ +#include + +/* Integral type representing a key handle. */ +typedef uint16_t psa_key_handle_t; + +/* This implementation distinguishes *application key identifiers*, which + * are the key identifiers specified by the application, from + * *key file identifiers*, which are the key identifiers that the library + * sees internally. The two types can be different if there is a remote + * call layer between the application and the library which supports + * multiple client applications that do not have access to each others' + * keys. The point of having different types is that the key file + * identifier may encode not only the key identifier specified by the + * application, but also the the identity of the application. + * + * Note that this is an internal concept of the library and the remote + * call layer. The application itself never sees anything other than + * #psa_app_key_id_t with its standard definition. + */ + +/* The application key identifier is always what the application sees as + * #psa_key_id_t. */ +typedef uint32_t psa_app_key_id_t; + +#if defined(MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER) + +#if defined(PSA_CRYPTO_SECURE) +/* Building for the PSA Crypto service on a PSA platform. */ +/* A key owner is a PSA partition identifier. */ +typedef int32_t psa_key_owner_id_t; +#endif + +typedef struct +{ + uint32_t key_id; + psa_key_owner_id_t owner; +} psa_key_file_id_t; +#define PSA_KEY_FILE_GET_KEY_ID( file_id ) ( ( file_id ).key_id ) + +/* Since crypto.h is used as part of the PSA Cryptography API specification, + * it must use standard types for things like the argument of psa_open_key(). + * If it wasn't for that constraint, psa_open_key() would take a + * `psa_key_file_id_t` argument. As a workaround, make `psa_key_id_t` an + * alias for `psa_key_file_id_t` when building for a multi-client service. */ +typedef psa_key_file_id_t psa_key_id_t; + +#else /* !MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER */ + +/* By default, a key file identifier is just the application key identifier. */ +typedef psa_app_key_id_t psa_key_file_id_t; +#define PSA_KEY_FILE_GET_KEY_ID( id ) ( id ) + +#endif /* !MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER */ + +#endif /* PSA_CRYPTO_PLATFORM_H */ diff --git a/features/mbedtls/mbed-crypto/inc/psa/crypto_se_driver.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_se_driver.h new file mode 100644 index 00000000000..20cd4b45e10 --- /dev/null +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_se_driver.h @@ -0,0 +1,962 @@ +/** + * \file psa/crypto_se_driver.h + * \brief PSA external cryptoprocessor driver module + * + * This header declares types and function signatures for cryptography + * drivers that access key material via opaque references. This is + * meant for cryptoprocessors that have a separate key storage from the + * space in which the PSA Crypto implementation runs, typically secure + * elements. + * + * This file is part of the PSA Crypto Driver Model, containing functions for + * driver developers to implement to enable hardware to be called in a + * standardized way by a PSA Cryptographic API implementation. The functions + * comprising the driver model, which driver authors implement, are not + * intended to be called by application developers. + */ + +/* + * 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 PSA_CRYPTO_SE_DRIVER_H +#define PSA_CRYPTO_SE_DRIVER_H + +#include "crypto_driver_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** An internal designation of a key slot between the core part of the + * PSA Crypto implementation and the driver. The meaning of this value + * is driver-dependent. */ +typedef uint32_t psa_key_slot_t; + +/** \defgroup opaque_mac Opaque Message Authentication Code + * Generation and authentication of Message Authentication Codes (MACs) using + * opaque keys can be done either as a single function call (via the + * `psa_drv_mac_opaque_generate_t` or `psa_drv_mac_opaque_verify_t` functions), or in + * parts using the following sequence: + * - `psa_drv_mac_opaque_setup_t` + * - `psa_drv_mac_opaque_update_t` + * - `psa_drv_mac_opaque_update_t` + * - ... + * - `psa_drv_mac_opaque_finish_t` or `psa_drv_mac_opaque_finish_verify_t` + * + * If a previously started Opaque MAC operation needs to be terminated, it + * should be done so by the `psa_drv_mac_opaque_abort_t`. Failure to do so may + * result in allocated resources not being freed or in other undefined + * behavior. + */ +/**@{*/ +/** \brief A function that starts a MAC operation for a PSA Crypto Driver + * implementation using an opaque key + * + * \param[in,out] p_context A structure that will contain the + * hardware-specific MAC context + * \param[in] key_slot The slot of the key to be used for the + * operation + * \param[in] algorithm The algorithm to be used to underly the MAC + * operation + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_mac_opaque_setup_t)(void *p_context, + psa_key_slot_t key_slot, + psa_algorithm_t algorithm); + +/** \brief A function that continues a previously started MAC operation using + * an opaque key + * + * \param[in,out] p_context A hardware-specific structure for the + * previously-established MAC operation to be + * continued + * \param[in] p_input A buffer containing the message to be appended + * to the MAC operation + * \param[in] input_length The size in bytes of the input message buffer + */ +typedef psa_status_t (*psa_drv_mac_opaque_update_t)(void *p_context, + const uint8_t *p_input, + size_t input_length); + +/** \brief a function that completes a previously started MAC operation by + * returning the resulting MAC using an opaque key + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started MAC operation to be + * finished + * \param[out] p_mac A buffer where the generated MAC will be + * placed + * \param[in] mac_size The size in bytes of the buffer that has been + * allocated for the `output` buffer + * \param[out] p_mac_length After completion, will contain the number of + * bytes placed in the `p_mac` buffer + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_mac_opaque_finish_t)(void *p_context, + uint8_t *p_mac, + size_t mac_size, + size_t *p_mac_length); + +/** \brief A function that completes a previously started MAC operation by + * comparing the resulting MAC against a known value using an opaque key + * + * \param[in,out] p_context A hardware-specific structure for the previously + * started MAC operation to be fiinished + * \param[in] p_mac The MAC value against which the resulting MAC will + * be compared against + * \param[in] mac_length The size in bytes of the value stored in `p_mac` + * + * \retval PSA_SUCCESS + * The operation completed successfully and the MACs matched each + * other + * \retval PSA_ERROR_INVALID_SIGNATURE + * The operation completed successfully, but the calculated MAC did + * not match the provided MAC + */ +typedef psa_status_t (*psa_drv_mac_opaque_finish_verify_t)(void *p_context, + const uint8_t *p_mac, + size_t mac_length); + +/** \brief A function that aborts a previous started opaque-key MAC operation + + * \param[in,out] p_context A hardware-specific structure for the previously + * started MAC operation to be aborted + */ +typedef psa_status_t (*psa_drv_mac_opaque_abort_t)(void *p_context); + +/** \brief A function that performs a MAC operation in one command and returns + * the calculated MAC using an opaque key + * + * \param[in] p_input A buffer containing the message to be MACed + * \param[in] input_length The size in bytes of `p_input` + * \param[in] key_slot The slot of the key to be used + * \param[in] alg The algorithm to be used to underlie the MAC + * operation + * \param[out] p_mac A buffer where the generated MAC will be + * placed + * \param[in] mac_size The size in bytes of the `p_mac` buffer + * \param[out] p_mac_length After completion, will contain the number of + * bytes placed in the `output` buffer + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_mac_opaque_generate_t)(const uint8_t *p_input, + size_t input_length, + psa_key_slot_t key_slot, + psa_algorithm_t alg, + uint8_t *p_mac, + size_t mac_size, + size_t *p_mac_length); + +/** \brief A function that performs an MAC operation in one command and + * compare the resulting MAC against a known value using an opaque key + * + * \param[in] p_input A buffer containing the message to be MACed + * \param[in] input_length The size in bytes of `input` + * \param[in] key_slot The slot of the key to be used + * \param[in] alg The algorithm to be used to underlie the MAC + * operation + * \param[in] p_mac The MAC value against which the resulting MAC will + * be compared against + * \param[in] mac_length The size in bytes of `mac` + * + * \retval PSA_SUCCESS + * The operation completed successfully and the MACs matched each + * other + * \retval PSA_ERROR_INVALID_SIGNATURE + * The operation completed successfully, but the calculated MAC did + * not match the provided MAC + */ +typedef psa_status_t (*psa_drv_mac_opaque_verify_t)(const uint8_t *p_input, + size_t input_length, + psa_key_slot_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_mac, + size_t mac_length); + +/** \brief A struct containing all of the function pointers needed to + * implement MAC operations using opaque keys. + * + * PSA Crypto API implementations should populate the table as appropriate + * upon startup. + * + * If one of the functions is not implemented (such as + * `psa_drv_mac_opaque_generate_t`), it should be set to NULL. + * + * Driver implementers should ensure that they implement all of the functions + * that make sense for their hardware, and that they provide a full solution + * (for example, if they support `p_setup`, they should also support + * `p_update` and at least one of `p_finish` or `p_finish_verify`). + * + */ +typedef struct { + /**The size in bytes of the hardware-specific Opaque-MAC Context structure + */ + size_t context_size; + /** Function that performs the setup operation + */ + psa_drv_mac_opaque_setup_t *p_setup; + /** Function that performs the update operation + */ + psa_drv_mac_opaque_update_t *p_update; + /** Function that completes the operation + */ + psa_drv_mac_opaque_finish_t *p_finish; + /** Function that completed a MAC operation with a verify check + */ + psa_drv_mac_opaque_finish_verify_t *p_finish_verify; + /** Function that aborts a previoustly started operation + */ + psa_drv_mac_opaque_abort_t *p_abort; + /** Function that performs the MAC operation in one call + */ + psa_drv_mac_opaque_generate_t *p_mac; + /** Function that performs the MAC and verify operation in one call + */ + psa_drv_mac_opaque_verify_t *p_mac_verify; +} psa_drv_mac_opaque_t; +/**@}*/ + +/** \defgroup opaque_cipher Opaque Symmetric Ciphers + * + * Encryption and Decryption using opaque keys in block modes other than ECB + * must be done in multiple parts, using the following flow: + * - `psa_drv_cipher_opaque_setup_t` + * - `psa_drv_cipher_opaque_set_iv_t` (optional depending upon block mode) + * - `psa_drv_cipher_opaque_update_t` + * - ... + * - `psa_drv_cipher_opaque_finish_t` + + * If a previously started Opaque Cipher operation needs to be terminated, it + * should be done so by the `psa_drv_cipher_opaque_abort_t`. Failure to do so may + * result in allocated resources not being freed or in other undefined + * behavior. + * + * In situations where a PSA Cryptographic API implementation is using a block + * mode not-supported by the underlying hardware or driver, it can construct + * the block mode itself, while calling the `psa_drv_cipher_opaque_ecb_t` function + * pointer for the cipher operations. + */ +/**@{*/ + +/** \brief A function pointer that provides the cipher setup function for + * opaque-key operations + * + * \param[in,out] p_context A structure that will contain the + * hardware-specific cipher context. + * \param[in] key_slot The slot of the key to be used for the + * operation + * \param[in] algorithm The algorithm to be used in the cipher + * operation + * \param[in] direction Indicates whether the operation is an encrypt + * or decrypt + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_NOT_SUPPORTED + */ +typedef psa_status_t (*psa_drv_cipher_opaque_setup_t)(void *p_context, + psa_key_slot_t key_slot, + psa_algorithm_t algorithm, + psa_encrypt_or_decrypt_t direction); + +/** \brief A function pointer that sets the initialization vector (if + * necessary) for an opaque cipher operation + * + * Rationale: The `psa_cipher_*` function in the PSA Cryptographic API has two + * IV functions: one to set the IV, and one to generate it internally. The + * generate function is not necessary for the drivers to implement as the PSA + * Crypto implementation can do the generation using its RNG features. + * + * \param[in,out] p_context A structure that contains the previously set up + * hardware-specific cipher context + * \param[in] p_iv A buffer containing the initialization vector + * \param[in] iv_length The size (in bytes) of the `p_iv` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_cipher_opaque_set_iv_t)(void *p_context, + const uint8_t *p_iv, + size_t iv_length); + +/** \brief A function that continues a previously started opaque-key cipher + * operation + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + * \param[in] p_input A buffer containing the data to be + * encrypted/decrypted + * \param[in] input_size The size in bytes of the buffer pointed to + * by `p_input` + * \param[out] p_output The caller-allocated buffer where the + * output will be placed + * \param[in] output_size The allocated size in bytes of the + * `p_output` buffer + * \param[out] p_output_length After completion, will contain the number + * of bytes placed in the `p_output` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_cipher_opaque_update_t)(void *p_context, + const uint8_t *p_input, + size_t input_size, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief A function that completes a previously started opaque-key cipher + * operation + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + * \param[out] p_output The caller-allocated buffer where the output + * will be placed + * \param[in] output_size The allocated size in bytes of the `p_output` + * buffer + * \param[out] p_output_length After completion, will contain the number of + * bytes placed in the `p_output` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_cipher_opaque_finish_t)(void *p_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief A function that aborts a previously started opaque-key cipher + * operation + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + */ +typedef psa_status_t (*psa_drv_cipher_opaque_abort_t)(void *p_context); + +/** \brief A function that performs the ECB block mode for opaque-key cipher + * operations + * + * Note: this function should only be used with implementations that do not + * provide a needed higher-level operation. + * + * \param[in] key_slot The slot of the key to be used for the operation + * \param[in] algorithm The algorithm to be used in the cipher operation + * \param[in] direction Indicates whether the operation is an encrypt or + * decrypt + * \param[in] p_input A buffer containing the data to be + * encrypted/decrypted + * \param[in] input_size The size in bytes of the buffer pointed to by + * `p_input` + * \param[out] p_output The caller-allocated buffer where the output will + * be placed + * \param[in] output_size The allocated size in bytes of the `p_output` + * buffer + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_NOT_SUPPORTED + */ +typedef psa_status_t (*psa_drv_cipher_opaque_ecb_t)(psa_key_slot_t key_slot, + psa_algorithm_t algorithm, + psa_encrypt_or_decrypt_t direction, + const uint8_t *p_input, + size_t input_size, + uint8_t *p_output, + size_t output_size); + +/** + * \brief A struct containing all of the function pointers needed to implement + * cipher operations using opaque keys. + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented (such as + * `psa_drv_cipher_opaque_ecb_t`), it should be set to NULL. + */ +typedef struct { + /** The size in bytes of the hardware-specific Opaque Cipher context + * structure + */ + size_t size; + /** Function that performs the setup operation */ + psa_drv_cipher_opaque_setup_t *p_setup; + /** Function that sets the IV (if necessary) */ + psa_drv_cipher_opaque_set_iv_t *p_set_iv; + /** Function that performs the update operation */ + psa_drv_cipher_opaque_update_t *p_update; + /** Function that completes the operation */ + psa_drv_cipher_opaque_finish_t *p_finish; + /** Function that aborts the operation */ + psa_drv_cipher_opaque_abort_t *p_abort; + /** Function that performs ECB mode for the cipher + * (Danger: ECB mode should not be used directly by clients of the PSA + * Crypto Client API) + */ + psa_drv_cipher_opaque_ecb_t *p_ecb; +} psa_drv_cipher_opaque_t; + +/**@}*/ + +/** \defgroup opaque_asymmetric Opaque Asymmetric Cryptography + * + * Since the amount of data that can (or should) be encrypted or signed using + * asymmetric keys is limited by the key size, asymmetric key operations using + * opaque keys must be done in single function calls. + */ +/**@{*/ + +/** + * \brief A function that signs a hash or short message with a private key + * + * \param[in] key_slot Key slot of an asymmetric key pair + * \param[in] alg A signature algorithm that is compatible + * with the type of `key` + * \param[in] p_hash The hash to sign + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[out] p_signature Buffer where the signature is to be written + * \param[in] signature_size Size of the `p_signature` buffer in bytes + * \param[out] p_signature_length On success, the number of bytes + * that make up the returned signature value + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_asymmetric_opaque_sign_t)(psa_key_slot_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_hash, + size_t hash_length, + uint8_t *p_signature, + size_t signature_size, + size_t *p_signature_length); + +/** + * \brief A function that verifies the signature a hash or short message using + * an asymmetric public key + * + * \param[in] key_slot Key slot of a public key or an asymmetric key + * pair + * \param[in] alg A signature algorithm that is compatible with + * the type of `key` + * \param[in] p_hash The hash whose signature is to be verified + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[in] p_signature Buffer containing the signature to verify + * \param[in] signature_length Size of the `p_signature` buffer in bytes + * + * \retval PSA_SUCCESS + * The signature is valid. + */ +typedef psa_status_t (*psa_drv_asymmetric_opaque_verify_t)(psa_key_slot_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_hash, + size_t hash_length, + const uint8_t *p_signature, + size_t signature_length); + +/** + * \brief A function that encrypts a short message with an asymmetric public + * key + * + * \param[in] key_slot Key slot of a public key or an asymmetric key + * pair + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to encrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL`. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0. + * \param[out] p_output Buffer where the encrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes that make up + * the returned output + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_asymmetric_opaque_encrypt_t)(psa_key_slot_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief Decrypt a short message with an asymmetric private key. + * + * \param[in] key_slot Key slot of an asymmetric key pair + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to decrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL`. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0. + * \param[out] p_output Buffer where the decrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes + * that make up the returned output + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_asymmetric_opaque_decrypt_t)(psa_key_slot_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief A struct containing all of the function pointers needed to implement + * asymmetric cryptographic operations using opaque keys. + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs the asymmetric sign operation */ + psa_drv_asymmetric_opaque_sign_t *p_sign; + /** Function that performs the asymmetric verify operation */ + psa_drv_asymmetric_opaque_verify_t *p_verify; + /** Function that performs the asymmetric encrypt operation */ + psa_drv_asymmetric_opaque_encrypt_t *p_encrypt; + /** Function that performs the asymmetric decrypt operation */ + psa_drv_asymmetric_opaque_decrypt_t *p_decrypt; +} psa_drv_asymmetric_opaque_t; + +/**@}*/ + +/** \defgroup aead_opaque AEAD Opaque + * Authenticated Encryption with Additional Data (AEAD) operations with opaque + * keys must be done in one function call. While this creates a burden for + * implementers as there must be sufficient space in memory for the entire + * message, it prevents decrypted data from being made available before the + * authentication operation is complete and the data is known to be authentic. + */ +/**@{*/ + +/** \brief Process an authenticated encryption operation using an opaque key + * + * \param[in] key_slot Slot containing the key to use. + * \param[in] algorithm The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] p_nonce Nonce or IV to use + * \param[in] nonce_length Size of the `p_nonce` buffer in bytes + * \param[in] p_additional_data Additional data that will be + * authenticated but not encrypted + * \param[in] additional_data_length Size of `p_additional_data` in bytes + * \param[in] p_plaintext Data that will be authenticated and + * encrypted + * \param[in] plaintext_length Size of `p_plaintext` in bytes + * \param[out] p_ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is + * not part of this output. For algorithms + * where the encrypted data and the + * authentication tag are defined as + * separate outputs, the authentication + * tag is appended to the encrypted data. + * \param[in] ciphertext_size Size of the `p_ciphertext` buffer in + * bytes + * \param[out] p_ciphertext_length On success, the size of the output in + * the `p_ciphertext` buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_aead_opaque_encrypt_t)(psa_key_slot_t key_slot, + psa_algorithm_t algorithm, + const uint8_t *p_nonce, + size_t nonce_length, + const uint8_t *p_additional_data, + size_t additional_data_length, + const uint8_t *p_plaintext, + size_t plaintext_length, + uint8_t *p_ciphertext, + size_t ciphertext_size, + size_t *p_ciphertext_length); + +/** Process an authenticated decryption operation using an opaque key + * + * \param[in] key_slot Slot containing the key to use + * \param[in] algorithm The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] p_nonce Nonce or IV to use + * \param[in] nonce_length Size of the `p_nonce` buffer in bytes + * \param[in] p_additional_data Additional data that has been + * authenticated but not encrypted + * \param[in] additional_data_length Size of `p_additional_data` in bytes + * \param[in] p_ciphertext Data that has been authenticated and + * encrypted. + * For algorithms where the encrypted data + * and the authentication tag are defined + * as separate inputs, the buffer must + * contain the encrypted data followed by + * the authentication tag. + * \param[in] ciphertext_length Size of `p_ciphertext` in bytes + * \param[out] p_plaintext Output buffer for the decrypted data + * \param[in] plaintext_size Size of the `p_plaintext` buffer in + * bytes + * \param[out] p_plaintext_length On success, the size of the output in + * the `p_plaintext` buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_aead_opaque_decrypt_t)(psa_key_slot_t key_slot, + psa_algorithm_t algorithm, + const uint8_t *p_nonce, + size_t nonce_length, + const uint8_t *p_additional_data, + size_t additional_data_length, + const uint8_t *p_ciphertext, + size_t ciphertext_length, + uint8_t *p_plaintext, + size_t plaintext_size, + size_t *p_plaintext_length); + +/** + * \brief A struct containing all of the function pointers needed to implement + * Authenticated Encryption with Additional Data operations using opaque keys + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs the AEAD encrypt operation */ + psa_drv_aead_opaque_encrypt_t *p_encrypt; + /** Function that performs the AEAD decrypt operation */ + psa_drv_aead_opaque_decrypt_t *p_decrypt; +} psa_drv_aead_opaque_t; +/**@}*/ + +/** \defgroup driver_key_management Key Management + * Currently, key management is limited to importing keys in the clear, + * destroying keys, and exporting keys in the clear. + * Whether a key may be exported is determined by the key policies in place + * on the key slot. + */ +/**@{*/ + +/** \brief Import a key in binary format + * + * This function can support any output from psa_export_key(). Refer to the + * documentation of psa_export_key() for the format for each key type. + * + * \param[in] key_slot Slot where the key will be stored + * This must be a valid slot for a key of the chosen + * type. It must be unoccupied. + * \param[in] type Key type (a \c PSA_KEY_TYPE_XXX value) + * \param[in] algorithm Key algorithm (a \c PSA_ALG_XXX value) + * \param[in] usage The allowed uses of the key + * \param[in] p_data Buffer containing the key data + * \param[in] data_length Size of the `data` buffer in bytes + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_opaque_import_key_t)(psa_key_slot_t key_slot, + psa_key_type_t type, + psa_algorithm_t algorithm, + psa_key_usage_t usage, + const uint8_t *p_data, + size_t data_length); + +/** + * \brief Destroy a key and restore the slot to its default state + * + * This function destroys the content of the key slot from both volatile + * memory and, if applicable, non-volatile storage. Implementations shall + * make a best effort to ensure that any previous content of the slot is + * unrecoverable. + * + * This function also erases any metadata such as policies. It returns the + * specified slot to its default state. + * + * \param[in] key_slot The key slot to erase. + * + * \retval #PSA_SUCCESS + * The slot's content, if any, has been erased. + */ +typedef psa_status_t (*psa_drv_destroy_key_t)(psa_key_slot_t key); + +/** + * \brief Export a key in binary format + * + * The output of this function can be passed to psa_import_key() to + * create an equivalent object. + * + * If a key is created with `psa_import_key()` and then exported with + * this function, it is not guaranteed that the resulting data is + * identical: the implementation may choose a different representation + * of the same key if the format permits it. + * + * For standard key types, the output format is as follows: + * + * - For symmetric keys (including MAC keys), the format is the + * raw bytes of the key. + * - For DES, the key data consists of 8 bytes. The parity bits must be + * correct. + * - For Triple-DES, the format is the concatenation of the + * two or three DES keys. + * - For RSA key pairs (#PSA_KEY_TYPE_RSA_KEYPAIR), the format + * is the non-encrypted DER representation defined by PKCS\#1 (RFC 8017) + * as RSAPrivateKey. + * - For RSA public keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY), the format + * is the DER representation defined by RFC 5280 as SubjectPublicKeyInfo. + * + * \param[in] key Slot whose content is to be exported. This must + * be an occupied key slot. + * \param[out] p_data Buffer where the key data is to be written. + * \param[in] data_size Size of the `p_data` buffer in bytes. + * \param[out] p_data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +typedef psa_status_t (*psa_drv_export_key_t)(psa_key_slot_t key, + uint8_t *p_data, + size_t data_size, + size_t *p_data_length); + +/** + * \brief Export a public key or the public part of a key pair in binary format + * + * The output of this function can be passed to psa_import_key() to + * create an object that is equivalent to the public key. + * + * For standard key types, the output format is as follows: + * + * - For RSA keys (#PSA_KEY_TYPE_RSA_KEYPAIR or #PSA_KEY_TYPE_RSA_PUBLIC_KEY), + * the format is the DER representation of the public key defined by RFC 5280 + * as SubjectPublicKeyInfo. + * + * \param[in] key_slot Slot whose content is to be exported. This must + * be an occupied key slot. + * \param[out] p_data Buffer where the key data is to be written. + * \param[in] data_size Size of the `data` buffer in bytes. + * \param[out] p_data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_export_public_key_t)(psa_key_slot_t key, + uint8_t *p_data, + size_t data_size, + size_t *p_data_length); + +/** + * \brief A struct containing all of the function pointers needed to for key + * management using opaque keys + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs the key import operation */ + psa_drv_opaque_import_key_t *p_import; + /** Function that performs the key destroy operation */ + psa_drv_destroy_key_t *p_destroy; + /** Function that performs the key export operation */ + psa_drv_export_key_t *p_export; + /** Function that perforsm the public key export operation */ + psa_drv_export_public_key_t *p_export_public; +} psa_drv_key_management_t; + +/**@}*/ + +/** \defgroup driver_derivation Key Derivation and Agreement + * Key derivation is the process of generating new key material using an + * existing key and additional parameters, iterating through a basic + * cryptographic function, such as a hash. + * Key agreement is a part of cryptographic protocols that allows two parties + * to agree on the same key value, but starting from different original key + * material. + * The flows are similar, and the PSA Crypto Driver Model uses the same functions + * for both of the flows. + * + * There are two different final functions for the flows, + * `psa_drv_key_derivation_derive` and `psa_drv_key_derivation_export`. + * `psa_drv_key_derivation_derive` is used when the key material should be placed + * in a slot on the hardware and not exposed to the caller. + * `psa_drv_key_derivation_export` is used when the key material should be returned + * to the PSA Cryptographic API implementation. + * + * Different key derivation algorithms require a different number of inputs. + * Instead of having an API that takes as input variable length arrays, which + * can be problemmatic to manage on embedded platforms, the inputs are passed + * to the driver via a function, `psa_drv_key_derivation_collateral`, that is + * called multiple times with different `collateral_id`s. Thus, for a key + * derivation algorithm that required 3 paramter inputs, the flow would look + * something like: + * ~~~~~~~~~~~~~{.c} + * psa_drv_key_derivation_setup(kdf_algorithm, source_key, dest_key_size_bytes); + * psa_drv_key_derivation_collateral(kdf_algorithm_collateral_id_0, + * p_collateral_0, + * collateral_0_size); + * psa_drv_key_derivation_collateral(kdf_algorithm_collateral_id_1, + * p_collateral_1, + * collateral_1_size); + * psa_drv_key_derivation_collateral(kdf_algorithm_collateral_id_2, + * p_collateral_2, + * collateral_2_size); + * psa_drv_key_derivation_derive(); + * ~~~~~~~~~~~~~ + * + * key agreement example: + * ~~~~~~~~~~~~~{.c} + * psa_drv_key_derivation_setup(alg, source_key. dest_key_size_bytes); + * psa_drv_key_derivation_collateral(DHE_PUBKEY, p_pubkey, pubkey_size); + * psa_drv_key_derivation_export(p_session_key, + * session_key_size, + * &session_key_length); + * ~~~~~~~~~~~~~ + */ +/**@{*/ + +/** \brief The hardware-specific key derivation context structure + * + * The contents of this structure are implementation dependent and are + * therefore not described here + */ +typedef struct psa_drv_key_derivation_context_s psa_drv_key_derivation_context_t; + +/** \brief Set up a key derivation operation by specifying the algorithm and + * the source key sot + * + * \param[in,out] p_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] kdf_alg The algorithm to be used for the key derivation + * \param[in] souce_key The key to be used as the source material for the + * key derivation + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_key_derivation_setup_t)(psa_drv_key_derivation_context_t *p_context, + psa_algorithm_t kdf_alg, + psa_key_slot_t source_key); + +/** \brief Provide collateral (parameters) needed for a key derivation or key + * agreement operation + * + * Since many key derivation algorithms require multiple parameters, it is + * expeced that this function may be called multiple times for the same + * operation, each with a different algorithm-specific `collateral_id` + * + * \param[in,out] p_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] collateral_id An ID for the collateral being provided + * \param[in] p_collateral A buffer containing the collateral data + * \param[in] collateral_size The size in bytes of the collateral + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_key_derivation_collateral_t)(psa_drv_key_derivation_context_t *p_context, + uint32_t collateral_id, + const uint8_t *p_collateral, + size_t collateral_size); + +/** \brief Perform the final key derivation step and place the generated key + * material in a slot + * \param[in,out] p_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] dest_key The slot where the generated key material + * should be placed + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_key_derivation_derive_t)(psa_drv_key_derivation_context_t *p_context, + psa_key_slot_t dest_key); + +/** \brief Perform the final step of a key agreement and place the generated + * key material in a buffer + * + * \param[out] p_output Buffer in which to place the generated key + * material + * \param[in] output_size The size in bytes of `p_output` + * \param[out] p_output_length Upon success, contains the number of bytes of + * key material placed in `p_output` + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_key_derivation_export_t)(uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief A struct containing all of the function pointers needed to for key + * derivation and agreement + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs the key derivation setup */ + psa_drv_key_derivation_setup_t *p_setup; + /** Function that sets the key derivation collateral */ + psa_drv_key_derivation_collateral_t *p_collateral; + /** Function that performs the final key derivation step */ + psa_drv_key_derivation_derive_t *p_derive; + /** Function that perforsm the final key derivation or agreement and + * exports the key */ + psa_drv_key_derivation_export_t *p_export; +} psa_drv_key_derivation_t; + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_SE_DRIVER_H */ diff --git a/features/mbedtls/inc/psa/crypto_sizes.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_sizes.h similarity index 84% rename from features/mbedtls/inc/psa/crypto_sizes.h rename to features/mbedtls/mbed-crypto/inc/psa/crypto_sizes.h index 7e179567367..34664fc10c6 100644 --- a/features/mbedtls/inc/psa/crypto_sizes.h +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_sizes.h @@ -50,6 +50,42 @@ #include MBEDTLS_CONFIG_FILE #endif +#define PSA_BITS_TO_BYTES(bits) (((bits) + 7) / 8) +#define PSA_BYTES_TO_BITS(bytes) ((bytes) * 8) + +/** The size of the output of psa_hash_finish(), in bytes. + * + * This is also the hash size that psa_hash_verify() expects. + * + * \param alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p alg) is true), or an HMAC algorithm + * (#PSA_ALG_HMAC(\c hash_alg) where \c hash_alg is a + * hash algorithm). + * + * \return The hash size for the specified hash algorithm. + * If the hash algorithm is not recognized, return 0. + * An implementation may return either 0 or the correct size + * for a hash algorithm that it recognizes, but does not support. + */ +#define PSA_HASH_SIZE(alg) \ + ( \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \ + 0) + /** \def PSA_HASH_MAX_SIZE * * Maximum size of a hash. @@ -84,6 +120,26 @@ */ #define PSA_MAC_MAX_SIZE PSA_HASH_MAX_SIZE +/** The tag size for an AEAD algorithm, in bytes. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The tag size for the specified algorithm. + * If the AEAD algorithm does not have an identified + * tag that can be distinguished from the rest of + * the ciphertext, return 0. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_TAG_LENGTH(alg) \ + (PSA_ALG_IS_AEAD(alg) ? \ + (((alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> PSA_AEAD_TAG_LENGTH_OFFSET) : \ + 0) + /* The maximum size of an RSA key on this implementation, in bits. * This is a vendor-specific macro. * @@ -236,6 +292,22 @@ (plaintext_length) - PSA_AEAD_TAG_LENGTH(alg) : \ 0) +#define PSA_RSA_MINIMUM_PADDING_SIZE(alg) \ + (PSA_ALG_IS_RSA_OAEP(alg) ? \ + 2 * PSA_HASH_SIZE(PSA_ALG_RSA_OAEP_GET_HASH(alg)) + 1 : \ + 11 /*PKCS#1v1.5*/) + +/** + * \brief ECDSA signature size for a given curve bit size + * + * \param curve_bits Curve size in bits. + * \return Signature size in bytes. + * + * \note This macro returns a compile-time constant if its argument is one. + */ +#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \ + (PSA_BITS_TO_BYTES(curve_bits) * 2) + /** Safe signature buffer size for psa_asymmetric_sign(). * * This macro returns a safe buffer size for a signature using a key @@ -345,25 +417,16 @@ /* Maximum size of the export encoding of an RSA public key. * Assumes that the public exponent is less than 2^32. * - * SubjectPublicKeyInfo ::= SEQUENCE { - * algorithm AlgorithmIdentifier, - * subjectPublicKey BIT STRING } -- contains RSAPublicKey - * AlgorithmIdentifier ::= SEQUENCE { - * algorithm OBJECT IDENTIFIER, - * parameters NULL } * RSAPublicKey ::= SEQUENCE { * modulus INTEGER, -- n * publicExponent INTEGER } -- e * - * - 3 * 4 bytes of SEQUENCE overhead; - * - 1 + 1 + 9 bytes of algorithm (RSA OID); - * - 2 bytes of NULL; - * - 4 bytes of BIT STRING overhead; + * - 4 bytes of SEQUENCE overhead; * - n : INTEGER; * - 7 bytes for the public exponent. */ #define PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ - (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) + 36) + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) + 11) /* Maximum size of the export encoding of an RSA key pair. * Assumes thatthe public exponent is less than 2^32 and that the size @@ -430,26 +493,16 @@ /* Maximum size of the export encoding of an ECC public key. * - * SubjectPublicKeyInfo ::= SEQUENCE { - * algorithm AlgorithmIdentifier, - * subjectPublicKey BIT STRING } -- contains ECPoint - * AlgorithmIdentifier ::= SEQUENCE { - * algorithm OBJECT IDENTIFIER, - * parameters OBJECT IDENTIFIER } -- namedCurve - * ECPoint ::= ... - * -- first 8 bits: 0x04; - * -- then x_P as a `ceiling(m/8)`-byte string, big endian; - * -- then y_P as a `ceiling(m/8)`-byte string, big endian; - * -- where `m` is the bit size associated with the curve. - * - * - 2 * 4 bytes of SEQUENCE overhead; - * - 1 + 1 + 7 bytes of algorithm (id-ecPublicKey OID); - * - 1 + 1 + 12 bytes of namedCurve OID; - * - 4 bytes of BIT STRING overhead; - * - 1 byte + 2 * point size in ECPoint. + * The representation of an ECC public key is: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian; + * - where m is the bit size associated with the curve. + * + * - 1 byte + 2 * point size. */ #define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) \ - (2 * PSA_BITS_TO_BYTES(key_bits) + 36) + (2 * PSA_BITS_TO_BYTES(key_bits) + 1) /* Maximum size of the export encoding of an ECC key pair. * diff --git a/features/mbedtls/mbed-crypto/inc/psa/crypto_types.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_types.h new file mode 100644 index 00000000000..923b94ad4be --- /dev/null +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_types.h @@ -0,0 +1,113 @@ +/** + * \file psa/crypto_types.h + * + * \brief PSA cryptography module: type aliases. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. Drivers must include the appropriate driver + * header file. + * + * This file contains portable definitions of integral types for properties + * of cryptographic keys, designations of cryptographic algorithms, and + * error codes returned by the library. + * + * This header file does not declare any function. + */ +/* + * 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_TYPES_H +#define PSA_CRYPTO_TYPES_H + +#include + +/** \defgroup error Error codes + * @{ + */ + +/** + * \brief Function return status. + * + * This is either #PSA_SUCCESS (which is zero), indicating success, + * or a nonzero value indicating that an error occurred. Errors are + * encoded as one of the \c PSA_ERROR_xxx values defined here. + * If #PSA_SUCCESS is already defined, it means that #psa_status_t + * is also defined in an external header, so prevent its multiple + * definition. + */ +#ifndef PSA_SUCCESS +typedef int32_t psa_status_t; +#endif + +/**@}*/ + +/** \defgroup crypto_types Key and algorithm types + * @{ + */ + +/** \brief Encoding of a key type. + */ +typedef uint32_t psa_key_type_t; + +/** The type of PSA elliptic curve identifiers. */ +typedef uint16_t psa_ecc_curve_t; + +/** \brief Encoding of a cryptographic algorithm. + * + * For algorithms that can be applied to multiple key types, this type + * does not encode the key type. For example, for symmetric ciphers + * based on a block cipher, #psa_algorithm_t encodes the block cipher + * mode and the padding mode while the block cipher itself is encoded + * via #psa_key_type_t. + */ +typedef uint32_t psa_algorithm_t; + +/**@}*/ + +/** \defgroup key_lifetimes Key lifetimes + * @{ + */ + +/** Encoding of key lifetimes. + */ +typedef uint32_t psa_key_lifetime_t; + +/** Encoding of identifiers of persistent keys. + */ +/* Implementation-specific quirk: The Mbed Crypto library can be built as + * part of a multi-client service that exposes the PSA Crypto API in each + * client and encodes the client identity in the key id argument of functions + * such as psa_open_key(). In this build configuration, we define + * psa_key_id_t in crypto_platform.h instead of here. */ +#if !defined(MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER) +typedef uint32_t psa_key_id_t; +#endif + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** \brief Encoding of permitted usage on a key. */ +typedef uint32_t psa_key_usage_t; + +/**@}*/ + +#endif /* PSA_CRYPTO_TYPES_H */ diff --git a/features/mbedtls/mbed-crypto/inc/psa/crypto_values.h b/features/mbedtls/mbed-crypto/inc/psa/crypto_values.h new file mode 100644 index 00000000000..d42d8c28a83 --- /dev/null +++ b/features/mbedtls/mbed-crypto/inc/psa/crypto_values.h @@ -0,0 +1,1489 @@ +/** + * \file psa/crypto_values.h + * + * \brief PSA cryptography module: macros to build and analyze integer values. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. Drivers must include the appropriate driver + * header file. + * + * This file contains portable definitions of macros to build and analyze + * values of integral types that encode properties of cryptographic keys, + * designations of cryptographic algorithms, and error codes returned by + * the library. + * + * This header file only defines preprocessor macros. + */ +/* + * 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_VALUES_H +#define PSA_CRYPTO_VALUES_H + +/** \defgroup error Error codes + * @{ + */ + +/* PSA error codes */ + +/** The action was completed successfully. */ +#define PSA_SUCCESS ((psa_status_t)0) + +/** An error occurred that does not correspond to any defined + * failure cause. + * + * Implementations may use this error code if none of the other standard + * error codes are applicable. */ +#define PSA_ERROR_GENERIC_ERROR ((psa_status_t)-132) + +/** The requested operation or a parameter is not supported + * by this implementation. + * + * Implementations should return this error code when an enumeration + * parameter such as a key type, algorithm, etc. is not recognized. + * If a combination of parameters is recognized and identified as + * not valid, return #PSA_ERROR_INVALID_ARGUMENT instead. */ +#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)-134) + +/** The requested action is denied by a policy. + * + * Implementations should return this error code when the parameters + * are recognized as valid and supported, and a policy explicitly + * denies the requested operation. + * + * If a subset of the parameters of a function call identify a + * forbidden operation, and another subset of the parameters are + * not valid or not supported, it is unspecified whether the function + * returns #PSA_ERROR_NOT_PERMITTED, #PSA_ERROR_NOT_SUPPORTED or + * #PSA_ERROR_INVALID_ARGUMENT. */ +#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)-133) + +/** An output buffer is too small. + * + * Applications can call the \c PSA_xxx_SIZE macro listed in the function + * description to determine a sufficient buffer size. + * + * Implementations should preferably return this error code only + * in cases when performing the operation with a larger output + * buffer would succeed. However implementations may return this + * error if a function has invalid or unsupported parameters in addition + * to the parameters that determine the necessary output buffer size. */ +#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)-138) + +/** Asking for an item that already exists + * + * Implementations should return this error, when attempting + * to write an item (like a key) that already exists. */ +#define PSA_ERROR_ALREADY_EXISTS ((psa_status_t)-139) + +/** Asking for an item that doesn't exist + * + * Implementations should return this error, if a requested item (like + * a key) does not exist. */ +#define PSA_ERROR_DOES_NOT_EXIST ((psa_status_t)-140) + +/** The requested action cannot be performed in the current state. + * + * Multipart operations return this error when one of the + * functions is called out of sequence. Refer to the function + * descriptions for permitted sequencing of functions. + * + * Implementations shall not return this error code to indicate + * that a key slot is occupied when it needs to be free or vice versa, + * but shall return #PSA_ERROR_ALREADY_EXISTS or #PSA_ERROR_DOES_NOT_EXIST + * as applicable. */ +#define PSA_ERROR_BAD_STATE ((psa_status_t)-137) + +/** The parameters passed to the function are invalid. + * + * Implementations may return this error any time a parameter or + * combination of parameters are recognized as invalid. + * + * Implementations shall not return this error code to indicate + * that a key slot is occupied when it needs to be free or vice versa, + * but shall return #PSA_ERROR_ALREADY_EXISTS or #PSA_ERROR_DOES_NOT_EXIST + * as applicable. + * + * Implementation shall not return this error code to indicate that a + * key handle is invalid, but shall return #PSA_ERROR_INVALID_HANDLE + * instead. + */ +#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)-135) + +/** There is not enough runtime memory. + * + * If the action is carried out across multiple security realms, this + * error can refer to available memory in any of the security realms. */ +#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)-141) + +/** There is not enough persistent storage. + * + * Functions that modify the key storage return this error code if + * there is insufficient storage space on the host media. In addition, + * many functions that do not otherwise access storage may return this + * error code if the implementation requires a mandatory log entry for + * the requested action and the log storage space is full. */ +#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)-142) + +/** There was a communication failure inside the implementation. + * + * This can indicate a communication failure between the application + * and an external cryptoprocessor or between the cryptoprocessor and + * an external volatile or persistent memory. A communication failure + * may be transient or permanent depending on the cause. + * + * \warning If a function returns this error, it is undetermined + * whether the requested action has completed or not. Implementations + * should return #PSA_SUCCESS on successful completion whenver + * possible, however functions may return #PSA_ERROR_COMMUNICATION_FAILURE + * if the requested action was completed successfully in an external + * cryptoprocessor but there was a breakdown of communication before + * the cryptoprocessor could report the status to the application. + */ +#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)-145) + +/** There was a storage failure that may have led to data loss. + * + * This error indicates that some persistent storage is corrupted. + * It should not be used for a corruption of volatile memory + * (use #PSA_ERROR_TAMPERING_DETECTED), for a communication error + * between the cryptoprocessor and its external storage (use + * #PSA_ERROR_COMMUNICATION_FAILURE), or when the storage is + * in a valid state but is full (use #PSA_ERROR_INSUFFICIENT_STORAGE). + * + * Note that a storage failure does not indicate that any data that was + * previously read is invalid. However this previously read data may no + * longer be readable from storage. + * + * When a storage failure occurs, it is no longer possible to ensure + * the global integrity of the keystore. Depending on the global + * integrity guarantees offered by the implementation, access to other + * data may or may not fail even if the data is still readable but + * its integrity canont be guaranteed. + * + * Implementations should only use this error code to report a + * permanent storage corruption. However application writers should + * keep in mind that transient errors while reading the storage may be + * reported using this error code. */ +#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)-146) + +/** A hardware failure was detected. + * + * A hardware failure may be transient or permanent depending on the + * cause. */ +#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)-147) + +/** A tampering attempt was detected. + * + * If an application receives this error code, there is no guarantee + * that previously accessed or computed data was correct and remains + * confidential. Applications should not perform any security function + * and should enter a safe failure state. + * + * Implementations may return this error code if they detect an invalid + * state that cannot happen during normal operation and that indicates + * that the implementation's security guarantees no longer hold. Depending + * on the implementation architecture and on its security and safety goals, + * the implementation may forcibly terminate the application. + * + * This error code is intended as a last resort when a security breach + * is detected and it is unsure whether the keystore data is still + * protected. Implementations shall only return this error code + * to report an alarm from a tampering detector, to indicate that + * the confidentiality of stored data can no longer be guaranteed, + * or to indicate that the integrity of previously returned data is now + * considered compromised. Implementations shall not use this error code + * to indicate a hardware failure that merely makes it impossible to + * perform the requested operation (use #PSA_ERROR_COMMUNICATION_FAILURE, + * #PSA_ERROR_STORAGE_FAILURE, #PSA_ERROR_HARDWARE_FAILURE, + * #PSA_ERROR_INSUFFICIENT_ENTROPY or other applicable error code + * instead). + * + * This error indicates an attack against the application. Implementations + * shall not return this error code as a consequence of the behavior of + * the application itself. */ +#define PSA_ERROR_TAMPERING_DETECTED ((psa_status_t)-151) + +/** There is not enough entropy to generate random data needed + * for the requested action. + * + * This error indicates a failure of a hardware random generator. + * Application writers should note that this error can be returned not + * only by functions whose purpose is to generate random data, such + * as key, IV or nonce generation, but also by functions that execute + * an algorithm with a randomized result, as well as functions that + * use randomization of intermediate computations as a countermeasure + * to certain attacks. + * + * Implementations should avoid returning this error after psa_crypto_init() + * has succeeded. Implementations should generate sufficient + * entropy during initialization and subsequently use a cryptographically + * secure pseudorandom generator (PRNG). However implementations may return + * this error at any time if a policy requires the PRNG to be reseeded + * during normal operation. */ +#define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)-148) + +/** The signature, MAC or hash is incorrect. + * + * Verification functions return this error if the verification + * calculations completed successfully, and the value to be verified + * was determined to be incorrect. + * + * If the value to verify has an invalid size, implementations may return + * either #PSA_ERROR_INVALID_ARGUMENT or #PSA_ERROR_INVALID_SIGNATURE. */ +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) + +/** The decrypted padding is incorrect. + * + * \warning In some protocols, when decrypting data, it is essential that + * the behavior of the application does not depend on whether the padding + * is correct, down to precise timing. Applications should prefer + * protocols that use authenticated encryption rather than plain + * encryption. If the application must perform a decryption of + * unauthenticated data, the application writer should take care not + * to reveal whether the padding is invalid. + * + * Implementations should strive to make valid and invalid padding + * as close as possible to indistinguishable to an external observer. + * In particular, the timing of a decryption operation should not + * depend on the validity of the padding. */ +#define PSA_ERROR_INVALID_PADDING ((psa_status_t)-150) + +/** Return this error when there's insufficient data when attempting + * to read from a resource. */ +#define PSA_ERROR_INSUFFICIENT_DATA ((psa_status_t)-143) + +/** The key handle is not valid. + */ +#define PSA_ERROR_INVALID_HANDLE ((psa_status_t)-136) + +/**@}*/ + +/** \defgroup crypto_types Key and algorithm types + * @{ + */ + +/** An invalid key type value. + * + * Zero is not the encoding of any key type. + */ +#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x00000000) + +/** Vendor-defined flag + * + * Key types defined by this standard will never have the + * #PSA_KEY_TYPE_VENDOR_FLAG bit set. Vendors who define additional key types + * must use an encoding with the #PSA_KEY_TYPE_VENDOR_FLAG bit set and should + * respect the bitwise structure used by standard encodings whenever practical. + */ +#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x80000000) + +#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x70000000) +#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x40000000) +#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x50000000) +#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x60000000) +#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x70000000) + +#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x10000000) + +/** Whether a key type is vendor-defined. */ +#define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \ + (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) + +/** Whether a key type is an unstructured array of bytes. + * + * This encompasses both symmetric keys and non-key data. + */ +#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK & ~(psa_key_type_t)0x10000000) == \ + PSA_KEY_TYPE_CATEGORY_SYMMETRIC) + +/** Whether a key type is asymmetric: either a key pair or a public key. */ +#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK \ + & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \ + PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) +/** Whether a key type is the public part of a key pair. */ +#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) +/** Whether a key type is a key pair containing a private part and a public + * part. */ +#define PSA_KEY_TYPE_IS_KEYPAIR(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR) +/** The key pair type corresponding to a public key type. + * + * You may also pass a key pair type as \p type, it will be left unchanged. + * + * \param type A public key type or key pair type. + * + * \return The corresponding key pair type. + * If \p type is not a public key or a key pair, + * the return value is undefined. + */ +#define PSA_KEY_TYPE_KEYPAIR_OF_PUBLIC_KEY(type) \ + ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) +/** The public key type corresponding to a key pair type. + * + * You may also pass a key pair type as \p type, it will be left unchanged. + * + * \param type A public key type or key pair type. + * + * \return The corresponding public key type. + * If \p type is not a public key or a key pair, + * the return value is undefined. + */ +#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) \ + ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) + +/** Raw data. + * + * A "key" of this type cannot be used for any cryptographic operation. + * Applications may use this type to store arbitrary data in the keystore. */ +#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x50000001) + +/** HMAC key. + * + * The key policy determines which underlying hash algorithm the key can be + * used for. + * + * HMAC keys should generally have the same size as the underlying hash. + * This size can be calculated with #PSA_HASH_SIZE(\c alg) where + * \c alg is the HMAC algorithm or the underlying hash algorithm. */ +#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x51000000) + +/** A secret for key derivation. + * + * The key policy determines which key derivation algorithm the key + * can be used for. + */ +#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x52000000) + +/** Key for an cipher, AEAD or MAC algorithm based on the AES block cipher. + * + * The size of the key can be 16 bytes (AES-128), 24 bytes (AES-192) or + * 32 bytes (AES-256). + */ +#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x40000001) + +/** Key for a cipher or MAC algorithm based on DES or 3DES (Triple-DES). + * + * The size of the key can be 8 bytes (single DES), 16 bytes (2-key 3DES) or + * 24 bytes (3-key 3DES). + * + * Note that single DES and 2-key 3DES are weak and strongly + * deprecated and should only be used to decrypt legacy data. 3-key 3DES + * is weak and deprecated and should only be used in legacy protocols. + */ +#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x40000002) + +/** Key for an cipher, AEAD or MAC algorithm based on the + * Camellia block cipher. */ +#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x40000003) + +/** Key for the RC4 stream cipher. + * + * Note that RC4 is weak and deprecated and should only be used in + * legacy protocols. */ +#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x40000004) + +/** RSA public key. */ +#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x60010000) +/** RSA key pair (private and public key). */ +#define PSA_KEY_TYPE_RSA_KEYPAIR ((psa_key_type_t)0x70010000) +/** Whether a key type is an RSA key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_RSA(type) \ + (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) + +/** DSA public key. */ +#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x60020000) +/** DSA key pair (private and public key). */ +#define PSA_KEY_TYPE_DSA_KEYPAIR ((psa_key_type_t)0x70020000) +/** Whether a key type is an DSA key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_DSA(type) \ + (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY) + +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x60030000) +#define PSA_KEY_TYPE_ECC_KEYPAIR_BASE ((psa_key_type_t)0x70030000) +#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x0000ffff) +/** Elliptic curve key pair. */ +#define PSA_KEY_TYPE_ECC_KEYPAIR(curve) \ + (PSA_KEY_TYPE_ECC_KEYPAIR_BASE | (curve)) +/** Elliptic curve public key. */ +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ + (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) + +/** Whether a key type is an elliptic curve key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_ECC(type) \ + ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) & \ + ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) +/** Whether a key type is an elliptic curve key pair. */ +#define PSA_KEY_TYPE_IS_ECC_KEYPAIR(type) \ + (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ + PSA_KEY_TYPE_ECC_KEYPAIR_BASE) +/** Whether a key type is an elliptic curve public key. */ +#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \ + (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ + PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) + +/** Extract the curve from an elliptic curve key type. */ +#define PSA_KEY_TYPE_GET_CURVE(type) \ + ((psa_ecc_curve_t) (PSA_KEY_TYPE_IS_ECC(type) ? \ + ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \ + 0)) + +/* The encoding of curve identifiers is currently aligned with the + * TLS Supported Groups Registry (formerly known as the + * TLS EC Named Curve Registry) + * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + * The values are defined by RFC 8422 and RFC 7027. */ +#define PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x0001) +#define PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x0002) +#define PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x0003) +#define PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x0004) +#define PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x0005) +#define PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x0006) +#define PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x0007) +#define PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x0008) +#define PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x0009) +#define PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x000a) +#define PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x000b) +#define PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x000c) +#define PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x000d) +#define PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x000e) +#define PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x000f) +#define PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x0010) +#define PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x0011) +#define PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x0012) +#define PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x0013) +#define PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x0014) +#define PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x0015) +#define PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x0016) +#define PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x0017) +#define PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x0018) +#define PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x0019) +#define PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x001a) +#define PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x001b) +#define PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x001c) +#define PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x001d) +#define PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x001e) + +/** The block size of a block cipher. + * + * \param type A cipher key type (value of type #psa_key_type_t). + * + * \return The block size for a block cipher, or 1 for a stream cipher. + * The return value is undefined if \p type is not a supported + * cipher key type. + * + * \note It is possible to build stream cipher algorithms on top of a block + * cipher, for example CTR mode (#PSA_ALG_CTR). + * This macro only takes the key type into account, so it cannot be + * used to determine the size of the data that #psa_cipher_update() + * might buffer for future processing in general. + * + * \note This macro returns a compile-time constant if its argument is one. + * + * \warning This macro may evaluate its argument multiple times. + */ +#define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \ + ( \ + (type) == PSA_KEY_TYPE_AES ? 16 : \ + (type) == PSA_KEY_TYPE_DES ? 8 : \ + (type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \ + (type) == PSA_KEY_TYPE_ARC4 ? 1 : \ + 0) + +#define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000) +#define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000) +#define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x01000000) +#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x02000000) +#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000) +#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x06000000) +#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x10000000) +#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x12000000) +#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x22000000) +#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x30000000) +#define PSA_ALG_CATEGORY_KEY_SELECTION ((psa_algorithm_t)0x31000000) + +#define PSA_ALG_IS_VENDOR_DEFINED(alg) \ + (((alg) & PSA_ALG_VENDOR_FLAG) != 0) + +/** Whether the specified algorithm is a hash algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a hash algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HASH(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH) + +/** Whether the specified algorithm is a MAC algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a MAC algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_MAC(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC) + +/** Whether the specified algorithm is a symmetric cipher algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a symmetric cipher algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_CIPHER(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER) + +/** Whether the specified algorithm is an authenticated encryption + * with associated data (AEAD) algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an AEAD algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_AEAD(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD) + +/** Whether the specified algorithm is a public-key signature algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a public-key signature algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_SIGN(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN) + +/** Whether the specified algorithm is a public-key encryption algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a public-key encryption algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION) + +#define PSA_ALG_KEY_SELECTION_FLAG ((psa_algorithm_t)0x01000000) +/** Whether the specified algorithm is a key agreement algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key agreement algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_AGREEMENT(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK & ~PSA_ALG_KEY_SELECTION_FLAG) == \ + PSA_ALG_CATEGORY_KEY_AGREEMENT) + +/** Whether the specified algorithm is a key derivation algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key derivation algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_DERIVATION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) + +/** Whether the specified algorithm is a key selection algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key selection algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_SELECTION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_SELECTION) + +#define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff) + +#define PSA_ALG_MD2 ((psa_algorithm_t)0x01000001) +#define PSA_ALG_MD4 ((psa_algorithm_t)0x01000002) +#define PSA_ALG_MD5 ((psa_algorithm_t)0x01000003) +#define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x01000004) +#define PSA_ALG_SHA_1 ((psa_algorithm_t)0x01000005) +/** SHA2-224 */ +#define PSA_ALG_SHA_224 ((psa_algorithm_t)0x01000008) +/** SHA2-256 */ +#define PSA_ALG_SHA_256 ((psa_algorithm_t)0x01000009) +/** SHA2-384 */ +#define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0100000a) +/** SHA2-512 */ +#define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0100000b) +/** SHA2-512/224 */ +#define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0100000c) +/** SHA2-512/256 */ +#define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0100000d) +/** SHA3-224 */ +#define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x01000010) +/** SHA3-256 */ +#define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x01000011) +/** SHA3-384 */ +#define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x01000012) +/** SHA3-512 */ +#define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x01000013) + +/** In a hash-and-sign algorithm policy, allow any hash algorithm. + * + * This value may be used to form the algorithm usage field of a policy + * for a signature algorithm that is parametrized by a hash. The key + * may then be used to perform operations using the same signature + * algorithm parametrized with any supported hash. + * + * That is, suppose that `PSA_xxx_SIGNATURE` is one of the following macros: + * - #PSA_ALG_RSA_PKCS1V15_SIGN, #PSA_ALG_RSA_PSS, + * - #PSA_ALG_DSA, #PSA_ALG_DETERMINISTIC_DSA, + * - #PSA_ALG_ECDSA, #PSA_ALG_DETERMINISTIC_ECDSA. + * Then you may create and use a key as follows: + * - Set the key usage field using #PSA_ALG_ANY_HASH, for example: + * ``` + * psa_key_policy_set_usage(&policy, + * PSA_KEY_USAGE_SIGN, //or PSA_KEY_USAGE_VERIFY + * PSA_xxx_SIGNATURE(PSA_ALG_ANY_HASH)); + * psa_set_key_policy(handle, &policy); + * ``` + * - Import or generate key material. + * - Call psa_asymmetric_sign() or psa_asymmetric_verify(), passing + * an algorithm built from `PSA_xxx_SIGNATURE` and a specific hash. Each + * call to sign or verify a message may use a different hash. + * ``` + * psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_256), ...); + * psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_512), ...); + * psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA3_256), ...); + * ``` + * + * This value may not be used to build other algorithms that are + * parametrized over a hash. For any valid use of this macro to build + * an algorithm `\p alg`, #PSA_ALG_IS_HASH_AND_SIGN(\p alg) is true. + * + * This value may not be used to build an algorithm specification to + * perform an operation. It is only valid to build policies. + */ +#define PSA_ALG_ANY_HASH ((psa_algorithm_t)0x010000ff) + +#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000) +#define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x02800000) +/** Macro to build an HMAC algorithm. + * + * For example, #PSA_ALG_HMAC(#PSA_ALG_SHA_256) is HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding HMAC algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_HMAC(hash_alg) \ + (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_HMAC_GET_HASH(hmac_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is an HMAC algorithm. + * + * HMAC is a family of MAC algorithms that are based on a hash function. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an HMAC algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HMAC(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ + PSA_ALG_HMAC_BASE) + +/* In the encoding of a MAC algorithm, the bits corresponding to + * PSA_ALG_MAC_TRUNCATION_MASK encode the length to which the MAC is + * truncated. As an exception, the value 0 means the untruncated algorithm, + * whatever its length is. The length is encoded in 6 bits, so it can + * reach up to 63; the largest MAC is 64 bytes so its trivial truncation + * to full length is correctly encoded as 0 and any non-trivial truncation + * is correctly encoded as a value between 1 and 63. */ +#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x00003f00) +#define PSA_MAC_TRUNCATION_OFFSET 8 + +/** Macro to build a truncated MAC algorithm. + * + * A truncated MAC algorithm is identical to the corresponding MAC + * algorithm except that the MAC value for the truncated algorithm + * consists of only the first \p mac_length bytes of the MAC value + * for the untruncated algorithm. + * + * \note This macro may allow constructing algorithm identifiers that + * are not valid, either because the specified length is larger + * than the untruncated MAC or because the specified length is + * smaller than permitted by the implementation. + * + * \note It is implementation-defined whether a truncated MAC that + * is truncated to the same length as the MAC of the untruncated + * algorithm is considered identical to the untruncated algorithm + * for policy comparison purposes. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). This may be a truncated or untruncated + * MAC algorithm. + * \param mac_length Desired length of the truncated MAC in bytes. + * This must be at most the full length of the MAC + * and must be at least an implementation-specified + * minimum. The implementation-specified minimum + * shall not be zero. + * + * \return The corresponding MAC algorithm with the specified + * length. + * \return Unspecified if \p alg is not a supported + * MAC algorithm or if \p mac_length is too small or + * too large for the specified MAC algorithm. + */ +#define PSA_ALG_TRUNCATED_MAC(mac_alg, mac_length) \ + (((mac_alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) | \ + ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK)) + +/** Macro to build the base MAC algorithm corresponding to a truncated + * MAC algorithm. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). This may be a truncated or untruncated + * MAC algorithm. + * + * \return The corresponding base MAC algorithm. + * \return Unspecified if \p alg is not a supported + * MAC algorithm. + */ +#define PSA_ALG_FULL_LENGTH_MAC(mac_alg) \ + ((mac_alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) + +/** Length to which a MAC algorithm is truncated. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). + * + * \return Length of the truncated MAC in bytes. + * \return 0 if \p alg is a non-truncated MAC algorithm. + * \return Unspecified if \p alg is not a supported + * MAC algorithm. + */ +#define PSA_MAC_TRUNCATED_LENGTH(mac_alg) \ + (((mac_alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET) + +#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x02c00000) +#define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x02c00001) +#define PSA_ALG_CMAC ((psa_algorithm_t)0x02c00002) +#define PSA_ALG_GMAC ((psa_algorithm_t)0x02c00003) + +/** Whether the specified algorithm is a MAC algorithm based on a block cipher. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a MAC algorithm based on a block cipher, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ + PSA_ALG_CIPHER_MAC_BASE) + +#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000) +#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) + +/** Whether the specified algorithm is a stream cipher. + * + * A stream cipher is a symmetric cipher that encrypts or decrypts messages + * by applying a bitwise-xor with a stream of bytes that is generated + * from a key. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a stream cipher algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier or if it is not a symmetric cipher algorithm. + */ +#define PSA_ALG_IS_STREAM_CIPHER(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \ + (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG)) + +/** The ARC4 stream cipher algorithm. + */ +#define PSA_ALG_ARC4 ((psa_algorithm_t)0x04800001) + +/** The CTR stream cipher mode. + * + * CTR is a stream cipher which is built from a block cipher. + * The underlying block cipher is determined by the key type. + * For example, to use AES-128-CTR, use this algorithm with + * a key of type #PSA_KEY_TYPE_AES and a length of 128 bits (16 bytes). + */ +#define PSA_ALG_CTR ((psa_algorithm_t)0x04c00001) + +#define PSA_ALG_CFB ((psa_algorithm_t)0x04c00002) + +#define PSA_ALG_OFB ((psa_algorithm_t)0x04c00003) + +/** The XTS cipher mode. + * + * XTS is a cipher mode which is built from a block cipher. It requires at + * least one full block of input, but beyond this minimum the input + * does not need to be a whole number of blocks. + */ +#define PSA_ALG_XTS ((psa_algorithm_t)0x044000ff) + +/** The CBC block cipher chaining mode, with no padding. + * + * The underlying block cipher is determined by the key type. + * + * This symmetric cipher mode can only be used with messages whose lengths + * are whole number of blocks for the chosen block cipher. + */ +#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04600100) + +/** The CBC block cipher chaining mode with PKCS#7 padding. + * + * The underlying block cipher is determined by the key type. + * + * This is the padding method defined by PKCS#7 (RFC 2315) §10.3. + */ +#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04600101) + +#define PSA_ALG_CCM ((psa_algorithm_t)0x06001001) +#define PSA_ALG_GCM ((psa_algorithm_t)0x06001002) + +/* In the encoding of a AEAD algorithm, the bits corresponding to + * PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag. + * The constants for default lengths follow this encoding. + */ +#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x00003f00) +#define PSA_AEAD_TAG_LENGTH_OFFSET 8 + +/** Macro to build a shortened AEAD algorithm. + * + * A shortened AEAD algorithm is similar to the corresponding AEAD + * algorithm, but has an authentication tag that consists of fewer bytes. + * Depending on the algorithm, the tag length may affect the calculation + * of the ciphertext. + * + * \param aead_alg An AEAD algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_AEAD(\p alg) + * is true). + * \param tag_length Desired length of the authentication tag in bytes. + * + * \return The corresponding AEAD algorithm with the specified + * length. + * \return Unspecified if \p alg is not a supported + * AEAD algorithm or if \p tag_length is not valid + * for the specified AEAD algorithm. + */ +#define PSA_ALG_AEAD_WITH_TAG_LENGTH(aead_alg, tag_length) \ + (((aead_alg) & ~PSA_ALG_AEAD_TAG_LENGTH_MASK) | \ + ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \ + PSA_ALG_AEAD_TAG_LENGTH_MASK)) + +/** Calculate the corresponding AEAD algorithm with the default tag length. + * + * \param aead_alg An AEAD algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The corresponding AEAD algorithm with the default + * tag length for that algorithm. + */ +#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH(aead_alg) \ + ( \ + PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(aead_alg, PSA_ALG_CCM) \ + PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(aead_alg, PSA_ALG_GCM) \ + 0) +#define PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(aead_alg, ref) \ + PSA_ALG_AEAD_WITH_TAG_LENGTH(aead_alg, 0) == \ + PSA_ALG_AEAD_WITH_TAG_LENGTH(ref, 0) ? \ + ref : + +#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x10020000) +/** RSA PKCS#1 v1.5 signature with hashing. + * + * This is the signature scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSASSA-PKCS1-v1_5. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PKCS#1 v1.5 signature algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \ + (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** Raw PKCS#1 v1.5 signature. + * + * The input to this algorithm is the DigestInfo structure used by + * RFC 8017 (PKCS#1: RSA Cryptography Specifications), §9.2 + * steps 3–6. + */ +#define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE +#define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE) + +#define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x10030000) +/** RSA PSS signature with hashing. + * + * This is the signature scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSASSA-PSS, with the message generation function MGF1, and with + * a salt length equal to the length of the hash. The specified + * hash algorithm is used to hash the input message, to create the + * salted hash, and for the mask generation. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PSS signature algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PSS(hash_alg) \ + (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_RSA_PSS(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE) + +#define PSA_ALG_DSA_BASE ((psa_algorithm_t)0x10040000) +/** DSA signature with hashing. + * + * This is the signature scheme defined by FIPS 186-4, + * with a random per-message secret number (*k*). + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding DSA signature algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DSA(hash_alg) \ + (PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000) +#define PSA_ALG_DSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000) +#define PSA_ALG_DETERMINISTIC_DSA(hash_alg) \ + (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_DSA(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \ + PSA_ALG_DSA_BASE) +#define PSA_ALG_DSA_IS_DETERMINISTIC(alg) \ + (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) +#define PSA_ALG_IS_DETERMINISTIC_DSA(alg) \ + (PSA_ALG_IS_DSA(alg) && PSA_ALG_DSA_IS_DETERMINISTIC(alg)) +#define PSA_ALG_IS_RANDOMIZED_DSA(alg) \ + (PSA_ALG_IS_DSA(alg) && !PSA_ALG_DSA_IS_DETERMINISTIC(alg)) + +#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x10060000) +/** ECDSA signature with hashing. + * + * This is the ECDSA signature scheme defined by ANSI X9.62, + * with a random per-message secret number (*k*). + * + * The representation of the signature as a byte string consists of + * the concatentation of the signature values *r* and *s*. Each of + * *r* and *s* is encoded as an *N*-octet string, where *N* is the length + * of the base point of the curve in octets. Each value is represented + * in big-endian order (most significant octet first). + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding ECDSA signature algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_ECDSA(hash_alg) \ + (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** ECDSA signature without hashing. + * + * This is the same signature scheme as #PSA_ALG_ECDSA(), but + * without specifying a hash algorithm. This algorithm may only be + * used to sign or verify a sequence of bytes that should be an + * already-calculated hash. Note that the input is padded with + * zeros on the left or truncated on the left as required to fit + * the curve size. + */ +#define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE +#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x10070000) +/** Deterministic ECDSA signature with hashing. + * + * This is the deterministic ECDSA signature scheme defined by RFC 6979. + * + * The representation of a signature is the same as with #PSA_ALG_ECDSA(). + * + * Note that when this algorithm is used for verification, signatures + * made with randomized ECDSA (#PSA_ALG_ECDSA(\p hash_alg)) with the + * same private key are accepted. In other words, + * #PSA_ALG_DETERMINISTIC_ECDSA(\p hash_alg) differs from + * #PSA_ALG_ECDSA(\p hash_alg) only for signature, not for verification. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding deterministic ECDSA signature + * algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \ + (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_ECDSA(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \ + PSA_ALG_ECDSA_BASE) +#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \ + (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) +#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \ + (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) +#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \ + (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) + +/** Whether the specified algorithm is a hash-and-sign algorithm. + * + * Hash-and-sign algorithms are public-key signature algorithms structured + * in two parts: first the calculation of a hash in a way that does not + * depend on the key, then the calculation of a signature from the + * hash value and the key. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a hash-and-sign algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HASH_AND_SIGN(alg) \ + (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \ + PSA_ALG_IS_DSA(alg) || PSA_ALG_IS_ECDSA(alg)) + +/** Get the hash used by a hash-and-sign signature algorithm. + * + * A hash-and-sign algorithm is a signature algorithm which is + * composed of two phases: first a hashing phase which does not use + * the key and produces a hash of the input message, then a signing + * phase which only uses the hash and the key and not the message + * itself. + * + * \param alg A signature algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_SIGN(\p alg) is true). + * + * \return The underlying hash algorithm if \p alg is a hash-and-sign + * algorithm. + * \return 0 if \p alg is a signature algorithm that does not + * follow the hash-and-sign structure. + * \return Unspecified if \p alg is not a signature algorithm or + * if it is not supported by the implementation. + */ +#define PSA_ALG_SIGN_GET_HASH(alg) \ + (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ + ((alg) & PSA_ALG_HASH_MASK) == 0 ? /*"raw" algorithm*/ 0 : \ + ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ + 0) + +/** RSA PKCS#1 v1.5 encryption. + */ +#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x12020000) + +#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x12030000) +/** RSA OAEP encryption. + * + * This is the encryption scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSAES-OAEP, with the message generation function MGF1. + * + * \param hash_alg The hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true) to use + * for MGF1. + * + * \return The corresponding RSA OAEP signature algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_OAEP(hash_alg) \ + (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_RSA_OAEP(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE) +#define PSA_ALG_RSA_OAEP_GET_HASH(alg) \ + (PSA_ALG_IS_RSA_OAEP(alg) ? \ + ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ + 0) + +#define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x30000100) +/** Macro to build an HKDF algorithm. + * + * For example, `PSA_ALG_HKDF(PSA_ALG_SHA256)` is HKDF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding HKDF algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_HKDF(hash_alg) \ + (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** Whether the specified algorithm is an HKDF algorithm. + * + * HKDF is a family of key derivation algorithms that are based on a hash + * function and the HMAC construction. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is an HKDF algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_HKDF(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE) +#define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x30000200) +/** Macro to build a TLS-1.2 PRF algorithm. + * + * TLS 1.2 uses a custom pseudorandom function (PRF) for key schedule, + * specified in Section 5 of RFC 5246. It is based on HMAC and can be + * used with either SHA-256 or SHA-384. + * + * For the application to TLS-1.2, the salt and label arguments passed + * to psa_key_derivation() are what's called 'seed' and 'label' in RFC 5246, + * respectively. For example, for TLS key expansion, the salt is the + * concatenation of ServerHello.Random + ClientHello.Random, + * while the label is "key expansion". + * + * For example, `PSA_ALG_TLS12_PRF(PSA_ALG_SHA256)` represents the + * TLS 1.2 PRF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding TLS-1.2 PRF algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_TLS12_PRF(hash_alg) \ + (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is a TLS-1.2 PRF algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a TLS-1.2 PRF algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_TLS12_PRF(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE) +#define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x30000300) +/** Macro to build a TLS-1.2 PSK-to-MasterSecret algorithm. + * + * In a pure-PSK handshake in TLS 1.2, the master secret is derived + * from the PreSharedKey (PSK) through the application of padding + * (RFC 4279, Section 2) and the TLS-1.2 PRF (RFC 5246, Section 5). + * The latter is based on HMAC and can be used with either SHA-256 + * or SHA-384. + * + * For the application to TLS-1.2, the salt passed to psa_key_derivation() + * (and forwarded to the TLS-1.2 PRF) is the concatenation of the + * ClientHello.Random + ServerHello.Random, while the label is "master secret" + * or "extended master secret". + * + * For example, `PSA_ALG_TLS12_PSK_TO_MS(PSA_ALG_SHA256)` represents the + * TLS-1.2 PSK to MasterSecret derivation PRF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding TLS-1.2 PSK to MS algorithm. + * \return Unspecified if \p alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \ + (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is a TLS-1.2 PSK to MS algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a TLS-1.2 PSK to MS algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE) +#define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0x010fffff) + +/** Use a shared secret as is. + * + * Specify this algorithm as the selection component of a key agreement + * to use the raw result of the key agreement as key material. + * + * \warning The raw result of a key agreement algorithm such as finite-field + * Diffie-Hellman or elliptic curve Diffie-Hellman has biases and should + * not be used directly as key material. It can however be used as the secret + * input in a key derivation algorithm. + */ +#define PSA_ALG_SELECT_RAW ((psa_algorithm_t)0x31000001) + +#define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \ + (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \ + ((alg) & ~PSA_ALG_KEY_DERIVATION_MASK) + +#define PSA_ALG_FFDH_BASE ((psa_algorithm_t)0x22100000) +/** The Diffie-Hellman key agreement algorithm. + * + * This algorithm combines the finite-field Diffie-Hellman (DH) key + * agreement, also known as Diffie-Hellman-Merkle (DHM) key agreement, + * to produce a shared secret from a private key and the peer's + * public key, with a key selection or key derivation algorithm to produce + * one or more shared keys and other shared cryptographic material. + * + * The shared secret produced by key agreement and passed as input to the + * derivation or selection algorithm \p kdf_alg is the shared secret + * `g^{ab}` in big-endian format. + * It is `ceiling(m / 8)` bytes long where `m` is the size of the prime `p` + * in bits. + * + * \param kdf_alg A key derivation algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_DERIVATION(\p hash_alg) is true) + * or a key selection algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_SELECTION(\p hash_alg) is true). + * + * \return The Diffie-Hellman algorithm with the specified + * selection or derivation algorithm. + */ +#define PSA_ALG_FFDH(kdf_alg) \ + (PSA_ALG_FFDH_BASE | ((kdf_alg) & PSA_ALG_KEY_DERIVATION_MASK)) +/** Whether the specified algorithm is a finite field Diffie-Hellman algorithm. + * + * This includes every supported key selection or key agreement algorithm + * for the output of the Diffie-Hellman calculation. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a finite field Diffie-Hellman algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key agreement algorithm identifier. + */ +#define PSA_ALG_IS_FFDH(alg) \ + (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH_BASE) + +#define PSA_ALG_ECDH_BASE ((psa_algorithm_t)0x22200000) +/** The elliptic curve Diffie-Hellman (ECDH) key agreement algorithm. + * + * This algorithm combines the elliptic curve Diffie-Hellman key + * agreement to produce a shared secret from a private key and the peer's + * public key, with a key selection or key derivation algorithm to produce + * one or more shared keys and other shared cryptographic material. + * + * The shared secret produced by key agreement and passed as input to the + * derivation or selection algorithm \p kdf_alg is the x-coordinate of + * the shared secret point. It is always `ceiling(m / 8)` bytes long where + * `m` is the bit size associated with the curve, i.e. the bit size of the + * order of the curve's coordinate field. When `m` is not a multiple of 8, + * the byte containing the most significant bit of the shared secret + * is padded with zero bits. The byte order is either little-endian + * or big-endian depending on the curve type. + * + * - For Montgomery curves (curve types `PSA_ECC_CURVE_CURVEXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in little-endian byte order. + * The bit size is 448 for Curve448 and 255 for Curve25519. + * - For Weierstrass curves over prime fields (curve types + * `PSA_ECC_CURVE_SECPXXX` and `PSA_ECC_CURVE_BRAINPOOL_PXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in big-endian byte order. + * The bit size is `m = ceiling(log_2(p))` for the field `F_p`. + * - For Weierstrass curves over binary fields (curve types + * `PSA_ECC_CURVE_SECTXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in big-endian byte order. + * The bit size is `m` for the field `F_{2^m}`. + * + * \param kdf_alg A key derivation algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_DERIVATION(\p hash_alg) is true) + * or a selection algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_SELECTION(\p hash_alg) is true). + * + * \return The Diffie-Hellman algorithm with the specified + * selection or derivation algorithm. + */ +#define PSA_ALG_ECDH(kdf_alg) \ + (PSA_ALG_ECDH_BASE | ((kdf_alg) & PSA_ALG_KEY_DERIVATION_MASK)) +/** Whether the specified algorithm is an elliptic curve Diffie-Hellman + * algorithm. + * + * This includes every supported key selection or key agreement algorithm + * for the output of the Diffie-Hellman calculation. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is an elliptic curve Diffie-Hellman algorithm, + * 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key agreement algorithm identifier. + */ +#define PSA_ALG_IS_ECDH(alg) \ + (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH_BASE) + +/** Whether the specified algorithm encoding is a wildcard. + * + * Wildcard values may only be used to set the usage algorithm field in + * a policy, not to perform an operation. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a wildcard algorithm encoding. + * \return 0 if \c alg is a non-wildcard algorithm encoding (suitable for + * an operation). + * \return This macro may return either 0 or 1 if \c alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_WILDCARD(alg) \ + (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ + PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \ + (alg) == PSA_ALG_ANY_HASH) + +/**@}*/ + +/** \defgroup key_lifetimes Key lifetimes + * @{ + */ + +/** A volatile key only exists as long as the handle to it is not closed. + * The key material is guaranteed to be erased on a power reset. + */ +#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000) + +/** The default storage area for persistent keys. + * + * A persistent key remains in storage until it is explicitly destroyed or + * until the corresponding storage area is wiped. This specification does + * not define any mechanism to wipe a storage area, but implementations may + * provide their own mechanism (for example to perform a factory reset, + * to prepare for device refurbishment, or to uninstall an application). + * + * This lifetime value is the default storage area for the calling + * application. Implementations may offer other storage areas designated + * by other lifetime values as implementation-specific extensions. + */ +#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001) + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** Whether the key may be exported. + * + * A public key or the public part of a key pair may always be exported + * regardless of the value of this permission flag. + * + * If a key does not have export permission, implementations shall not + * allow the key to be exported in plain form from the cryptoprocessor, + * whether through psa_export_key() or through a proprietary interface. + * The key may however be exportable in a wrapped form, i.e. in a form + * where it is encrypted by another key. + */ +#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001) + +/** Whether the key may be used to encrypt a message. + * + * This flag allows the key to be used for a symmetric encryption operation, + * for an AEAD encryption-and-authentication operation, + * or for an asymmetric encryption operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100) + +/** Whether the key may be used to decrypt a message. + * + * This flag allows the key to be used for a symmetric decryption operation, + * for an AEAD decryption-and-verification operation, + * or for an asymmetric decryption operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200) + +/** Whether the key may be used to sign a message. + * + * This flag allows the key to be used for a MAC calculation operation + * or for an asymmetric signature operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_SIGN ((psa_key_usage_t)0x00000400) + +/** Whether the key may be used to verify a message signature. + * + * This flag allows the key to be used for a MAC verification operation + * or for an asymmetric signature verification operation, + * if otherwise permitted by by the key's type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_VERIFY ((psa_key_usage_t)0x00000800) + +/** Whether the key may be used to derive other keys. + */ +#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00001000) + +/**@}*/ + +#endif /* PSA_CRYPTO_VALUES_H */ diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h index 44a1a60572f..ee3ecd776cd 100644 --- a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h @@ -85,6 +85,13 @@ struct psa_hash_operation_s } ctx; }; +#define PSA_HASH_OPERATION_INIT {0, {0}} +static inline struct psa_hash_operation_s psa_hash_operation_init( void ) +{ + const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT; + return( v ); +} + #if defined(MBEDTLS_MD_C) typedef struct { @@ -116,6 +123,13 @@ struct psa_mac_operation_s } ctx; }; +#define PSA_MAC_OPERATION_INIT {0, 0, 0, 0, 0, 0, 0, {0}} +static inline struct psa_mac_operation_s psa_mac_operation_init( void ) +{ + const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT; + return( v ); +} + struct psa_cipher_operation_s { psa_algorithm_t alg; @@ -126,10 +140,18 @@ struct psa_cipher_operation_s uint8_t block_size; union { + unsigned dummy; /* Enable easier initializing of the union. */ mbedtls_cipher_context_t cipher; } ctx; }; +#define PSA_CIPHER_OPERATION_INIT {0, 0, 0, 0, 0, 0, {0}} +static inline struct psa_cipher_operation_s psa_cipher_operation_init( void ) +{ + const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT; + return( v ); +} + #if defined(MBEDTLS_MD_C) typedef struct { @@ -208,4 +230,11 @@ struct psa_key_policy_s psa_algorithm_t alg; }; +#define PSA_KEY_POLICY_INIT {0, 0} +static inline struct psa_key_policy_s psa_key_policy_init( void ) +{ + const struct psa_key_policy_s v = PSA_KEY_POLICY_INIT; + return( v ); +} + #endif /* PSA_CRYPTO_STRUCT_H */ 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 fc296d36557..cfa07a6eee9 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 @@ -26,23 +26,13 @@ #endif #if defined(MBEDTLS_PSA_CRYPTO_C) -/* - * In case MBEDTLS_PSA_CRYPTO_SPM is defined the code is built for SPM (Secure - * Partition Manager) integration which separate the code into two parts - * NSPE (Non-Secure Process Environment) and SPE (Secure Process Environment). - * In this mode an additional header file should be included. - */ -#if defined(MBEDTLS_PSA_CRYPTO_SPM) -/* - * PSA_CRYPTO_SECURE means that this file is compiled to the SPE side. - * some headers will be affected by this flag. - */ -#define PSA_CRYPTO_SECURE 1 -#include "crypto_spe.h" -#endif +#include "psa_crypto_service_integration.h" #include "psa/crypto.h" +#include "psa_crypto_core.h" +#include "psa_crypto_invasive.h" +#include "psa_crypto_slot_management.h" /* Include internal declarations that are useful for implementing persistently * stored keys. */ #include "psa_crypto_storage.h" @@ -58,6 +48,7 @@ #include "mbedtls/arc4.h" #include "mbedtls/asn1.h" +#include "mbedtls/asn1write.h" #include "mbedtls/bignum.h" #include "mbedtls/blowfish.h" #include "mbedtls/camellia.h" @@ -79,6 +70,7 @@ #include "mbedtls/md_internal.h" #include "mbedtls/pk.h" #include "mbedtls/pk_internal.h" +#include "mbedtls/platform_util.h" #include "mbedtls/ripemd160.h" #include "mbedtls/rsa.h" #include "mbedtls/sha1.h" @@ -87,17 +79,11 @@ #include "mbedtls/xtea.h" #if ( defined(MBEDTLS_ENTROPY_NV_SEED) && defined(MBEDTLS_PSA_HAS_ITS_IO) ) -#include "psa_prot_internal_storage.h" +#include "psa/internal_trusted_storage.h" #endif #define ARRAY_LENGTH( array ) ( sizeof( array ) / sizeof( *( array ) ) ) -/* Implementation that should never be optimized out by the compiler */ -static void mbedtls_zeroize( void *v, size_t n ) -{ - volatile unsigned char *p = v; while( n-- ) *p++ = 0; -} - /* constant-time buffer comparison */ static inline int safer_memcmp( const uint8_t *a, const uint8_t *b, size_t n ) { @@ -116,42 +102,24 @@ static inline int safer_memcmp( const uint8_t *a, const uint8_t *b, size_t n ) /* Global data, support functions and library management */ /****************************************************************/ -/* Number of key slots (plus one because 0 is not used). - * The value is a compile-time constant for now, for simplicity. */ -#define PSA_KEY_SLOT_COUNT 32 - -typedef struct -{ - psa_key_type_t type; - psa_key_policy_t policy; - psa_key_lifetime_t lifetime; - union - { - struct raw_data - { - uint8_t *data; - size_t bytes; - } raw; -#if defined(MBEDTLS_RSA_C) - mbedtls_rsa_context *rsa; -#endif /* MBEDTLS_RSA_C */ -#if defined(MBEDTLS_ECP_C) - mbedtls_ecp_keypair *ecp; -#endif /* MBEDTLS_ECP_C */ - } data; -} key_slot_t; - static int key_type_is_raw_bytes( psa_key_type_t type ) { return( PSA_KEY_TYPE_IS_UNSTRUCTURED( type ) ); } +/* Values for psa_global_data_t::rng_state */ +#define RNG_NOT_INITIALIZED 0 +#define RNG_INITIALIZED 1 +#define RNG_SEEDED 2 + typedef struct { - int initialized; + void (* entropy_init )( mbedtls_entropy_context *ctx ); + void (* entropy_free )( mbedtls_entropy_context *ctx ); mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; - key_slot_t key_slots[PSA_KEY_SLOT_COUNT]; + unsigned initialized : 1; + unsigned rng_state : 2; } psa_global_data_t; static psa_global_data_t global_data; @@ -190,13 +158,21 @@ static psa_status_t mbedtls_to_psa_error( int ret ) case MBEDTLS_ERR_ASN1_BUF_TOO_SMALL: return( PSA_ERROR_BUFFER_TOO_SMALL ); +#if defined(MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA) + case MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA: +#elif defined(MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH) case MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH: +#endif case MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH: return( PSA_ERROR_NOT_SUPPORTED ); case MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED: return( PSA_ERROR_HARDWARE_FAILURE ); +#if defined(MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA) + case MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA: +#elif defined(MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH) case MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH: +#endif case MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH: return( PSA_ERROR_NOT_SUPPORTED ); case MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED: @@ -364,7 +340,7 @@ static psa_status_t mbedtls_to_psa_error( int ret ) return( PSA_ERROR_HARDWARE_FAILURE ); default: - return( PSA_ERROR_UNKNOWN_ERROR ); + return( PSA_ERROR_GENERIC_ERROR ); } } @@ -531,50 +507,112 @@ static psa_status_t psa_check_rsa_key_byte_aligned( return( status ); } -static psa_status_t psa_import_rsa_key( mbedtls_pk_context *pk, +static psa_status_t psa_import_rsa_key( psa_key_type_t type, + const uint8_t *data, + size_t data_length, mbedtls_rsa_context **p_rsa ) { - if( mbedtls_pk_get_type( pk ) != MBEDTLS_PK_RSA ) - return( PSA_ERROR_INVALID_ARGUMENT ); + psa_status_t status; + mbedtls_pk_context pk; + mbedtls_rsa_context *rsa; + size_t bits; + + mbedtls_pk_init( &pk ); + + /* Parse the data. */ + if( PSA_KEY_TYPE_IS_KEYPAIR( type ) ) + status = mbedtls_to_psa_error( + mbedtls_pk_parse_key( &pk, data, data_length, NULL, 0 ) ); else + status = mbedtls_to_psa_error( + mbedtls_pk_parse_public_key( &pk, data, data_length ) ); + if( status != PSA_SUCCESS ) + goto exit; + + /* We have something that the pkparse module recognizes. If it is a + * valid RSA key, store it. */ + if( mbedtls_pk_get_type( &pk ) != MBEDTLS_PK_RSA ) { - mbedtls_rsa_context *rsa = mbedtls_pk_rsa( *pk ); - /* The size of an RSA key doesn't have to be a multiple of 8. - * Mbed TLS supports non-byte-aligned key sizes, but not well. - * For example, mbedtls_rsa_get_len() returns the key size in - * bytes, not in bits. */ - size_t bits = PSA_BYTES_TO_BITS( mbedtls_rsa_get_len( rsa ) ); - psa_status_t status; - if( bits > PSA_VENDOR_RSA_MAX_KEY_BITS ) - return( PSA_ERROR_NOT_SUPPORTED ); - status = psa_check_rsa_key_byte_aligned( rsa ); - if( status != PSA_SUCCESS ) - return( status ); - *p_rsa = rsa; - return( PSA_SUCCESS ); + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; } + + rsa = mbedtls_pk_rsa( pk ); + /* The size of an RSA key doesn't have to be a multiple of 8. Mbed TLS + * supports non-byte-aligned key sizes, but not well. For example, + * mbedtls_rsa_get_len() returns the key size in bytes, not in bits. */ + bits = PSA_BYTES_TO_BITS( mbedtls_rsa_get_len( rsa ) ); + if( bits > PSA_VENDOR_RSA_MAX_KEY_BITS ) + { + status = PSA_ERROR_NOT_SUPPORTED; + goto exit; + } + status = psa_check_rsa_key_byte_aligned( rsa ); + +exit: + /* Free the content of the pk object only on error. */ + if( status != PSA_SUCCESS ) + { + mbedtls_pk_free( &pk ); + return( status ); + } + + /* On success, store the content of the object in the RSA context. */ + *p_rsa = rsa; + + return( PSA_SUCCESS ); } #endif /* defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PK_PARSE_C) */ -#if defined(MBEDTLS_ECP_C) && defined(MBEDTLS_PK_PARSE_C) -/* Import an elliptic curve parsed by the mbedtls pk module. */ -static psa_status_t psa_import_ecp_key( psa_ecc_curve_t expected_curve, - mbedtls_pk_context *pk, - mbedtls_ecp_keypair **p_ecp ) +#if defined(MBEDTLS_ECP_C) + +/* Import a public key given as the uncompressed representation defined by SEC1 + * 2.3.3 as the content of an ECPoint. */ +static psa_status_t psa_import_ec_public_key( psa_ecc_curve_t curve, + const uint8_t *data, + size_t data_length, + mbedtls_ecp_keypair **p_ecp ) { - if( mbedtls_pk_get_type( pk ) != MBEDTLS_PK_ECKEY ) - return( PSA_ERROR_INVALID_ARGUMENT ); - else + psa_status_t status = PSA_ERROR_TAMPERING_DETECTED; + mbedtls_ecp_keypair *ecp = NULL; + mbedtls_ecp_group_id grp_id = mbedtls_ecc_group_of_psa( curve ); + + *p_ecp = NULL; + ecp = mbedtls_calloc( 1, sizeof( *ecp ) ); + if( ecp == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + mbedtls_ecp_keypair_init( ecp ); + + /* Load the group. */ + status = mbedtls_to_psa_error( + mbedtls_ecp_group_load( &ecp->grp, grp_id ) ); + if( status != PSA_SUCCESS ) + goto exit; + /* Load the public value. */ + status = mbedtls_to_psa_error( + mbedtls_ecp_point_read_binary( &ecp->grp, &ecp->Q, + data, data_length ) ); + if( status != PSA_SUCCESS ) + goto exit; + + /* Check that the point is on the curve. */ + status = mbedtls_to_psa_error( + mbedtls_ecp_check_pubkey( &ecp->grp, &ecp->Q ) ); + if( status != PSA_SUCCESS ) + goto exit; + + *p_ecp = ecp; + return( PSA_SUCCESS ); + +exit: + if( ecp != NULL ) { - mbedtls_ecp_keypair *ecp = mbedtls_pk_ec( *pk ); - psa_ecc_curve_t actual_curve = mbedtls_ecc_group_to_psa( ecp->grp.id ); - if( actual_curve != expected_curve ) - return( PSA_ERROR_INVALID_ARGUMENT ); - *p_ecp = ecp; - return( PSA_SUCCESS ); + mbedtls_ecp_keypair_free( ecp ); + mbedtls_free( ecp ); } + return( status ); } -#endif /* defined(MBEDTLS_ECP_C) && defined(MBEDTLS_PK_PARSE_C) */ +#endif /* defined(MBEDTLS_ECP_C) */ #if defined(MBEDTLS_ECP_C) /* Import a private key given as a byte string which is the private value @@ -592,6 +630,7 @@ static psa_status_t psa_import_ec_private_key( psa_ecc_curve_t curve, ecp = mbedtls_calloc( 1, sizeof( mbedtls_ecp_keypair ) ); if( ecp == NULL ) return( PSA_ERROR_INSUFFICIENT_MEMORY ); + mbedtls_ecp_keypair_init( ecp ); /* Load the group. */ status = mbedtls_to_psa_error( @@ -628,9 +667,12 @@ static psa_status_t psa_import_ec_private_key( psa_ecc_curve_t curve, } #endif /* defined(MBEDTLS_ECP_C) */ -static psa_status_t psa_import_key_into_slot( key_slot_t *slot, - const uint8_t *data, - size_t data_length ) +/** Import key data into a slot. `slot->type` must have been set + * previously. This function assumes that the slot does not contain + * any key material yet. On failure, the slot content is unchanged. */ +psa_status_t psa_import_key_into_slot( psa_key_slot_t *slot, + const uint8_t *data, + size_t data_length ) { psa_status_t status = PSA_SUCCESS; @@ -654,154 +696,144 @@ static psa_status_t psa_import_key_into_slot( key_slot_t *slot, status = psa_import_ec_private_key( PSA_KEY_TYPE_GET_CURVE( slot->type ), data, data_length, &slot->data.ecp ); - if( status != PSA_SUCCESS ) - return( status ); + } + else if( PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY( slot->type ) ) + { + status = psa_import_ec_public_key( + PSA_KEY_TYPE_GET_CURVE( slot->type ), + data, data_length, + &slot->data.ecp ); } else #endif /* MBEDTLS_ECP_C */ -#if defined(MBEDTLS_PK_PARSE_C) - if( PSA_KEY_TYPE_IS_RSA( slot->type ) || - PSA_KEY_TYPE_IS_ECC( slot->type ) ) +#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PK_PARSE_C) + if( PSA_KEY_TYPE_IS_RSA( slot->type ) ) { - int ret; - mbedtls_pk_context pk; - mbedtls_pk_init( &pk ); - - /* Parse the data. */ - if( PSA_KEY_TYPE_IS_KEYPAIR( slot->type ) ) - ret = mbedtls_pk_parse_key( &pk, data, data_length, NULL, 0 ); - else - ret = mbedtls_pk_parse_public_key( &pk, data, data_length ); - if( ret != 0 ) - return( mbedtls_to_psa_error( ret ) ); - - /* We have something that the pkparse module recognizes. - * If it has the expected type and passes any type-specific - * checks, store it. */ -#if defined(MBEDTLS_RSA_C) - if( PSA_KEY_TYPE_IS_RSA( slot->type ) ) - status = psa_import_rsa_key( &pk, &slot->data.rsa ); - else -#endif /* MBEDTLS_RSA_C */ -#if defined(MBEDTLS_ECP_C) - if( PSA_KEY_TYPE_IS_ECC( slot->type ) ) - status = psa_import_ecp_key( PSA_KEY_TYPE_GET_CURVE( slot->type ), - &pk, &slot->data.ecp ); - else -#endif /* MBEDTLS_ECP_C */ - { - status = PSA_ERROR_NOT_SUPPORTED; - } - - /* Free the content of the pk object only on error. On success, - * the content of the object has been stored in the slot. */ - if( status != PSA_SUCCESS ) - { - mbedtls_pk_free( &pk ); - return( status ); - } + status = psa_import_rsa_key( slot->type, + data, data_length, + &slot->data.rsa ); } else -#endif /* defined(MBEDTLS_PK_PARSE_C) */ +#endif /* defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PK_PARSE_C) */ { return( PSA_ERROR_NOT_SUPPORTED ); } - return( PSA_SUCCESS ); -} - -#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) -static psa_status_t psa_load_persistent_key_into_slot( psa_key_slot_t key, - key_slot_t *p_slot ) -{ - psa_status_t status = PSA_SUCCESS; - uint8_t *key_data = NULL; - size_t key_data_length = 0; - - status = psa_load_persistent_key( key, &( p_slot )->type, - &( p_slot )->policy, &key_data, - &key_data_length ); - if( status != PSA_SUCCESS ) - goto exit; - status = psa_import_key_into_slot( p_slot, - key_data, key_data_length ); -exit: - psa_free_persistent_key_data( key_data, key_data_length ); return( status ); } -#endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ - -/* Retrieve a key slot, occupied or not. */ -static psa_status_t psa_get_key_slot( psa_key_slot_t key, - key_slot_t **p_slot ) -{ - GUARD_MODULE_INITIALIZED; - - /* 0 is not a valid slot number under any circumstance. This - * implementation provides slots number 1 to N where N is the - * number of available slots. */ - if( key == 0 || key > ARRAY_LENGTH( global_data.key_slots ) ) - return( PSA_ERROR_INVALID_ARGUMENT ); - - *p_slot = &global_data.key_slots[key - 1]; - -#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) - if( ( *p_slot )->lifetime == PSA_KEY_LIFETIME_PERSISTENT ) - { - /* There are two circumstances this can occur: the key material has - * not yet been created, or the key exists in storage but has not yet - * been loaded into memory. */ - if( ( *p_slot )->type == PSA_KEY_TYPE_NONE ) - { - psa_status_t status = PSA_SUCCESS; - status = psa_load_persistent_key_into_slot( key, *p_slot ); - if( status != PSA_ERROR_EMPTY_SLOT ) - return( status ); - } - } -#endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ - - return( PSA_SUCCESS ); -} /* Retrieve an empty key slot (slot with no key data, but possibly * with some metadata such as a policy). */ -static psa_status_t psa_get_empty_key_slot( psa_key_slot_t key, - key_slot_t **p_slot ) +static psa_status_t psa_get_empty_key_slot( psa_key_handle_t handle, + psa_key_slot_t **p_slot ) { psa_status_t status; - key_slot_t *slot = NULL; + psa_key_slot_t *slot = NULL; *p_slot = NULL; - status = psa_get_key_slot( key, &slot ); + status = psa_get_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); if( slot->type != PSA_KEY_TYPE_NONE ) - return( PSA_ERROR_OCCUPIED_SLOT ); + return( PSA_ERROR_ALREADY_EXISTS ); *p_slot = slot; return( status ); } +/** Calculate the intersection of two algorithm usage policies. + * + * Return 0 (which allows no operation) on incompatibility. + */ +static psa_algorithm_t psa_key_policy_algorithm_intersection( + psa_algorithm_t alg1, + psa_algorithm_t alg2 ) +{ + /* Common case: the policy only allows alg. */ + if( alg1 == alg2 ) + return( alg1 ); + /* If the policies are from the same hash-and-sign family, check + * if one is a wildcard. If so the other has the specific algorithm. */ + if( PSA_ALG_IS_HASH_AND_SIGN( alg1 ) && + PSA_ALG_IS_HASH_AND_SIGN( alg2 ) && + ( alg1 & ~PSA_ALG_HASH_MASK ) == ( alg2 & ~PSA_ALG_HASH_MASK ) ) + { + if( PSA_ALG_SIGN_GET_HASH( alg1 ) == PSA_ALG_ANY_HASH ) + return( alg2 ); + if( PSA_ALG_SIGN_GET_HASH( alg2 ) == PSA_ALG_ANY_HASH ) + return( alg1 ); + } + /* If the policies are incompatible, allow nothing. */ + return( 0 ); +} + +/** Test whether a policy permits an algorithm. + * + * The caller must test usage flags separately. + */ +static int psa_key_policy_permits( const psa_key_policy_t *policy, + psa_algorithm_t alg ) +{ + /* Common case: the policy only allows alg. */ + if( alg == policy->alg ) + return( 1 ); + /* If policy->alg is a hash-and-sign with a wildcard for the hash, + * and alg is the same hash-and-sign family with any hash, + * then alg is compliant with policy->alg. */ + if( PSA_ALG_IS_HASH_AND_SIGN( alg ) && + PSA_ALG_SIGN_GET_HASH( policy->alg ) == PSA_ALG_ANY_HASH ) + { + return( ( policy->alg & ~PSA_ALG_HASH_MASK ) == + ( alg & ~PSA_ALG_HASH_MASK ) ); + } + /* If it isn't permitted, it's forbidden. */ + return( 0 ); +} + +/** Restrict a key policy based on a constraint. + * + * \param[in,out] policy The policy to restrict. + * \param[in] constraint The policy constraint to apply. + * + * \retval #PSA_SUCCESS + * \c *policy contains the intersection of the original value of + * \c *policy and \c *constraint. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c *policy and \c *constraint are incompatible. + * \c *policy is unchanged. + */ +static psa_status_t psa_restrict_key_policy( + psa_key_policy_t *policy, + const psa_key_policy_t *constraint ) +{ + psa_algorithm_t intersection_alg = + psa_key_policy_algorithm_intersection( policy->alg, constraint->alg ); + if( intersection_alg == 0 && policy->alg != 0 && constraint->alg != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + policy->usage &= constraint->usage; + policy->alg = intersection_alg; + return( PSA_SUCCESS ); +} + /** Retrieve a slot which must contain a key. The key must have allow all the * usage flags set in \p usage. If \p alg is nonzero, the key must allow * operations with this algorithm. */ -static psa_status_t psa_get_key_from_slot( psa_key_slot_t key, - key_slot_t **p_slot, +static psa_status_t psa_get_key_from_slot( psa_key_handle_t handle, + psa_key_slot_t **p_slot, psa_key_usage_t usage, psa_algorithm_t alg ) { psa_status_t status; - key_slot_t *slot = NULL; + psa_key_slot_t *slot = NULL; *p_slot = NULL; - status = psa_get_key_slot( key, &slot ); + status = psa_get_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); if( slot->type == PSA_KEY_TYPE_NONE ) - return( PSA_ERROR_EMPTY_SLOT ); + return( PSA_ERROR_DOES_NOT_EXIST ); /* Enforce that usage policy for the key slot contains all the flags * required by the usage parameter. There is one exception: public @@ -811,14 +843,17 @@ static psa_status_t psa_get_key_from_slot( psa_key_slot_t key, usage &= ~PSA_KEY_USAGE_EXPORT; if( ( slot->policy.usage & usage ) != usage ) return( PSA_ERROR_NOT_PERMITTED ); - if( alg != 0 && ( alg != slot->policy.alg ) ) + + /* Enforce that the usage policy permits the requested algortihm. */ + if( alg != 0 && ! psa_key_policy_permits( &slot->policy, alg ) ) return( PSA_ERROR_NOT_PERMITTED ); *p_slot = slot; return( PSA_SUCCESS ); } -static psa_status_t psa_remove_key_data_from_memory( key_slot_t *slot ) +/** Wipe key data from a slot. Preserve metadata such as the policy. */ +static psa_status_t psa_remove_key_data_from_memory( psa_key_slot_t *slot ) { if( slot->type == PSA_KEY_TYPE_NONE ) { @@ -854,15 +889,27 @@ static psa_status_t psa_remove_key_data_from_memory( key_slot_t *slot ) return( PSA_SUCCESS ); } -psa_status_t psa_import_key( psa_key_slot_t key, +/** Completely wipe a slot in memory, including its policy. + * Persistent storage is not affected. */ +psa_status_t psa_wipe_key_slot( psa_key_slot_t *slot ) +{ + psa_status_t status = psa_remove_key_data_from_memory( slot ); + /* At this point, key material and other type-specific content has + * been wiped. Clear remaining metadata. We can call memset and not + * zeroize because the metadata is not particularly sensitive. */ + memset( slot, 0, sizeof( *slot ) ); + return( status ); +} + +psa_status_t psa_import_key( psa_key_handle_t handle, psa_key_type_t type, const uint8_t *data, size_t data_length ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; - status = psa_get_empty_key_slot( key, &slot ); + status = psa_get_empty_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); @@ -879,7 +926,8 @@ psa_status_t psa_import_key( psa_key_slot_t key, if( slot->lifetime == PSA_KEY_LIFETIME_PERSISTENT ) { /* Store in file location */ - status = psa_save_persistent_key( key, slot->type, &slot->policy, data, + status = psa_save_persistent_key( slot->persistent_storage_id, + slot->type, &slot->policy, data, data_length ); if( status != PSA_SUCCESS ) { @@ -892,31 +940,30 @@ psa_status_t psa_import_key( psa_key_slot_t key, return( status ); } -psa_status_t psa_destroy_key( psa_key_slot_t key ) +psa_status_t psa_destroy_key( psa_key_handle_t handle ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status = PSA_SUCCESS; psa_status_t storage_status = PSA_SUCCESS; - status = psa_get_key_slot( key, &slot ); + status = psa_get_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); #if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) if( slot->lifetime == PSA_KEY_LIFETIME_PERSISTENT ) { - storage_status = psa_destroy_persistent_key( key ); + storage_status = + psa_destroy_persistent_key( slot->persistent_storage_id ); } #endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ - status = psa_remove_key_data_from_memory( slot ); - /* Zeroize the slot to wipe metadata such as policies. */ - mbedtls_zeroize( slot, sizeof( *slot ) ); + status = psa_wipe_key_slot( slot ); if( status != PSA_SUCCESS ) return( status ); return( storage_status ); } /* Return the size of the key in the given slot, in bits. */ -static size_t psa_get_key_bits( const key_slot_t *slot ) +static size_t psa_get_key_bits( const psa_key_slot_t *slot ) { if( key_type_is_raw_bytes( slot->type ) ) return( slot->data.raw.bytes * 8 ); @@ -932,23 +979,23 @@ static size_t psa_get_key_bits( const key_slot_t *slot ) return( 0 ); } -psa_status_t psa_get_key_information( psa_key_slot_t key, +psa_status_t psa_get_key_information( psa_key_handle_t handle, psa_key_type_t *type, size_t *bits ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; if( type != NULL ) *type = 0; if( bits != NULL ) *bits = 0; - status = psa_get_key_slot( key, &slot ); + status = psa_get_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); if( slot->type == PSA_KEY_TYPE_NONE ) - return( PSA_ERROR_EMPTY_SLOT ); + return( PSA_ERROR_DOES_NOT_EXIST ); if( type != NULL ) *type = slot->type; if( bits != NULL ) @@ -956,11 +1003,27 @@ psa_status_t psa_get_key_information( psa_key_slot_t key, return( PSA_SUCCESS ); } -static psa_status_t psa_internal_export_key( key_slot_t *slot, - uint8_t *data, - size_t data_size, - size_t *data_length, - int export_public_key ) +#if defined(MBEDTLS_RSA_C) || defined(MBEDTLS_ECP_C) +static int pk_write_pubkey_simple( mbedtls_pk_context *key, + unsigned char *buf, size_t size ) +{ + int ret; + unsigned char *c; + size_t len = 0; + + c = buf + size; + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_pk_write_pubkey( &c, buf, key ) ); + + return( (int) len ); +} +#endif /* defined(MBEDTLS_RSA_C) || defined(MBEDTLS_ECP_C) */ + +static psa_status_t psa_internal_export_key( const psa_key_slot_t *slot, + uint8_t *data, + size_t data_size, + size_t *data_length, + int export_public_key ) { *data_length = 0; @@ -1026,9 +1089,13 @@ static psa_status_t psa_internal_export_key( key_slot_t *slot, #endif } if( export_public_key || PSA_KEY_TYPE_IS_PUBLIC_KEY( slot->type ) ) - ret = mbedtls_pk_write_pubkey_der( &pk, data, data_size ); + { + ret = pk_write_pubkey_simple( &pk, data, data_size ); + } else + { ret = mbedtls_pk_write_key_der( &pk, data, data_size ); + } if( ret < 0 ) { /* If data_size is 0 then data may be NULL and then the @@ -1064,12 +1131,12 @@ static psa_status_t psa_internal_export_key( key_slot_t *slot, } } -psa_status_t psa_export_key( psa_key_slot_t key, +psa_status_t psa_export_key( psa_key_handle_t handle, uint8_t *data, size_t data_size, size_t *data_length ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; /* Set the key to empty now, so that even when there are errors, we always @@ -1081,19 +1148,19 @@ psa_status_t psa_export_key( psa_key_slot_t key, /* Export requires the EXPORT flag. There is an exception for public keys, * which don't require any flag, but psa_get_key_from_slot takes * care of this. */ - status = psa_get_key_from_slot( key, &slot, PSA_KEY_USAGE_EXPORT, 0 ); + status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_EXPORT, 0 ); if( status != PSA_SUCCESS ) return( status ); return( psa_internal_export_key( slot, data, data_size, data_length, 0 ) ); } -psa_status_t psa_export_public_key( psa_key_slot_t key, +psa_status_t psa_export_public_key( psa_key_handle_t handle, uint8_t *data, size_t data_size, size_t *data_length ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; /* Set the key to empty now, so that even when there are errors, we always @@ -1103,7 +1170,7 @@ psa_status_t psa_export_public_key( psa_key_slot_t key, *data_length = 0; /* Exporting a public key doesn't require a usage flag. */ - status = psa_get_key_from_slot( key, &slot, 0, 0 ); + status = psa_get_key_from_slot( handle, &slot, 0, 0 ); if( status != PSA_SUCCESS ) return( status ); return( psa_internal_export_key( slot, data, data_size, @@ -1111,8 +1178,7 @@ psa_status_t psa_export_public_key( psa_key_slot_t key, } #if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) -static psa_status_t psa_save_generated_persistent_key( psa_key_slot_t key, - key_slot_t *slot, +static psa_status_t psa_save_generated_persistent_key( psa_key_slot_t *slot, size_t bits ) { psa_status_t status; @@ -1130,19 +1196,79 @@ static psa_status_t psa_save_generated_persistent_key( psa_key_slot_t key, goto exit; } /* Store in file location */ - status = psa_save_persistent_key( key, slot->type, &slot->policy, + status = psa_save_persistent_key( slot->persistent_storage_id, + slot->type, &slot->policy, data, key_length ); if( status != PSA_SUCCESS ) { slot->type = PSA_KEY_TYPE_NONE; } exit: - mbedtls_zeroize( data, key_length ); + mbedtls_platform_zeroize( data, key_length ); mbedtls_free( data ); return( status ); } #endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ +static psa_status_t psa_copy_key_material( const psa_key_slot_t *source, + psa_key_handle_t target ) +{ + psa_status_t status; + uint8_t *buffer = NULL; + size_t buffer_size = 0; + size_t length; + + buffer_size = PSA_KEY_EXPORT_MAX_SIZE( source->type, + psa_get_key_bits( source ) ); + buffer = mbedtls_calloc( 1, buffer_size ); + if( buffer == NULL && buffer_size != 0 ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + status = psa_internal_export_key( source, buffer, buffer_size, &length, 0 ); + if( status != PSA_SUCCESS ) + goto exit; + status = psa_import_key( target, source->type, buffer, length ); + +exit: + if( buffer_size != 0 ) + mbedtls_platform_zeroize( buffer, buffer_size ); + mbedtls_free( buffer ); + return( status ); +} + +psa_status_t psa_copy_key(psa_key_handle_t source_handle, + psa_key_handle_t target_handle, + const psa_key_policy_t *constraint) +{ + psa_key_slot_t *source_slot = NULL; + psa_key_slot_t *target_slot = NULL; + psa_key_policy_t new_policy; + psa_status_t status; + status = psa_get_key_from_slot( source_handle, &source_slot, 0, 0 ); + if( status != PSA_SUCCESS ) + return( status ); + status = psa_get_empty_key_slot( target_handle, &target_slot ); + if( status != PSA_SUCCESS ) + return( status ); + + new_policy = target_slot->policy; + status = psa_restrict_key_policy( &new_policy, &source_slot->policy ); + if( status != PSA_SUCCESS ) + return( status ); + if( constraint != NULL ) + { + status = psa_restrict_key_policy( &new_policy, constraint ); + if( status != PSA_SUCCESS ) + return( status ); + } + + status = psa_copy_key_material( source_slot, target_handle ); + if( status != PSA_SUCCESS ) + return( status ); + + target_slot->policy = new_policy; + return( PSA_SUCCESS ); +} + /****************************************************************/ @@ -1479,6 +1605,67 @@ psa_status_t psa_hash_verify( psa_hash_operation_t *operation, return( PSA_SUCCESS ); } +psa_status_t psa_hash_clone( const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation ) +{ + if( target_operation->alg != 0 ) + return( PSA_ERROR_BAD_STATE ); + + switch( source_operation->alg ) + { + case 0: + return( PSA_ERROR_BAD_STATE ); +#if defined(MBEDTLS_MD2_C) + case PSA_ALG_MD2: + mbedtls_md2_clone( &target_operation->ctx.md2, + &source_operation->ctx.md2 ); + break; +#endif +#if defined(MBEDTLS_MD4_C) + case PSA_ALG_MD4: + mbedtls_md4_clone( &target_operation->ctx.md4, + &source_operation->ctx.md4 ); + break; +#endif +#if defined(MBEDTLS_MD5_C) + case PSA_ALG_MD5: + mbedtls_md5_clone( &target_operation->ctx.md5, + &source_operation->ctx.md5 ); + break; +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case PSA_ALG_RIPEMD160: + mbedtls_ripemd160_clone( &target_operation->ctx.ripemd160, + &source_operation->ctx.ripemd160 ); + break; +#endif +#if defined(MBEDTLS_SHA1_C) + case PSA_ALG_SHA_1: + mbedtls_sha1_clone( &target_operation->ctx.sha1, + &source_operation->ctx.sha1 ); + break; +#endif +#if defined(MBEDTLS_SHA256_C) + case PSA_ALG_SHA_224: + case PSA_ALG_SHA_256: + mbedtls_sha256_clone( &target_operation->ctx.sha256, + &source_operation->ctx.sha256 ); + break; +#endif +#if defined(MBEDTLS_SHA512_C) + case PSA_ALG_SHA_384: + case PSA_ALG_SHA_512: + mbedtls_sha512_clone( &target_operation->ctx.sha512, + &source_operation->ctx.sha512 ); + break; +#endif + default: + return( PSA_ERROR_NOT_SUPPORTED ); + } + + target_operation->alg = source_operation->alg; + return( PSA_SUCCESS ); +} /****************************************************************/ @@ -1644,7 +1831,7 @@ static psa_status_t psa_mac_init( psa_mac_operation_t *operation, #if defined(MBEDTLS_MD_C) static psa_status_t psa_hmac_abort_internal( psa_hmac_internal_data *hmac ) { - mbedtls_zeroize( hmac->opad, sizeof( hmac->opad ) ); + mbedtls_platform_zeroize( hmac->opad, sizeof( hmac->opad ) ); return( psa_hash_abort( &hmac->hash_ctx ) ); } @@ -1706,7 +1893,7 @@ psa_status_t psa_mac_abort( psa_mac_operation_t *operation ) #if defined(MBEDTLS_CMAC_C) static int psa_cmac_setup( psa_mac_operation_t *operation, size_t key_bits, - key_slot_t *slot, + psa_key_slot_t *slot, const mbedtls_cipher_info_t *cipher_info ) { int ret; @@ -1788,19 +1975,19 @@ static psa_status_t psa_hmac_setup_internal( psa_hmac_internal_data *hmac, status = psa_hash_update( &hmac->hash_ctx, ipad, block_size ); cleanup: - mbedtls_zeroize( ipad, key_length ); + mbedtls_platform_zeroize( ipad, key_length ); return( status ); } #endif /* MBEDTLS_MD_C */ static psa_status_t psa_mac_setup( psa_mac_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t handle, psa_algorithm_t alg, int is_sign ) { psa_status_t status; - key_slot_t *slot; + psa_key_slot_t *slot; size_t key_bits; psa_key_usage_t usage = is_sign ? PSA_KEY_USAGE_SIGN : PSA_KEY_USAGE_VERIFY; @@ -1813,7 +2000,7 @@ static psa_status_t psa_mac_setup( psa_mac_operation_t *operation, if( is_sign ) operation->is_sign = 1; - status = psa_get_key_from_slot( key, &slot, usage, alg ); + status = psa_get_key_from_slot( handle, &slot, usage, alg ); if( status != PSA_SUCCESS ) goto exit; key_bits = psa_get_key_bits( slot ); @@ -1906,17 +2093,17 @@ static psa_status_t psa_mac_setup( psa_mac_operation_t *operation, } psa_status_t psa_mac_sign_setup( psa_mac_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t handle, psa_algorithm_t alg ) { - return( psa_mac_setup( operation, key, alg, 1 ) ); + return( psa_mac_setup( operation, handle, alg, 1 ) ); } psa_status_t psa_mac_verify_setup( psa_mac_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t handle, psa_algorithm_t alg ) { - return( psa_mac_setup( operation, key, alg, 0 ) ); + return( psa_mac_setup( operation, handle, alg, 0 ) ); } psa_status_t psa_mac_update( psa_mac_operation_t *operation, @@ -1994,7 +2181,7 @@ static psa_status_t psa_hmac_finish_internal( psa_hmac_internal_data *hmac, memcpy( mac, tmp, mac_size ); exit: - mbedtls_zeroize( tmp, hash_size ); + mbedtls_platform_zeroize( tmp, hash_size ); return( status ); } #endif /* MBEDTLS_MD_C */ @@ -2018,7 +2205,7 @@ static psa_status_t psa_mac_finish_internal( psa_mac_operation_t *operation, int ret = mbedtls_cipher_cmac_finish( &operation->ctx.cmac, tmp ); if( ret == 0 ) memcpy( mac, tmp, operation->mac_size ); - mbedtls_zeroize( tmp, sizeof( tmp ) ); + mbedtls_platform_zeroize( tmp, sizeof( tmp ) ); return( mbedtls_to_psa_error( ret ) ); } else @@ -2106,7 +2293,7 @@ psa_status_t psa_mac_verify_finish( psa_mac_operation_t *operation, else psa_mac_abort( operation ); - mbedtls_zeroize( actual_mac, sizeof( actual_mac ) ); + mbedtls_platform_zeroize( actual_mac, sizeof( actual_mac ) ); return( status ); } @@ -2373,7 +2560,7 @@ static psa_status_t psa_ecdsa_verify( mbedtls_ecp_keypair *ecp, } #endif /* MBEDTLS_ECDSA_C */ -psa_status_t psa_asymmetric_sign( psa_key_slot_t key, +psa_status_t psa_asymmetric_sign( psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, @@ -2381,12 +2568,12 @@ psa_status_t psa_asymmetric_sign( psa_key_slot_t key, size_t signature_size, size_t *signature_length ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; *signature_length = signature_size; - status = psa_get_key_from_slot( key, &slot, PSA_KEY_USAGE_SIGN, alg ); + status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_SIGN, alg ); if( status != PSA_SUCCESS ) goto exit; if( ! PSA_KEY_TYPE_IS_KEYPAIR( slot->type ) ) @@ -2449,17 +2636,17 @@ psa_status_t psa_asymmetric_sign( psa_key_slot_t key, return( status ); } -psa_status_t psa_asymmetric_verify( psa_key_slot_t key, +psa_status_t psa_asymmetric_verify( psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; - status = psa_get_key_from_slot( key, &slot, PSA_KEY_USAGE_VERIFY, alg ); + status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_VERIFY, alg ); if( status != PSA_SUCCESS ) return( status ); @@ -2505,7 +2692,7 @@ static void psa_rsa_oaep_set_padding_mode( psa_algorithm_t alg, } #endif /* defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PKCS1_V21) */ -psa_status_t psa_asymmetric_encrypt( psa_key_slot_t key, +psa_status_t psa_asymmetric_encrypt( psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, @@ -2515,7 +2702,7 @@ psa_status_t psa_asymmetric_encrypt( psa_key_slot_t key, size_t output_size, size_t *output_length ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; (void) input; @@ -2529,7 +2716,7 @@ psa_status_t psa_asymmetric_encrypt( psa_key_slot_t key, if( ! PSA_ALG_IS_RSA_OAEP( alg ) && salt_length != 0 ) return( PSA_ERROR_INVALID_ARGUMENT ); - status = psa_get_key_from_slot( key, &slot, PSA_KEY_USAGE_ENCRYPT, alg ); + status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_ENCRYPT, alg ); if( status != PSA_SUCCESS ) return( status ); if( ! ( PSA_KEY_TYPE_IS_PUBLIC_KEY( slot->type ) || @@ -2585,7 +2772,7 @@ psa_status_t psa_asymmetric_encrypt( psa_key_slot_t key, } } -psa_status_t psa_asymmetric_decrypt( psa_key_slot_t key, +psa_status_t psa_asymmetric_decrypt( psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, @@ -2595,7 +2782,7 @@ psa_status_t psa_asymmetric_decrypt( psa_key_slot_t key, size_t output_size, size_t *output_length ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; (void) input; @@ -2609,7 +2796,7 @@ psa_status_t psa_asymmetric_decrypt( psa_key_slot_t key, if( ! PSA_ALG_IS_RSA_OAEP( alg ) && salt_length != 0 ) return( PSA_ERROR_INVALID_ARGUMENT ); - status = psa_get_key_from_slot( key, &slot, PSA_KEY_USAGE_DECRYPT, alg ); + status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_DECRYPT, alg ); if( status != PSA_SUCCESS ) return( status ); if( ! PSA_KEY_TYPE_IS_KEYPAIR( slot->type ) ) @@ -2695,13 +2882,13 @@ static psa_status_t psa_cipher_init( psa_cipher_operation_t *operation, } static psa_status_t psa_cipher_setup( psa_cipher_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t handle, psa_algorithm_t alg, mbedtls_operation_t cipher_operation ) { int ret = MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE; psa_status_t status; - key_slot_t *slot; + psa_key_slot_t *slot; size_t key_bits; const mbedtls_cipher_info_t *cipher_info = NULL; psa_key_usage_t usage = ( cipher_operation == MBEDTLS_ENCRYPT ? @@ -2712,7 +2899,7 @@ static psa_status_t psa_cipher_setup( psa_cipher_operation_t *operation, if( status != PSA_SUCCESS ) return( status ); - status = psa_get_key_from_slot( key, &slot, usage, alg); + status = psa_get_key_from_slot( handle, &slot, usage, alg); if( status != PSA_SUCCESS ) return( status ); key_bits = psa_get_key_bits( slot ); @@ -2787,17 +2974,17 @@ static psa_status_t psa_cipher_setup( psa_cipher_operation_t *operation, } psa_status_t psa_cipher_encrypt_setup( psa_cipher_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t handle, psa_algorithm_t alg ) { - return( psa_cipher_setup( operation, key, alg, MBEDTLS_ENCRYPT ) ); + return( psa_cipher_setup( operation, handle, alg, MBEDTLS_ENCRYPT ) ); } psa_status_t psa_cipher_decrypt_setup( psa_cipher_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t handle, psa_algorithm_t alg ) { - return( psa_cipher_setup( operation, key, alg, MBEDTLS_DECRYPT ) ); + return( psa_cipher_setup( operation, handle, alg, MBEDTLS_DECRYPT ) ); } psa_status_t psa_cipher_generate_iv( psa_cipher_operation_t *operation, @@ -2905,7 +3092,7 @@ psa_status_t psa_cipher_finish( psa_cipher_operation_t *operation, size_t output_size, size_t *output_length ) { - psa_status_t status = PSA_ERROR_UNKNOWN_ERROR; + psa_status_t status = PSA_ERROR_GENERIC_ERROR; int cipher_ret = MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE; uint8_t temp_output_buffer[MBEDTLS_MAX_BLOCK_LENGTH]; @@ -2947,7 +3134,7 @@ psa_status_t psa_cipher_finish( psa_cipher_operation_t *operation, goto error; } - mbedtls_zeroize( temp_output_buffer, sizeof( temp_output_buffer ) ); + mbedtls_platform_zeroize( temp_output_buffer, sizeof( temp_output_buffer ) ); status = psa_cipher_abort( operation ); return( status ); @@ -2956,7 +3143,7 @@ psa_status_t psa_cipher_finish( psa_cipher_operation_t *operation, *output_length = 0; - mbedtls_zeroize( temp_output_buffer, sizeof( temp_output_buffer ) ); + mbedtls_platform_zeroize( temp_output_buffer, sizeof( temp_output_buffer ) ); (void) psa_cipher_abort( operation ); return( status ); @@ -2996,11 +3183,6 @@ psa_status_t psa_cipher_abort( psa_cipher_operation_t *operation ) /****************************************************************/ #if !defined(MBEDTLS_PSA_CRYPTO_SPM) -void psa_key_policy_init( psa_key_policy_t *policy ) -{ - memset( policy, 0, sizeof( *policy ) ); -} - void psa_key_policy_set_usage( psa_key_policy_t *policy, psa_key_usage_t usage, psa_algorithm_t alg ) @@ -3020,16 +3202,16 @@ psa_algorithm_t psa_key_policy_get_algorithm( const psa_key_policy_t *policy ) } #endif /* !defined(MBEDTLS_PSA_CRYPTO_SPM) */ -psa_status_t psa_set_key_policy( psa_key_slot_t key, +psa_status_t psa_set_key_policy( psa_key_handle_t handle, const psa_key_policy_t *policy ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; if( policy == NULL ) return( PSA_ERROR_INVALID_ARGUMENT ); - status = psa_get_empty_key_slot( key, &slot ); + status = psa_get_empty_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); @@ -3046,16 +3228,16 @@ psa_status_t psa_set_key_policy( psa_key_slot_t key, return( PSA_SUCCESS ); } -psa_status_t psa_get_key_policy( psa_key_slot_t key, +psa_status_t psa_get_key_policy( psa_key_handle_t handle, psa_key_policy_t *policy ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; if( policy == NULL ) return( PSA_ERROR_INVALID_ARGUMENT ); - status = psa_get_key_slot( key, &slot ); + status = psa_get_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); @@ -3070,13 +3252,13 @@ psa_status_t psa_get_key_policy( psa_key_slot_t key, /* Key Lifetime */ /****************************************************************/ -psa_status_t psa_get_key_lifetime( psa_key_slot_t key, +psa_status_t psa_get_key_lifetime( psa_key_handle_t handle, psa_key_lifetime_t *lifetime ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; - status = psa_get_key_slot( key, &slot ); + status = psa_get_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); @@ -3085,34 +3267,6 @@ psa_status_t psa_get_key_lifetime( psa_key_slot_t key, return( PSA_SUCCESS ); } -psa_status_t psa_set_key_lifetime( psa_key_slot_t key, - psa_key_lifetime_t lifetime ) -{ - key_slot_t *slot; - psa_status_t status; - - if( lifetime != PSA_KEY_LIFETIME_VOLATILE && - lifetime != PSA_KEY_LIFETIME_PERSISTENT && - lifetime != PSA_KEY_LIFETIME_WRITE_ONCE ) - return( PSA_ERROR_INVALID_ARGUMENT ); - - status = psa_get_empty_key_slot( key, &slot ); - if( status != PSA_SUCCESS ) - return( status ); - - if( lifetime == PSA_KEY_LIFETIME_WRITE_ONCE ) - return( PSA_ERROR_NOT_SUPPORTED ); - -#if !defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) - if( lifetime == PSA_KEY_LIFETIME_PERSISTENT ) - return( PSA_ERROR_NOT_SUPPORTED ); -#endif - - slot->lifetime = lifetime; - - return( PSA_SUCCESS ); -} - /****************************************************************/ @@ -3121,7 +3275,7 @@ psa_status_t psa_set_key_lifetime( psa_key_slot_t key, typedef struct { - key_slot_t *slot; + psa_key_slot_t *slot; const mbedtls_cipher_info_t *cipher_info; union { @@ -3155,7 +3309,7 @@ static void psa_aead_abort( aead_operation_t *operation ) } static psa_status_t psa_aead_setup( aead_operation_t *operation, - psa_key_slot_t key, + psa_key_handle_t handle, psa_key_usage_t usage, psa_algorithm_t alg ) { @@ -3163,7 +3317,7 @@ static psa_status_t psa_aead_setup( aead_operation_t *operation, size_t key_bits; mbedtls_cipher_id_t cipher_id; - status = psa_get_key_from_slot( key, &operation->slot, usage, alg ); + status = psa_get_key_from_slot( handle, &operation->slot, usage, alg ); if( status != PSA_SUCCESS ) return( status ); @@ -3228,7 +3382,7 @@ static psa_status_t psa_aead_setup( aead_operation_t *operation, return( status ); } -psa_status_t psa_aead_encrypt( psa_key_slot_t key, +psa_status_t psa_aead_encrypt( psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, @@ -3246,7 +3400,7 @@ psa_status_t psa_aead_encrypt( psa_key_slot_t key, *ciphertext_length = 0; - status = psa_aead_setup( &operation, key, PSA_KEY_USAGE_ENCRYPT, alg ); + status = psa_aead_setup( &operation, handle, PSA_KEY_USAGE_ENCRYPT, alg ); if( status != PSA_SUCCESS ) return( status ); @@ -3322,7 +3476,7 @@ static psa_status_t psa_aead_unpadded_locate_tag( size_t tag_length, return( PSA_SUCCESS ); } -psa_status_t psa_aead_decrypt( psa_key_slot_t key, +psa_status_t psa_aead_decrypt( psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, @@ -3340,7 +3494,7 @@ psa_status_t psa_aead_decrypt( psa_key_slot_t key, *plaintext_length = 0; - status = psa_aead_setup( &operation, key, PSA_KEY_USAGE_DECRYPT, alg ); + status = psa_aead_setup( &operation, handle, PSA_KEY_USAGE_DECRYPT, alg ); if( status != PSA_SUCCESS ) return( status ); @@ -3418,7 +3572,7 @@ psa_status_t psa_generator_abort( psa_crypto_generator_t *generator ) { if( generator->ctx.buffer.data != NULL ) { - mbedtls_zeroize( generator->ctx.buffer.data, + mbedtls_platform_zeroize( generator->ctx.buffer.data, generator->ctx.buffer.size ); mbedtls_free( generator->ctx.buffer.data ); } @@ -3436,14 +3590,14 @@ psa_status_t psa_generator_abort( psa_crypto_generator_t *generator ) { if( generator->ctx.tls12_prf.key != NULL ) { - mbedtls_zeroize( generator->ctx.tls12_prf.key, + mbedtls_platform_zeroize( generator->ctx.tls12_prf.key, generator->ctx.tls12_prf.key_len ); mbedtls_free( generator->ctx.tls12_prf.key ); } if( generator->ctx.tls12_prf.Ai_with_seed != NULL ) { - mbedtls_zeroize( generator->ctx.tls12_prf.Ai_with_seed, + mbedtls_platform_zeroize( generator->ctx.tls12_prf.Ai_with_seed, generator->ctx.tls12_prf.Ai_with_seed_len ); mbedtls_free( generator->ctx.tls12_prf.Ai_with_seed ); } @@ -3461,6 +3615,12 @@ psa_status_t psa_generator_abort( psa_crypto_generator_t *generator ) psa_status_t psa_get_generator_capacity(const psa_crypto_generator_t *generator, size_t *capacity) { + if( generator->alg == 0 ) + { + /* This is a blank generator. */ + return PSA_ERROR_BAD_STATE; + } + *capacity = generator->capacity; return( PSA_SUCCESS ); } @@ -3690,24 +3850,29 @@ psa_status_t psa_generator_read( psa_crypto_generator_t *generator, { psa_status_t status; + if( generator->alg == 0 ) + { + /* This is a blank generator. */ + return PSA_ERROR_BAD_STATE; + } + if( output_length > generator->capacity ) { generator->capacity = 0; /* Go through the error path to wipe all confidential data now * that the generator object is useless. */ - status = PSA_ERROR_INSUFFICIENT_CAPACITY; + status = PSA_ERROR_INSUFFICIENT_DATA; goto exit; } - if( output_length == 0 && - generator->capacity == 0 && generator->alg == 0 ) + if( output_length == 0 && generator->capacity == 0 ) { - /* Edge case: this is a blank or finished generator, and 0 - * bytes were requested. The right error in this case could + /* Edge case: this is a finished generator, and 0 bytes + * were requested. The right error in this case could * be either INSUFFICIENT_CAPACITY or BAD_STATE. Return * INSUFFICIENT_CAPACITY, which is right for a finished * generator, for consistency with the case when * output_length > 0. */ - return( PSA_ERROR_INSUFFICIENT_CAPACITY ); + return( PSA_ERROR_INSUFFICIENT_DATA ); } generator->capacity -= output_length; @@ -3751,7 +3916,13 @@ psa_status_t psa_generator_read( psa_crypto_generator_t *generator, exit: if( status != PSA_SUCCESS ) { + /* Preserve the algorithm upon errors, but clear all sensitive state. + * This allows us to differentiate between exhausted generators and + * blank generators, so we can return PSA_ERROR_BAD_STATE on blank + * generators. */ + psa_algorithm_t alg = generator->alg; psa_generator_abort( generator ); + generator->alg = alg; memset( output, '!', output_length ); } return( status ); @@ -3769,7 +3940,7 @@ static void psa_des_set_key_parity( uint8_t *data, size_t data_size ) } #endif /* MBEDTLS_DES_C */ -psa_status_t psa_generator_import_key( psa_key_slot_t key, +psa_status_t psa_generator_import_key( psa_key_handle_t handle, psa_key_type_t type, size_t bits, psa_crypto_generator_t *generator ) @@ -3793,7 +3964,7 @@ psa_status_t psa_generator_import_key( psa_key_slot_t key, if( type == PSA_KEY_TYPE_DES ) psa_des_set_key_parity( data, bytes ); #endif /* MBEDTLS_DES_C */ - status = psa_import_key( key, type, data, bytes ); + status = psa_import_key( handle, type, data, bytes ); exit: mbedtls_free( data ); @@ -3945,7 +4116,7 @@ static psa_status_t psa_generator_tls12_psk_to_ms_setup( salt, salt_length, label, label_length ); - mbedtls_zeroize( pms, sizeof( pms ) ); + mbedtls_platform_zeroize( pms, sizeof( pms ) ); return( status ); } #endif /* MBEDTLS_MD_C */ @@ -4050,7 +4221,7 @@ static psa_status_t psa_key_derivation_internal( } psa_status_t psa_key_derivation( psa_crypto_generator_t *generator, - psa_key_slot_t key, + psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *salt, size_t salt_length, @@ -4058,7 +4229,7 @@ psa_status_t psa_key_derivation( psa_crypto_generator_t *generator, size_t label_length, size_t capacity ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; if( generator->alg != 0 ) @@ -4070,7 +4241,7 @@ psa_status_t psa_key_derivation( psa_crypto_generator_t *generator, if( ! PSA_ALG_IS_KEY_DERIVATION( alg ) ) return( PSA_ERROR_INVALID_ARGUMENT ); - status = psa_get_key_from_slot( key, &slot, PSA_KEY_USAGE_DERIVE, alg ); + status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_DERIVE, alg ); if( status != PSA_SUCCESS ) return( status ); @@ -4103,49 +4274,39 @@ static psa_status_t psa_key_agreement_ecdh( const uint8_t *peer_key, size_t shared_secret_size, size_t *shared_secret_length ) { - mbedtls_pk_context pk; mbedtls_ecp_keypair *their_key = NULL; mbedtls_ecdh_context ecdh; - int ret; + psa_status_t status; mbedtls_ecdh_init( &ecdh ); - mbedtls_pk_init( &pk ); - ret = mbedtls_pk_parse_public_key( &pk, peer_key, peer_key_length ); - if( ret != 0 ) - goto exit; - switch( mbedtls_pk_get_type( &pk ) ) - { - case MBEDTLS_PK_ECKEY: - case MBEDTLS_PK_ECKEY_DH: - break; - default: - ret = MBEDTLS_ERR_ECP_INVALID_KEY; - goto exit; - } - their_key = mbedtls_pk_ec( pk ); - if( their_key->grp.id != our_key->grp.id ) - { - ret = MBEDTLS_ERR_ECP_INVALID_KEY; + status = psa_import_ec_public_key( + mbedtls_ecc_group_to_psa( our_key->grp.id ), + peer_key, peer_key_length, + &their_key ); + if( status != PSA_SUCCESS ) goto exit; - } - ret = mbedtls_ecdh_get_params( &ecdh, their_key, MBEDTLS_ECDH_THEIRS ); - if( ret != 0 ) + status = mbedtls_to_psa_error( + mbedtls_ecdh_get_params( &ecdh, their_key, MBEDTLS_ECDH_THEIRS ) ); + if( status != PSA_SUCCESS ) goto exit; - ret = mbedtls_ecdh_get_params( &ecdh, our_key, MBEDTLS_ECDH_OURS ); - if( ret != 0 ) + status = mbedtls_to_psa_error( + mbedtls_ecdh_get_params( &ecdh, our_key, MBEDTLS_ECDH_OURS ) ); + if( status != PSA_SUCCESS ) goto exit; - ret = mbedtls_ecdh_calc_secret( &ecdh, - shared_secret_length, - shared_secret, shared_secret_size, - mbedtls_ctr_drbg_random, - &global_data.ctr_drbg ); + status = mbedtls_to_psa_error( + mbedtls_ecdh_calc_secret( &ecdh, + shared_secret_length, + shared_secret, shared_secret_size, + mbedtls_ctr_drbg_random, + &global_data.ctr_drbg ) ); exit: - mbedtls_pk_free( &pk ); mbedtls_ecdh_free( &ecdh ); - return( mbedtls_to_psa_error( ret ) ); + mbedtls_ecp_keypair_free( their_key ); + mbedtls_free( their_key ); + return( status ); } #endif /* MBEDTLS_ECDH_C */ @@ -4155,7 +4316,7 @@ static psa_status_t psa_key_agreement_ecdh( const uint8_t *peer_key, * to potentially free embedded data structures and wipe confidential data. */ static psa_status_t psa_key_agreement_internal( psa_crypto_generator_t *generator, - key_slot_t *private_key, + psa_key_slot_t *private_key, const uint8_t *peer_key, size_t peer_key_length, psa_algorithm_t alg ) @@ -4196,17 +4357,17 @@ static psa_status_t psa_key_agreement_internal( psa_crypto_generator_t *generato NULL, 0, NULL, 0, PSA_GENERATOR_UNBRIDLED_CAPACITY ); exit: - mbedtls_zeroize( shared_secret, shared_secret_length ); + mbedtls_platform_zeroize( shared_secret, shared_secret_length ); return( status ); } psa_status_t psa_key_agreement( psa_crypto_generator_t *generator, - psa_key_slot_t private_key, + psa_key_handle_t private_key, const uint8_t *peer_key, size_t peer_key_length, psa_algorithm_t alg ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; if( ! PSA_ALG_IS_KEY_AGREEMENT( alg ) ) return( PSA_ERROR_INVALID_ARGUMENT ); @@ -4241,46 +4402,11 @@ psa_status_t psa_generate_random( uint8_t *output, #if ( defined(MBEDTLS_ENTROPY_NV_SEED) && defined(MBEDTLS_PSA_HAS_ITS_IO) ) -/* Support function for error conversion between psa_its error codes to psa crypto */ -static psa_status_t its_to_psa_error( psa_its_status_t ret ) -{ - switch( ret ) - { - case PSA_ITS_SUCCESS: - return( PSA_SUCCESS ); - - case PSA_ITS_ERROR_KEY_NOT_FOUND: - return( PSA_ERROR_EMPTY_SLOT ); - - case PSA_ITS_ERROR_STORAGE_FAILURE: - return( PSA_ERROR_STORAGE_FAILURE ); - - case PSA_ITS_ERROR_INSUFFICIENT_SPACE: - return( PSA_ERROR_INSUFFICIENT_STORAGE ); - - case PSA_ITS_ERROR_INVALID_KEY: - case PSA_ITS_ERROR_OFFSET_INVALID: - case PSA_ITS_ERROR_INCORRECT_SIZE: - case PSA_ITS_ERROR_BAD_POINTER: - return( PSA_ERROR_INVALID_ARGUMENT ); - - case PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED: - return( PSA_ERROR_NOT_SUPPORTED ); - - case PSA_ITS_ERROR_WRITE_ONCE: - return( PSA_ERROR_OCCUPIED_SLOT ); - - default: - return( PSA_ERROR_UNKNOWN_ERROR ); - } -} - psa_status_t mbedtls_psa_inject_entropy( const unsigned char *seed, size_t seed_size ) { psa_status_t status; - psa_its_status_t its_status; - struct psa_its_info_t p_info; + struct psa_storage_info_t p_info; if( global_data.initialized ) return( PSA_ERROR_NOT_PERMITTED ); @@ -4289,15 +4415,13 @@ psa_status_t mbedtls_psa_inject_entropy( const unsigned char *seed, ( seed_size > MBEDTLS_ENTROPY_MAX_SEED_SIZE ) ) return( PSA_ERROR_INVALID_ARGUMENT ); - its_status = psa_its_get_info( PSA_CRYPTO_ITS_RANDOM_SEED_UID, &p_info ); - status = its_to_psa_error( its_status ); + status = psa_its_get_info( PSA_CRYPTO_ITS_RANDOM_SEED_UID, &p_info ); - if( PSA_ITS_ERROR_KEY_NOT_FOUND == its_status ) /* No seed exists */ + if( PSA_ERROR_DOES_NOT_EXIST == status ) /* No seed exists */ { - its_status = psa_its_set( PSA_CRYPTO_ITS_RANDOM_SEED_UID, seed_size, seed, 0 ); - status = its_to_psa_error( its_status ); + status = psa_its_set( PSA_CRYPTO_ITS_RANDOM_SEED_UID, seed_size, seed, 0 ); } - else if( PSA_ITS_SUCCESS == its_status ) + else if( PSA_SUCCESS == status ) { /* You should not be here. Seed needs to be injected only once */ status = PSA_ERROR_NOT_PERMITTED; @@ -4306,19 +4430,19 @@ psa_status_t mbedtls_psa_inject_entropy( const unsigned char *seed, } #endif -psa_status_t psa_generate_key( psa_key_slot_t key, +psa_status_t psa_generate_key( psa_key_handle_t handle, psa_key_type_t type, size_t bits, const void *extra, size_t extra_size ) { - key_slot_t *slot; + psa_key_slot_t *slot; psa_status_t status; if( extra == NULL && extra_size != 0 ) return( PSA_ERROR_INVALID_ARGUMENT ); - status = psa_get_empty_key_slot( key, &slot ); + status = psa_get_empty_key_slot( handle, &slot ); if( status != PSA_SUCCESS ) return( status ); @@ -4427,7 +4551,7 @@ psa_status_t psa_generate_key( psa_key_slot_t key, #if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) if( slot->lifetime == PSA_KEY_LIFETIME_PERSISTENT ) { - return( psa_save_generated_persistent_key( key, slot, bits ) ); + return( psa_save_generated_persistent_key( slot, bits ) ); } #endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ @@ -4439,51 +4563,71 @@ psa_status_t psa_generate_key( psa_key_slot_t key, /* Module setup */ /****************************************************************/ -void mbedtls_psa_crypto_free( void ) +psa_status_t mbedtls_psa_crypto_configure_entropy_sources( + void (* entropy_init )( mbedtls_entropy_context *ctx ), + void (* entropy_free )( mbedtls_entropy_context *ctx ) ) { - psa_key_slot_t key; - key_slot_t *slot; - psa_status_t status; + if( global_data.rng_state != RNG_NOT_INITIALIZED ) + return( PSA_ERROR_BAD_STATE ); + global_data.entropy_init = entropy_init; + global_data.entropy_free = entropy_free; + return( PSA_SUCCESS ); +} - for( key = 1; key <= PSA_KEY_SLOT_COUNT; key++ ) +void mbedtls_psa_crypto_free( void ) +{ + psa_wipe_all_key_slots( ); + if( global_data.rng_state != RNG_NOT_INITIALIZED ) { - status = psa_get_key_slot( key, &slot ); - if( status != PSA_SUCCESS ) - continue; - psa_remove_key_data_from_memory( slot ); - /* Zeroize the slot to wipe metadata such as policies. */ - mbedtls_zeroize( slot, sizeof( *slot ) ); + mbedtls_ctr_drbg_free( &global_data.ctr_drbg ); + global_data.entropy_free( &global_data.entropy ); } - mbedtls_ctr_drbg_free( &global_data.ctr_drbg ); - mbedtls_entropy_free( &global_data.entropy ); - mbedtls_zeroize( &global_data, sizeof( global_data ) ); + /* Wipe all remaining data, including configuration. + * In particular, this sets all state indicator to the value + * indicating "uninitialized". */ + mbedtls_platform_zeroize( &global_data, sizeof( global_data ) ); } psa_status_t psa_crypto_init( void ) { - int ret; + psa_status_t status; const unsigned char drbg_seed[] = "PSA"; + /* Double initialization is explicitly allowed. */ if( global_data.initialized != 0 ) return( PSA_SUCCESS ); - mbedtls_zeroize( &global_data, sizeof( global_data ) ); - mbedtls_entropy_init( &global_data.entropy ); + /* Set default configuration if + * mbedtls_psa_crypto_configure_entropy_sources() hasn't been called. */ + if( global_data.entropy_init == NULL ) + global_data.entropy_init = mbedtls_entropy_init; + if( global_data.entropy_free == NULL ) + global_data.entropy_free = mbedtls_entropy_free; + + /* Initialize the random generator. */ + global_data.entropy_init( &global_data.entropy ); mbedtls_ctr_drbg_init( &global_data.ctr_drbg ); + global_data.rng_state = RNG_INITIALIZED; + status = mbedtls_to_psa_error( + mbedtls_ctr_drbg_seed( &global_data.ctr_drbg, + mbedtls_entropy_func, + &global_data.entropy, + drbg_seed, sizeof( drbg_seed ) - 1 ) ); + if( status != PSA_SUCCESS ) + goto exit; + global_data.rng_state = RNG_SEEDED; - ret = mbedtls_ctr_drbg_seed( &global_data.ctr_drbg, - mbedtls_entropy_func, - &global_data.entropy, - drbg_seed, sizeof( drbg_seed ) - 1 ); - if( ret != 0 ) + status = psa_initialize_key_slots( ); + if( status != PSA_SUCCESS ) goto exit; + /* All done. */ global_data.initialized = 1; exit: - if( ret != 0 ) + if( status != PSA_SUCCESS ) mbedtls_psa_crypto_free( ); - return( mbedtls_to_psa_error( ret ) ); + return( status ); } #endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h new file mode 100644 index 00000000000..0f756245974 --- /dev/null +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h @@ -0,0 +1,99 @@ +/* + * PSA crypto core internal interfaces + */ +/* 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_CORE_H +#define PSA_CRYPTO_CORE_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "psa/crypto.h" + +#include "mbedtls/ecp.h" +#include "mbedtls/rsa.h" + +/** The data structure representing a key slot, containing key material + * and metadata for one key. + */ +typedef struct +{ + psa_key_type_t type; + psa_key_policy_t policy; + psa_key_lifetime_t lifetime; + psa_key_file_id_t persistent_storage_id; + unsigned allocated : 1; + union + { + struct raw_data + { + uint8_t *data; + size_t bytes; + } raw; +#if defined(MBEDTLS_RSA_C) + mbedtls_rsa_context *rsa; +#endif /* MBEDTLS_RSA_C */ +#if defined(MBEDTLS_ECP_C) + mbedtls_ecp_keypair *ecp; +#endif /* MBEDTLS_ECP_C */ + } data; +} psa_key_slot_t; + +/** Completely wipe a slot in memory, including its policy. + * + * Persistent storage is not affected. + * + * \param[in,out] slot The key slot to wipe. + * + * \retval PSA_SUCCESS + * Success. This includes the case of a key slot that was + * already fully wiped. + * \retval PSA_ERROR_TAMPERING_DETECTED + */ +psa_status_t psa_wipe_key_slot( psa_key_slot_t *slot ); + +/** Import key data into a slot. + * + * `slot->type` must have been set previously. + * This function assumes that the slot does not contain any key material yet. + * On failure, the slot content is unchanged. + * + * Persistent storage is not affected. + * + * \param[in,out] slot The key slot to import data into. + * Its `type` field must have previously been set to + * the desired key type. + * It must not contain any key material yet. + * \param[in] data Buffer containing the key material to parse and import. + * \param data_length Size of \p data in bytes. + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_INVALID_ARGUMENT + * \retval PSA_ERROR_NOT_SUPPORTED + * \retval PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t psa_import_key_into_slot( psa_key_slot_t *slot, + const uint8_t *data, + size_t data_length ); + +#endif /* PSA_CRYPTO_CORE_H */ diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h new file mode 100644 index 00000000000..642652a4796 --- /dev/null +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h @@ -0,0 +1,79 @@ +/** + * \file psa_crypto_invasive.h + * + * \brief PSA cryptography module: invasive interfaces for test only. + * + * The interfaces in this file are intended for testing purposes only. + * They MUST NOT be made available to clients over IPC in integrations + * with isolation, and they SHOULD NOT be made available in library + * integrations except when building the library for testing. + */ +/* + * 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_INVASIVE_H +#define PSA_CRYPTO_INVASIVE_H + +#if defined(MBEDTLS_CONFIG_FILE) +#include MBEDTLS_CONFIG_FILE +#else +#include "mbedtls/config.h" +#endif + +#include "psa/crypto.h" + +#include "mbedtls/entropy.h" + +/** \brief Configure entropy sources. + * + * This function may only be called before a call to psa_crypto_init(), + * or after a call to mbedtls_psa_crypto_free() and before any + * subsequent call to psa_crypto_init(). + * + * This function is only intended for test purposes. The functionality + * it provides is also useful for system integrators, but + * system integrators should configure entropy drivers instead of + * breaking through to the Mbed TLS API. + * + * \param entropy_init Function to initialize the entropy context + * and set up the desired entropy sources. + * It is called by psa_crypto_init(). + * By default this is mbedtls_entropy_init(). + * This function cannot report failures directly. + * To indicate a failure, set the entropy context + * to a state where mbedtls_entropy_func() will + * return an error. + * \param entropy_free Function to free the entropy context + * and associated resources. + * It is called by mbedtls_psa_crypto_free(). + * By default this is mbedtls_entropy_free(). + * + * \retval PSA_SUCCESS + * Success. + * \retval PSA_ERROR_NOT_PERMITTED + * The caller does not have the permission to configure + * entropy sources. + * \retval PSA_ERROR_BAD_STATE + * The library has already been initialized. + */ +psa_status_t mbedtls_psa_crypto_configure_entropy_sources( + void (* entropy_init )( mbedtls_entropy_context *ctx ), + void (* entropy_free )( mbedtls_entropy_context *ctx ) ); + +#endif /* PSA_CRYPTO_INVASIVE_H */ diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h new file mode 100644 index 00000000000..938bfe1decd --- /dev/null +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h @@ -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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_SERVICE_INTEGRATION_H +#define PSA_CRYPTO_SERVICE_INTEGRATION_H + +/* + * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is being built for SPM + * (Secure Partition Manager) integration which separates the code into two + * parts: NSPE (Non-Secure Processing Environment) and SPE (Secure Processing + * Environment). When building for the SPE, an additional header file should be + * included. + */ +#if defined(MBEDTLS_PSA_CRYPTO_SPM) +/* + * PSA_CRYPTO_SECURE means that the file which included this file is being + * compiled for SPE. The files crypto_structs.h and crypto_types.h have + * different implementations for NSPE and SPE and are compiled according to this + * flag. + */ +#define PSA_CRYPTO_SECURE 1 +#include "crypto_spe.h" +#endif // MBEDTLS_PSA_CRYPTO_SPM + +#endif // PSA_CRYPTO_SERVICE_INTEGRATION_H diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.c b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.c new file mode 100644 index 00000000000..33c03a79918 --- /dev/null +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.c @@ -0,0 +1,295 @@ +/* + * PSA crypto layer on top of Mbed TLS crypto + */ +/* 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#include "psa_crypto_service_integration.h" +#include "psa/crypto.h" + +#include "psa_crypto_core.h" +#include "psa_crypto_slot_management.h" +#include "psa_crypto_storage.h" + +#include +#include +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +#define ARRAY_LENGTH( array ) ( sizeof( array ) / sizeof( *( array ) ) ) + +typedef struct +{ + psa_key_slot_t key_slots[PSA_KEY_SLOT_COUNT]; + unsigned key_slots_initialized : 1; +} psa_global_data_t; + +static psa_global_data_t global_data; + +/* Access a key slot at the given handle. The handle of a key slot is + * the index of the slot in the global slot array, plus one so that handles + * start at 1 and not 0. */ +psa_status_t psa_get_key_slot( psa_key_handle_t handle, + psa_key_slot_t **p_slot ) +{ + psa_key_slot_t *slot = NULL; + + if( ! global_data.key_slots_initialized ) + return( PSA_ERROR_BAD_STATE ); + + /* 0 is not a valid handle under any circumstance. This + * implementation provides slots number 1 to N where N is the + * number of available slots. */ + if( handle == 0 || handle > ARRAY_LENGTH( global_data.key_slots ) ) + return( PSA_ERROR_INVALID_HANDLE ); + slot = &global_data.key_slots[handle - 1]; + + /* If the slot hasn't been allocated, the handle is invalid. */ + if( ! slot->allocated ) + return( PSA_ERROR_INVALID_HANDLE ); + + *p_slot = slot; + return( PSA_SUCCESS ); +} + +psa_status_t psa_initialize_key_slots( void ) +{ + /* Nothing to do: program startup and psa_wipe_all_key_slots() both + * guarantee that the key slots are initialized to all-zero, which + * means that all the key slots are in a valid, empty state. */ + global_data.key_slots_initialized = 1; + return( PSA_SUCCESS ); +} + +void psa_wipe_all_key_slots( void ) +{ + psa_key_handle_t key; + for( key = 1; key <= PSA_KEY_SLOT_COUNT; key++ ) + { + psa_key_slot_t *slot = &global_data.key_slots[key - 1]; + (void) psa_wipe_key_slot( slot ); + } + global_data.key_slots_initialized = 0; +} + +/** Find a free key slot and mark it as in use. + * + * \param[out] handle On success, a slot number that is not in use. This + * value can be used as a handle to the slot. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +static psa_status_t psa_internal_allocate_key_slot( psa_key_handle_t *handle ) +{ + for( *handle = PSA_KEY_SLOT_COUNT; *handle != 0; --( *handle ) ) + { + psa_key_slot_t *slot = &global_data.key_slots[*handle - 1]; + if( ! slot->allocated ) + { + slot->allocated = 1; + return( PSA_SUCCESS ); + } + } + return( PSA_ERROR_INSUFFICIENT_MEMORY ); +} + +/** Wipe a key slot and mark it as available. + * + * This does not affect persistent storage. + * + * \param handle The handle to the key slot to release. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_TAMPERING_DETECTED + */ +static psa_status_t psa_internal_release_key_slot( psa_key_handle_t handle ) +{ + psa_key_slot_t *slot; + psa_status_t status; + + status = psa_get_key_slot( handle, &slot ); + if( status != PSA_SUCCESS ) + return( status ); + + return( psa_wipe_key_slot( slot ) ); +} + +psa_status_t psa_allocate_key( psa_key_handle_t *handle ) +{ + *handle = 0; + return( psa_internal_allocate_key_slot( handle ) ); +} + +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) +static psa_status_t psa_load_persistent_key_into_slot( psa_key_slot_t *p_slot ) +{ + psa_status_t status = PSA_SUCCESS; + uint8_t *key_data = NULL; + size_t key_data_length = 0; + + status = psa_load_persistent_key( p_slot->persistent_storage_id, + &( p_slot )->type, + &( p_slot )->policy, &key_data, + &key_data_length ); + if( status != PSA_SUCCESS ) + goto exit; + status = psa_import_key_into_slot( p_slot, + key_data, key_data_length ); +exit: + psa_free_persistent_key_data( key_data, key_data_length ); + return( status ); +} + +/** Check whether a key identifier is acceptable. + * + * For backward compatibility, key identifiers that were valid in a + * past released version must remain valid, unless a migration path + * is provided. + * + * \param file_id The key identifier to check. + * + * \return 1 if \p file_id is acceptable, otherwise 0. + */ +static int psa_is_key_id_valid( psa_key_file_id_t file_id ) +{ + psa_app_key_id_t key_id = PSA_KEY_FILE_GET_KEY_ID( file_id ); + /* Reject id=0 because by general library conventions, 0 is an invalid + * value wherever possible. */ + if( key_id == 0 ) + return( 0 ); + /* Reject high values because the file names are reserved for the + * library's internal use. */ + if( key_id > PSA_MAX_PERSISTENT_KEY_IDENTIFIER ) + return( 0 ); + return( 1 ); +} +#endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ + +/** Declare a slot as persistent and load it from storage. + * + * This function may only be called immediately after a successful call + * to psa_internal_allocate_key_slot(). + * + * \param handle A handle to a key slot freshly allocated with + * psa_internal_allocate_key_slot(). + * + * \retval #PSA_SUCCESS + * The slot content was loaded successfully. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There is no content for this slot in persistent storage. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p id is not acceptable. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_STORAGE_FAILURE + */ +static psa_status_t psa_internal_make_key_persistent( psa_key_handle_t handle, + psa_key_file_id_t id ) +{ +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) + psa_key_slot_t *slot; + psa_status_t status; + + if( ! psa_is_key_id_valid( id ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + status = psa_get_key_slot( handle, &slot ); + if( status != PSA_SUCCESS ) + return( status ); + + slot->lifetime = PSA_KEY_LIFETIME_PERSISTENT; + slot->persistent_storage_id = id; + status = psa_load_persistent_key_into_slot( slot ); + + return( status ); + +#else /* MBEDTLS_PSA_CRYPTO_STORAGE_C */ + (void) handle; + (void) id; + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* !MBEDTLS_PSA_CRYPTO_STORAGE_C */ +} + +static psa_status_t persistent_key_setup( psa_key_lifetime_t lifetime, + psa_key_file_id_t id, + psa_key_handle_t *handle, + psa_status_t wanted_load_status ) +{ + psa_status_t status; + + *handle = 0; + + if( lifetime != PSA_KEY_LIFETIME_PERSISTENT ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + status = psa_internal_allocate_key_slot( handle ); + if( status != PSA_SUCCESS ) + return( status ); + + status = psa_internal_make_key_persistent( *handle, id ); + if( status != wanted_load_status ) + { + psa_internal_release_key_slot( *handle ); + *handle = 0; + } + return( status ); +} + +psa_status_t psa_open_key( psa_key_lifetime_t lifetime, + psa_key_file_id_t id, + psa_key_handle_t *handle ) +{ + return( persistent_key_setup( lifetime, id, handle, PSA_SUCCESS ) ); +} + +psa_status_t psa_create_key( psa_key_lifetime_t lifetime, + psa_key_file_id_t id, + psa_key_handle_t *handle ) +{ + psa_status_t status; + + status = persistent_key_setup( lifetime, id, handle, + PSA_ERROR_DOES_NOT_EXIST ); + switch( status ) + { + case PSA_SUCCESS: return( PSA_ERROR_ALREADY_EXISTS ); + case PSA_ERROR_DOES_NOT_EXIST: return( PSA_SUCCESS ); + default: return( status ); + } +} + +psa_status_t psa_close_key( psa_key_handle_t handle ) +{ + return( psa_internal_release_key_slot( handle ) ); +} + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h new file mode 100644 index 00000000000..6746bad91d6 --- /dev/null +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h @@ -0,0 +1,58 @@ +/* + * PSA crypto layer on top of Mbed TLS crypto + */ +/* 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_SLOT_MANAGEMENT_H +#define PSA_CRYPTO_SLOT_MANAGEMENT_H + +/* Number of key slots (plus one because 0 is not used). + * The value is a compile-time constant for now, for simplicity. */ +#define PSA_KEY_SLOT_COUNT 32 + +/** Access a key slot at the given handle. + * + * \param handle Key handle to query. + * \param[out] p_slot On success, `*p_slot` contains a pointer to the + * key slot in memory designated by \p handle. + * + * \retval PSA_SUCCESS + * Success: \p handle is a handle to `*p_slot`. Note that `*p_slot` + * may be empty or occupied. + * \retval PSA_ERROR_INVALID_HANDLE + * \p handle is out of range or is not in use. + * \retval PSA_ERROR_BAD_STATE + * The library has not been initialized. + */ +psa_status_t psa_get_key_slot( psa_key_handle_t handle, + psa_key_slot_t **p_slot ); + +/** Initialize the key slot structures. + * + * \retval PSA_SUCCESS + * Currently this function always succeeds. + */ +psa_status_t psa_initialize_key_slots( void ); + +/** Delete all data from key slots in memory. + * + * This does not affect persistent storage. */ +void psa_wipe_all_key_slots( void ); + +#endif /* PSA_CRYPTO_SLOT_MANAGEMENT_H */ diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.c b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.c index 0a5805b62b4..84a6ed55853 100644 --- a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.c +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.c @@ -30,6 +30,7 @@ #include #include +#include "psa_crypto_service_integration.h" #include "psa/crypto.h" #include "psa_crypto_storage.h" #include "psa_crypto_storage_backend.h" @@ -38,6 +39,7 @@ #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #else +#include #define mbedtls_calloc calloc #define mbedtls_free free #endif @@ -147,7 +149,7 @@ psa_status_t psa_parse_key_data_from_storage( const uint8_t *storage_data, return( PSA_SUCCESS ); } -psa_status_t psa_save_persistent_key( const psa_key_slot_t key, +psa_status_t psa_save_persistent_key( const psa_key_file_id_t key, const psa_key_type_t type, const psa_key_policy_t *policy, const uint8_t *data, @@ -185,7 +187,7 @@ void psa_free_persistent_key_data( uint8_t *key_data, size_t key_data_length ) mbedtls_free( key_data ); } -psa_status_t psa_load_persistent_key( psa_key_slot_t key, +psa_status_t psa_load_persistent_key( psa_key_file_id_t key, psa_key_type_t *type, psa_key_policy_t *policy, uint8_t **data, diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h index 167b0db0586..7e5aae9f986 100644 --- a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h @@ -44,6 +44,23 @@ extern "C" { * inadvertently store an obscene amount of data) */ #define PSA_CRYPTO_MAX_STORAGE_SIZE ( 30 * 1024 ) +/** The maximum permitted persistent slot number. + * + * In Mbed Crypto 0.1.0b: + * - Using the file backend, all key ids are ok except 0. + * - Using the ITS backend, all key ids are ok except 0xFFFFFF52 + * (#PSA_CRYPTO_ITS_RANDOM_SEED_UID) for which the file contains the + * device's random seed (if this feature is enabled). + * - Only key ids from 1 to #PSA_KEY_SLOT_COUNT are actually used. + * + * Since we need to preserve the random seed, avoid using that key slot. + * Reserve a whole range of key slots just in case something else comes up. + * + * This limitation will probably become moot when we implement client + * separation for key storage. + */ +#define PSA_MAX_PERSISTENT_KEY_IDENTIFIER 0xfffeffff + /** * \brief Format key data and metadata and save to a location for given key * slot. @@ -56,20 +73,20 @@ extern "C" { * already occupied non-persistent key, as well as validating the key data. * * - * \param key Slot number of the key to be stored. This must be a - * valid slot for a key of the chosen type. This should be - * an occupied key slot with an unoccupied corresponding - * storage location. + * \param key Persistent identifier of the key to be stored. This + * should be an unoccupied storage location. * \param type Key type (a \c PSA_KEY_TYPE_XXX value). * \param[in] policy The key policy to save. * \param[in] data Buffer containing the key data. * \param data_length The number of bytes that make up the key data. * * \retval PSA_SUCCESS + * \retval PSA_ERROR_INSUFFICIENT_MEMORY * \retval PSA_ERROR_INSUFFICIENT_STORAGE * \retval PSA_ERROR_STORAGE_FAILURE + * \retval PSA_ERROR_ALREADY_EXISTS */ -psa_status_t psa_save_persistent_key( const psa_key_slot_t key, +psa_status_t psa_save_persistent_key( const psa_key_file_id_t key, const psa_key_type_t type, const psa_key_policy_t *policy, const uint8_t *data, @@ -87,10 +104,8 @@ psa_status_t psa_save_persistent_key( const psa_key_slot_t key, * this function to zeroize and free this buffer, regardless of whether this * function succeeds or fails. * - * \param key Slot number whose content is to be loaded. This - * must be an unoccupied key slot with an occupied - * corresponding storage location. The key slot - * lifetime must be set to persistent. + * \param key Persistent identifier of the key to be loaded. This + * should be an occupied storage location. * \param[out] type On success, the key type (a \c PSA_KEY_TYPE_XXX * value). * \param[out] policy On success, the key's policy. @@ -100,8 +115,9 @@ psa_status_t psa_save_persistent_key( const psa_key_slot_t key, * \retval PSA_SUCCESS * \retval PSA_ERROR_INSUFFICIENT_MEMORY * \retval PSA_ERROR_STORAGE_FAILURE + * \retval PSA_ERROR_DOES_NOT_EXIST */ -psa_status_t psa_load_persistent_key( psa_key_slot_t key, +psa_status_t psa_load_persistent_key( psa_key_file_id_t key, psa_key_type_t *type, psa_key_policy_t *policy, uint8_t **data, @@ -110,16 +126,18 @@ psa_status_t psa_load_persistent_key( psa_key_slot_t key, /** * \brief Remove persistent data for the given key slot number. * - * \param key Slot number whose content is to be removed + * \param key Persistent identifier of the key to remove * from persistent storage. * * \retval PSA_SUCCESS + * The key was successfully removed, + * or the key did not exist. * \retval PSA_ERROR_STORAGE_FAILURE */ -psa_status_t psa_destroy_persistent_key( const psa_key_slot_t key ); +psa_status_t psa_destroy_persistent_key( const psa_key_file_id_t key ); /** - * \brief Zeroizes and frees the given buffer. + * \brief Free the temporary buffer allocated by psa_load_persistent_key(). * * This function must be called at some point after psa_load_persistent_key() * to zeroize and free the memory allocated to the buffer in that function. diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_backend.h b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_backend.h index 3ca9a1d74fc..dd534d2ff1f 100644 --- a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_backend.h +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_backend.h @@ -47,15 +47,16 @@ extern "C" { * This function reads data from a storage backend and returns the data in a * buffer. * - * \param key Slot number whose content is to be loaded. This must - * be a key slot whose lifetime is set to persistent. - * \param[out] data Buffer where the data is to be written. - * \param data_size Size of the \c data buffer in bytes. + * \param key Persistent identifier of the key to be loaded. This + * should be an occupied storage location. + * \param[out] data Buffer where the data is to be written. + * \param data_size Size of the \c data buffer in bytes. * * \retval PSA_SUCCESS * \retval PSA_ERROR_STORAGE_FAILURE + * \retval PSA_ERROR_DOES_NOT_EXIST */ -psa_status_t psa_crypto_storage_load( const psa_key_slot_t key, uint8_t *data, +psa_status_t psa_crypto_storage_load( const psa_key_file_id_t key, uint8_t *data, size_t data_size ); /** @@ -63,7 +64,8 @@ psa_status_t psa_crypto_storage_load( const psa_key_slot_t key, uint8_t *data, * * This function stores the given data buffer to a persistent storage. * - * \param key Slot number whose content is to be stored. + * \param key Persistent identifier of the key to be stored. This + * should be an unoccupied storage location. * \param[in] data Buffer containing the data to be stored. * \param data_length The number of bytes * that make up the data. @@ -71,8 +73,9 @@ psa_status_t psa_crypto_storage_load( const psa_key_slot_t key, uint8_t *data, * \retval PSA_SUCCESS * \retval PSA_ERROR_INSUFFICIENT_STORAGE * \retval PSA_ERROR_STORAGE_FAILURE + * \retval PSA_ERROR_ALREADY_EXISTS */ -psa_status_t psa_crypto_storage_store( const psa_key_slot_t key, +psa_status_t psa_crypto_storage_store( const psa_key_file_id_t key, const uint8_t *data, size_t data_length ); @@ -82,26 +85,26 @@ psa_status_t psa_crypto_storage_store( const psa_key_slot_t key, * This function checks if any key data or metadata exists for the key slot in * the persistent storage. * - * \param key Slot number whose content is to be checked. + * \param key Persistent identifier to check. * * \retval 0 * No persistent data present for slot number * \retval 1 * Persistent data present for slot number */ -int psa_is_key_present_in_storage( const psa_key_slot_t key ); +int psa_is_key_present_in_storage( const psa_key_file_id_t key ); /** * \brief Get data length for given key slot number. * - * \param key Slot number whose stored data length is to be obtained. - * \param[out] data_length The number of bytes - * that make up the data. + * \param key Persistent identifier whose stored data length + * is to be obtained. + * \param[out] data_length The number of bytes that make up the data. * * \retval PSA_SUCCESS * \retval PSA_ERROR_STORAGE_FAILURE */ -psa_status_t psa_crypto_storage_get_data_length( const psa_key_slot_t key, +psa_status_t psa_crypto_storage_get_data_length( const psa_key_file_id_t key, size_t *data_length ); diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_file.c b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_file.c index 03c711af306..c4a534fe36a 100644 --- a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_file.c +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage_file.c @@ -36,6 +36,7 @@ #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #else +#include #define mbedtls_snprintf snprintf #endif @@ -48,15 +49,16 @@ enum { MAX_LOCATION_LEN = sizeof(CRYPTO_STORAGE_FILE_LOCATION) + 40 }; -static void key_slot_to_location( const psa_key_slot_t key, - char *location, - size_t location_size ) +static void key_id_to_location( const psa_key_file_id_t key, + char *location, + size_t location_size ) { mbedtls_snprintf( location, location_size, - CRYPTO_STORAGE_FILE_LOCATION "psa_key_slot_%d", key ); + CRYPTO_STORAGE_FILE_LOCATION "psa_key_slot_%lu", + (unsigned long) key ); } -psa_status_t psa_crypto_storage_load( const psa_key_slot_t key, uint8_t *data, +psa_status_t psa_crypto_storage_load( const psa_key_file_id_t key, uint8_t *data, size_t data_size ) { psa_status_t status = PSA_SUCCESS; @@ -64,7 +66,7 @@ psa_status_t psa_crypto_storage_load( const psa_key_slot_t key, uint8_t *data, size_t num_read; char slot_location[MAX_LOCATION_LEN]; - key_slot_to_location( key, slot_location, MAX_LOCATION_LEN ); + key_id_to_location( key, slot_location, MAX_LOCATION_LEN ); file = fopen( slot_location, "rb" ); if( file == NULL ) { @@ -81,12 +83,12 @@ psa_status_t psa_crypto_storage_load( const psa_key_slot_t key, uint8_t *data, return( status ); } -int psa_is_key_present_in_storage( const psa_key_slot_t key ) +int psa_is_key_present_in_storage( const psa_key_file_id_t key ) { char slot_location[MAX_LOCATION_LEN]; FILE *file; - key_slot_to_location( key, slot_location, MAX_LOCATION_LEN ); + key_id_to_location( key, slot_location, MAX_LOCATION_LEN ); file = fopen( slot_location, "r" ); if( file == NULL ) @@ -99,7 +101,7 @@ int psa_is_key_present_in_storage( const psa_key_slot_t key ) return( 1 ); } -psa_status_t psa_crypto_storage_store( const psa_key_slot_t key, +psa_status_t psa_crypto_storage_store( const psa_key_file_id_t key, const uint8_t *data, size_t data_length ) { @@ -114,10 +116,10 @@ psa_status_t psa_crypto_storage_store( const psa_key_slot_t key, * affect actual keys. */ const char *temp_location = CRYPTO_STORAGE_FILE_LOCATION "psa_key_slot_0"; - key_slot_to_location( key, slot_location, MAX_LOCATION_LEN ); + key_id_to_location( key, slot_location, MAX_LOCATION_LEN ); if( psa_is_key_present_in_storage( key ) == 1 ) - return( PSA_ERROR_OCCUPIED_SLOT ); + return( PSA_ERROR_ALREADY_EXISTS ); file = fopen( temp_location, "wb" ); if( file == NULL ) @@ -154,12 +156,12 @@ psa_status_t psa_crypto_storage_store( const psa_key_slot_t key, return( status ); } -psa_status_t psa_destroy_persistent_key( const psa_key_slot_t key ) +psa_status_t psa_destroy_persistent_key( const psa_key_file_id_t key ) { FILE *file; char slot_location[MAX_LOCATION_LEN]; - key_slot_to_location( key, slot_location, MAX_LOCATION_LEN ); + key_id_to_location( key, slot_location, MAX_LOCATION_LEN ); /* Only try remove the file if it exists */ file = fopen( slot_location, "rb" ); @@ -173,7 +175,7 @@ psa_status_t psa_destroy_persistent_key( const psa_key_slot_t key ) return( PSA_SUCCESS ); } -psa_status_t psa_crypto_storage_get_data_length( const psa_key_slot_t key, +psa_status_t psa_crypto_storage_get_data_length( const psa_key_file_id_t key, size_t *data_length ) { psa_status_t status = PSA_SUCCESS; @@ -181,11 +183,11 @@ psa_status_t psa_crypto_storage_get_data_length( const psa_key_slot_t key, long file_size; char slot_location[MAX_LOCATION_LEN]; - key_slot_to_location( key, slot_location, MAX_LOCATION_LEN ); + key_id_to_location( key, slot_location, MAX_LOCATION_LEN ); file = fopen( slot_location, "rb" ); if( file == NULL ) - return( PSA_ERROR_EMPTY_SLOT ); + return( PSA_ERROR_DOES_NOT_EXIST ); if( fseek( file, 0, SEEK_END ) != 0 ) { 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 35caa39adcd..447c0aebb41 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 @@ -27,105 +27,87 @@ #if defined(MBEDTLS_PSA_CRYPTO_STORAGE_ITS_C) +#include "psa/error.h" +#include "psa_crypto_service_integration.h" #include "psa/crypto.h" #include "psa_crypto_storage_backend.h" -#include "psa_prot_internal_storage.h" +#include "psa/internal_trusted_storage.h" #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #endif -static psa_status_t its_to_psa_error( psa_its_status_t ret ) +/* Determine a file name (ITS file identifier) for the given key file + * identifier. The file name must be distinct from any file that is used + * for a purpose other than storing a key. Currently, the only such file + * is the random seed file whose name is PSA_CRYPTO_ITS_RANDOM_SEED_UID + * and whose value is 0xFFFFFF52. */ +static psa_storage_uid_t psa_its_identifier_of_slot( psa_key_file_id_t file_id ) { - switch( ret ) - { - case PSA_ITS_SUCCESS: - return( PSA_SUCCESS ); - - case PSA_ITS_ERROR_KEY_NOT_FOUND: - return( PSA_ERROR_EMPTY_SLOT ); - - case PSA_ITS_ERROR_STORAGE_FAILURE: - return( PSA_ERROR_STORAGE_FAILURE ); - - case PSA_ITS_ERROR_INSUFFICIENT_SPACE: - return( PSA_ERROR_INSUFFICIENT_STORAGE ); - - case PSA_ITS_ERROR_INVALID_KEY: - case PSA_ITS_ERROR_OFFSET_INVALID: - case PSA_ITS_ERROR_INCORRECT_SIZE: - case PSA_ITS_ERROR_BAD_POINTER: - return( PSA_ERROR_INVALID_ARGUMENT ); - - case PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED: - return( PSA_ERROR_NOT_SUPPORTED ); - - case PSA_ITS_ERROR_WRITE_ONCE: - return( PSA_ERROR_OCCUPIED_SLOT ); - - default: - return( PSA_ERROR_UNKNOWN_ERROR ); - } -} - -static uint32_t psa_its_identifier_of_slot( psa_key_slot_t key ) -{ - return( key ); +#if defined(MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER) && \ + defined(PSA_CRYPTO_SECURE) + /* Encode the owner in the upper 32 bits. This means that if + * owner values are nonzero (as they are on a PSA platform), + * no key file will ever have a value less than 0x100000000, so + * the whole range 0..0xffffffff is available for non-key files. */ + uint32_t unsigned_owner = (uint32_t) file_id.owner; + return( (uint64_t) unsigned_owner << 32 | file_id.key_id ); +#else + /* Use the key id directly as a file name. + * psa_is_key_file_id_valid() in psa_crypto_slot_management.c + * is responsible for ensuring that key identifiers do not have a + * value that is reserved for non-key files. */ + return( file_id ); +#endif } -psa_status_t psa_crypto_storage_load( const psa_key_slot_t key, uint8_t *data, +psa_status_t psa_crypto_storage_load( const psa_key_file_id_t key, uint8_t *data, size_t data_size ) { - psa_its_status_t ret; psa_status_t status; - uint32_t data_identifier = psa_its_identifier_of_slot( key ); - struct psa_its_info_t data_identifier_info; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; - ret = psa_its_get_info( data_identifier, &data_identifier_info ); - status = its_to_psa_error( ret ); - if( status != PSA_SUCCESS ) + status = psa_its_get_info( data_identifier, &data_identifier_info ); + if( status != PSA_SUCCESS ) return( status ); - ret = psa_its_get( data_identifier, 0, data_size, data ); - status = its_to_psa_error( ret ); + status = psa_its_get( data_identifier, 0, data_size, data ); return( status ); } -int psa_is_key_present_in_storage( const psa_key_slot_t key ) +int psa_is_key_present_in_storage( const psa_key_file_id_t key ) { - psa_its_status_t ret; - uint32_t data_identifier = psa_its_identifier_of_slot( key ); - struct psa_its_info_t data_identifier_info; + psa_status_t ret; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; ret = psa_its_get_info( data_identifier, &data_identifier_info ); - if( ret == PSA_ITS_ERROR_KEY_NOT_FOUND ) + if( ret == PSA_ERROR_DOES_NOT_EXIST ) return( 0 ); return( 1 ); } -psa_status_t psa_crypto_storage_store( const psa_key_slot_t key, +psa_status_t psa_crypto_storage_store( const psa_key_file_id_t key, const uint8_t *data, size_t data_length ) { - psa_its_status_t ret; psa_status_t status; - uint32_t data_identifier = psa_its_identifier_of_slot( key ); - struct psa_its_info_t data_identifier_info; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; if( psa_is_key_present_in_storage( key ) == 1 ) - return( PSA_ERROR_OCCUPIED_SLOT ); + return( PSA_ERROR_ALREADY_EXISTS ); - ret = psa_its_set( data_identifier, data_length, data, 0 ); - status = its_to_psa_error( ret ); + status = psa_its_set( data_identifier, data_length, data, 0 ); if( status != PSA_SUCCESS ) { return( PSA_ERROR_STORAGE_FAILURE ); } - ret = psa_its_get_info( data_identifier, &data_identifier_info ); - status = its_to_psa_error( ret ); + status = psa_its_get_info( data_identifier, &data_identifier_info ); if( status != PSA_SUCCESS ) { goto exit; @@ -143,36 +125,34 @@ psa_status_t psa_crypto_storage_store( const psa_key_slot_t key, return( status ); } -psa_status_t psa_destroy_persistent_key( const psa_key_slot_t key ) +psa_status_t psa_destroy_persistent_key( const psa_key_file_id_t key ) { - psa_its_status_t ret; - uint32_t data_identifier = psa_its_identifier_of_slot( key ); - struct psa_its_info_t data_identifier_info; + psa_status_t ret; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; ret = psa_its_get_info( data_identifier, &data_identifier_info ); - if( ret == PSA_ITS_ERROR_KEY_NOT_FOUND ) + if( ret == PSA_ERROR_DOES_NOT_EXIST ) return( PSA_SUCCESS ); - if( psa_its_remove( data_identifier ) != PSA_ITS_SUCCESS ) + if( psa_its_remove( data_identifier ) != PSA_SUCCESS ) return( PSA_ERROR_STORAGE_FAILURE ); ret = psa_its_get_info( data_identifier, &data_identifier_info ); - if( ret != PSA_ITS_ERROR_KEY_NOT_FOUND ) + if( ret != PSA_ERROR_DOES_NOT_EXIST ) return( PSA_ERROR_STORAGE_FAILURE ); return( PSA_SUCCESS ); } -psa_status_t psa_crypto_storage_get_data_length( const psa_key_slot_t key, +psa_status_t psa_crypto_storage_get_data_length( const psa_key_file_id_t key, size_t *data_length ) { - psa_its_status_t ret; psa_status_t status; - uint32_t data_identifier = psa_its_identifier_of_slot( key ); - struct psa_its_info_t data_identifier_info; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; - ret = psa_its_get_info( data_identifier, &data_identifier_info ); - status = its_to_psa_error( ret ); + status = psa_its_get_info( data_identifier, &data_identifier_info ); if( status != PSA_SUCCESS ) return( status ); diff --git a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_SPE/crypto_struct_spe.h b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_SPE/crypto_struct_spe.h index 44a1a60572f..ee3ecd776cd 100644 --- a/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_SPE/crypto_struct_spe.h +++ b/features/mbedtls/mbed-crypto/platform/TARGET_PSA/COMPONENT_SPE/crypto_struct_spe.h @@ -85,6 +85,13 @@ struct psa_hash_operation_s } ctx; }; +#define PSA_HASH_OPERATION_INIT {0, {0}} +static inline struct psa_hash_operation_s psa_hash_operation_init( void ) +{ + const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT; + return( v ); +} + #if defined(MBEDTLS_MD_C) typedef struct { @@ -116,6 +123,13 @@ struct psa_mac_operation_s } ctx; }; +#define PSA_MAC_OPERATION_INIT {0, 0, 0, 0, 0, 0, 0, {0}} +static inline struct psa_mac_operation_s psa_mac_operation_init( void ) +{ + const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT; + return( v ); +} + struct psa_cipher_operation_s { psa_algorithm_t alg; @@ -126,10 +140,18 @@ struct psa_cipher_operation_s uint8_t block_size; union { + unsigned dummy; /* Enable easier initializing of the union. */ mbedtls_cipher_context_t cipher; } ctx; }; +#define PSA_CIPHER_OPERATION_INIT {0, 0, 0, 0, 0, 0, {0}} +static inline struct psa_cipher_operation_s psa_cipher_operation_init( void ) +{ + const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT; + return( v ); +} + #if defined(MBEDTLS_MD_C) typedef struct { @@ -208,4 +230,11 @@ struct psa_key_policy_s psa_algorithm_t alg; }; +#define PSA_KEY_POLICY_INIT {0, 0} +static inline struct psa_key_policy_s psa_key_policy_init( void ) +{ + const struct psa_key_policy_s v = PSA_KEY_POLICY_INIT; + return( v ); +} + #endif /* PSA_CRYPTO_STRUCT_H */ diff --git a/features/mbedtls/mbed_lib.json b/features/mbedtls/mbed_lib.json new file mode 100644 index 00000000000..f3f5377517e --- /dev/null +++ b/features/mbedtls/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "mbedtls" +} diff --git a/features/mbedtls/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/inc/default_random_seed.h b/features/mbedtls/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/inc/default_random_seed.h index 9e203893959..5d15fb489ee 100644 --- a/features/mbedtls/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/inc/default_random_seed.h +++ b/features/mbedtls/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/inc/default_random_seed.h @@ -3,6 +3,8 @@ #ifndef DEFAULT_RANDOM_SEED_H #define DEFAULT_RANDOM_SEED_H +#include + #ifdef __cplusplus extern "C" { #endif diff --git a/features/mbedtls/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/src/default_random_seed.cpp b/features/mbedtls/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/src/default_random_seed.cpp index d7c85ac6d62..22a58f72f3c 100644 --- a/features/mbedtls/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/src/default_random_seed.cpp +++ b/features/mbedtls/platform/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/src/default_random_seed.cpp @@ -1,25 +1,17 @@ #include "mbed.h" #include "crypto.h" #include "default_random_seed.h" -#include "psa_prot_internal_storage.h" +#include "psa/internal_trusted_storage.h" int mbed_default_seed_read(unsigned char *buf, size_t buf_len) { - /* Make sure that in case of an error the value will be negative - * return (-1 * rc); - * Mbed TLS errors are negative values - */ - psa_its_status_t rc = psa_its_get(PSA_CRYPTO_ITS_RANDOM_SEED_UID, 0, buf_len, buf); - return ( -1 * rc ); + psa_status_t rc = psa_its_get(PSA_CRYPTO_ITS_RANDOM_SEED_UID, 0, buf_len, buf); + return ( rc ); } int mbed_default_seed_write(unsigned char *buf, size_t buf_len) { - psa_its_status_t rc = psa_its_set(PSA_CRYPTO_ITS_RANDOM_SEED_UID, buf_len, buf, 0); - /* Make sure that in case of an error the value will be negative - * return (-1 * rc); - * Mbed TLS errors are negative values - */ - return ( -1 * rc ); + psa_status_t rc = psa_its_set(PSA_CRYPTO_ITS_RANDOM_SEED_UID, buf_len, buf, 0); + return ( rc ); } diff --git a/features/mbedtls/platform/inc/platform_mbed.h b/features/mbedtls/platform/inc/platform_mbed.h index 9ccaf08ab0a..267b86272df 100644 --- a/features/mbedtls/platform/inc/platform_mbed.h +++ b/features/mbedtls/platform/inc/platform_mbed.h @@ -17,6 +17,24 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ + +#ifndef __PLATFORM_MBED__H__ +#define __PLATFORM_MBED__H__ + +#if (defined(TARGET_PSA) && defined(MBEDTLS_ENTROPY_NV_SEED)) + +#include "default_random_seed.h" + +#if !defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) +#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO mbed_default_seed_read +#endif + +#if !defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO) +#define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO mbed_default_seed_write +#endif + +#endif // (defined(TARGET_PSA) && defined(MBEDTLS_ENTROPY_NV_SEED)) + #if DEVICE_TRNG #define MBEDTLS_ENTROPY_HARDWARE_ALT #endif @@ -31,3 +49,5 @@ #define MBEDTLS_ERR_PLATFORM_HW_FAILED -0x0080 #define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070 + +#endif // __PLATFORM_MBED__H__ diff --git a/features/mbedtls/platform/src/mbed_trng.cpp b/features/mbedtls/platform/src/mbed_trng.cpp index 53c1c210979..79fed2a7d01 100644 --- a/features/mbedtls/platform/src/mbed_trng.cpp +++ b/features/mbedtls/platform/src/mbed_trng.cpp @@ -17,17 +17,19 @@ #if DEVICE_TRNG #include "hal/trng_api.h" +#include "platform/SingletonPtr.h" #include "platform/PlatformMutex.h" +SingletonPtr mbedtls_mutex; + 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(); + mbedtls_mutex->lock(); trng_init(&trng_obj); int ret = trng_get_bytes(&trng_obj, output, len, olen); trng_free(&trng_obj); - trng_mutex.unlock(); + mbedtls_mutex->unlock(); return ret; } diff --git a/features/mbedtls/platform/src/platform_alt.c b/features/mbedtls/platform/src/platform_alt.c deleted file mode 100644 index c0254de9dcd..00000000000 --- a/features/mbedtls/platform/src/platform_alt.c +++ /dev/null @@ -1,52 +0,0 @@ - /* - * platform_alt.c - * - * 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 "mbedtls/platform.h" -#if defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT) -#include "mbed_critical.h" - -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 * )&plat_ctx.reference_count, 1 ); - - if( plat_ctx.reference_count == 1 ) - { - /* call platform specific code to setup crypto driver */ - 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 * )&plat_ctx.reference_count, 1 ); - if( plat_ctx.reference_count < 1 ) - { - /* call platform specific code to terminate crypto driver */ - crypto_platform_terminate( &plat_ctx.platform_impl_ctx ); - plat_ctx.reference_count = 0; - } -} - -#endif /* MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT*/ diff --git a/features/mbedtls/platform/src/platform_alt.cpp b/features/mbedtls/platform/src/platform_alt.cpp new file mode 100644 index 00000000000..c6f0abce669 --- /dev/null +++ b/features/mbedtls/platform/src/platform_alt.cpp @@ -0,0 +1,57 @@ + /* + * platform_alt.c + * + * 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 "mbedtls/platform.h" +#if defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT) +#include "platform/SingletonPtr.h" +#include "platform/PlatformMutex.h" + +mbedtls_platform_context plat_ctx = { { 0 } }; +extern SingletonPtr mbedtls_mutex; + +int mbedtls_platform_setup( mbedtls_platform_context *unused_ctx ) +{ + int ret = 0; + mbedtls_mutex->lock(); + ++plat_ctx.reference_count; + + if( plat_ctx.reference_count == 1 ) + { + /* call platform specific code to setup crypto driver */ + ret = crypto_platform_setup( &plat_ctx.platform_impl_ctx ); + } + mbedtls_mutex->unlock(); + return ( ret ); +} + +void mbedtls_platform_teardown( mbedtls_platform_context *unused_ctx ) +{ + mbedtls_mutex->lock(); + --plat_ctx.reference_count; + if( plat_ctx.reference_count < 1 ) + { + /* call platform specific code to terminate crypto driver */ + crypto_platform_terminate( &plat_ctx.platform_impl_ctx ); + plat_ctx.reference_count = 0; + } + mbedtls_mutex->unlock(); +} + +#endif /* MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT*/ diff --git a/features/nanostack/coap-service/mbed_lib.json b/features/nanostack/coap-service/mbed_lib.json new file mode 100644 index 00000000000..d0395898829 --- /dev/null +++ b/features/nanostack/coap-service/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "coap-service" +} diff --git a/features/nanostack/coap-service/source/coap_security_handler.c b/features/nanostack/coap-service/source/coap_security_handler.c index 0cd28220bf5..cf124ddf12f 100644 --- a/features/nanostack/coap-service/source/coap_security_handler.c +++ b/features/nanostack/coap-service/source/coap_security_handler.c @@ -102,6 +102,11 @@ static int coap_security_handler_init(coap_security_t *sec) const int entropy_source_type = MBEDTLS_ENTROPY_SOURCE_WEAK; #endif +#if defined(MBEDTLS_PLATFORM_C) + if (mbedtls_platform_setup(NULL) != 0) + return -1; +#endif /* MBEDTLS_PLATFORM_C */ + mbedtls_ssl_init(&sec->_ssl); mbedtls_ssl_config_init(&sec->_conf); mbedtls_ctr_drbg_init(&sec->_ctr_drbg); @@ -153,6 +158,9 @@ static void coap_security_handler_reset(coap_security_t *sec) mbedtls_ctr_drbg_free(&sec->_ctr_drbg); mbedtls_ssl_config_free(&sec->_conf); mbedtls_ssl_free(&sec->_ssl); +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ } diff --git a/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c b/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c index ba97c62e9fb..f4ee36e69b5 100644 --- a/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c +++ b/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c @@ -386,3 +386,15 @@ int mbedtls_ssl_session_reset(mbedtls_ssl_context *ssl) void mbedtls_strerror( int ret, char *buf, size_t buflen ){ } + +int mbedtls_platform_setup( mbedtls_platform_context *ctx ) +{ + (void)ctx; + + return( 0 ); +} + +void mbedtls_platform_teardown( mbedtls_platform_context *ctx ) +{ + (void)ctx; +} diff --git a/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.h b/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.h index b5a6b00620f..2ad72cb9398 100644 --- a/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.h +++ b/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.h @@ -28,7 +28,7 @@ #include "mbedtls/sha256.h" #include "mbedtls/entropy.h" #include "mbedtls/pk.h" - +#include "mbedtls/platform.h" #define HANDSHAKE_FINISHED_VALUE 8888 diff --git a/features/nanostack/mbed-mesh-api/mbed_lib.json b/features/nanostack/mbed-mesh-api/mbed_lib.json index fee1171b587..4c6c61ce40f 100644 --- a/features/nanostack/mbed-mesh-api/mbed_lib.json +++ b/features/nanostack/mbed-mesh-api/mbed_lib.json @@ -1,5 +1,6 @@ { "name": "mbed-mesh-api", + "requires": ["nanostack"], "config": { "heap-size": { "help": "Nanostack's heap size [bytes: 0-65534]", diff --git a/features/nanostack/mbed-mesh-api/source/ethernet_tasklet.c b/features/nanostack/mbed-mesh-api/source/ethernet_tasklet.c index 6a63c040813..52501cef622 100644 --- a/features/nanostack/mbed-mesh-api/source/ethernet_tasklet.c +++ b/features/nanostack/mbed-mesh-api/source/ethernet_tasklet.c @@ -79,6 +79,7 @@ static void enet_tasklet_network_state_changed(mesh_connection_status_t status); static void enet_tasklet_parse_network_event(arm_event_s *event); static void enet_tasklet_configure_and_connect_to_network(void); static void enet_tasklet_poll_network_status(void *param); +static void enet_tasklet_generate_event(uint8_t link_status, mesh_connection_status_t mesh_status); /* * \brief A function which will be eventually called by NanoStack OS when ever the OS has an event to deliver. * @param event, describes the sender, receiver and event type. @@ -120,7 +121,7 @@ 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 + } else if (event->event_id == APPL_BACKHAUL_LINK_UP && tasklet_data_ptr->tasklet_state != TASKLET_STATE_BOOTSTRAP_STARTED) { // Ethernet cable has been plugged in arm_nwk_interface_configure_ipv6_bootstrap_set( @@ -133,13 +134,26 @@ void enet_tasklet_main(arm_event_s *event) } 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) { + } else if (event->event_id == APPL_BACKHAUL_LINK_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); + } else if (event->event_id == APPL_BACKHAUL_INTERFACE_PHY_DOWN) { + // disconnect called + if (tasklet_data_ptr != NULL) { + if (tasklet_data_ptr->network_interface_id != INVALID_INTERFACE_ID) { + if (tasklet_data_ptr->connection_status != MESH_BOOTSTRAP_STARTED) { + arm_nwk_interface_down(tasklet_data_ptr->network_interface_id); + } + tasklet_data_ptr->network_interface_id = INVALID_INTERFACE_ID; + enet_tasklet_network_state_changed(MESH_DISCONNECTED); + } + tasklet_data_ptr->mesh_api_cb = NULL; + eventOS_timeout_cancel(tasklet_data_ptr->poll_network_status_timeout); + } } break; @@ -290,19 +304,8 @@ int8_t enet_tasklet_connect(mesh_interface_cb callback, int8_t nwk_interface_id) int8_t enet_tasklet_disconnect(bool send_cb) { - int8_t status = -1; - if (tasklet_data_ptr != NULL) { - 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) { - enet_tasklet_network_state_changed(MESH_DISCONNECTED); - } - } - tasklet_data_ptr->mesh_api_cb = NULL; - eventOS_timeout_cancel(tasklet_data_ptr->poll_network_status_timeout); - } - return status; + enet_tasklet_generate_event(APPL_BACKHAUL_INTERFACE_PHY_DOWN, MESH_DISCONNECTED); + return 0; } void enet_tasklet_init(void) @@ -333,13 +336,23 @@ int8_t enet_tasklet_network_init(int8_t device_id) } void enet_tasklet_link_state_changed(bool up) +{ + if (up) { + enet_tasklet_generate_event(APPL_BACKHAUL_LINK_UP, MESH_BOOTSTRAP_STARTED); + } else { + enet_tasklet_generate_event(APPL_BACKHAUL_LINK_DOWN, MESH_BOOTSTRAP_STARTED); + } +} + +static void enet_tasklet_generate_event(uint8_t link_status, mesh_connection_status_t mesh_status) { 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, + .event_id = link_status, + .event_data = mesh_status }; eventOS_event_send(&event); } 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 66b0a9bbaff..f8cd90c5641 100644 --- a/features/nanostack/mbed-mesh-api/source/include/mesh_system.h +++ b/features/nanostack/mbed-mesh-api/source/include/mesh_system.h @@ -28,7 +28,8 @@ extern "C" { enum { APPL_EVENT_CONNECT = 0x01, APPL_BACKHAUL_INTERFACE_PHY_DOWN, - APPL_BACKHAUL_INTERFACE_PHY_UP + APPL_BACKHAUL_LINK_DOWN, + APPL_BACKHAUL_LINK_UP }; /* 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 0c19a7cf745..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,15 +1,16 @@ /* - * 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. */ @@ -17,6 +18,7 @@ #include "fhss_api.h" #include "fhss_config.h" #include "mbed_trace.h" +#include "platform/SingletonPtr.h" #include "platform/arm_hal_interrupt.h" #include #include "equeue.h" @@ -32,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 @@ -44,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)) @@ -103,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); @@ -119,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(); @@ -135,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..804f1485ab4 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. */ @@ -26,9 +27,15 @@ uint32_t arm_random_seed_get(void) { uint32_t result = 0; #ifdef MBEDTLS_ENTROPY_HARDWARE_ALT +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_setup(NULL); +#endif /* MBEDTLS_PLATFORM_C */ /* Grab a seed from a function we provide for mbedtls */ size_t len; mbedtls_hardware_poll(NULL, (uint8_t *) &result, sizeof result, &len); +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ #endif return result; } 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/mbed_lib.json b/features/nanostack/nanostack-interface/mbed_lib.json new file mode 100644 index 00000000000..2761bfd407c --- /dev/null +++ b/features/nanostack/nanostack-interface/mbed_lib.json @@ -0,0 +1,4 @@ +{ + "name": "nanostack-interface", + "requires": ["nanostack"] +} diff --git a/features/nanostack/sal-stack-nanostack-eventloop/mbed_lib.json b/features/nanostack/sal-stack-nanostack-eventloop/mbed_lib.json index a56cdb50306..25a93630146 100644 --- a/features/nanostack/sal-stack-nanostack-eventloop/mbed_lib.json +++ b/features/nanostack/sal-stack-nanostack-eventloop/mbed_lib.json @@ -1,5 +1,6 @@ { "name": "nanostack-eventloop", + "requires": ["nanostack-hal"], "config": { "use_platform_tick_timer": { "help": "Use platform provided low resolution tick timer for eventloop", diff --git a/features/nanostack/sal-stack-nanostack/mbed_lib.json b/features/nanostack/sal-stack-nanostack/mbed_lib.json index 28817116673..6640b5e3ef5 100644 --- a/features/nanostack/sal-stack-nanostack/mbed_lib.json +++ b/features/nanostack/sal-stack-nanostack/mbed_lib.json @@ -1,5 +1,6 @@ { "name": "nanostack", + "requires": ["nanostack-eventloop", "coap-service"], "config": { "configuration": { "help": "Build time configuration. Refer to Handbook for valid values. Default: full stack", 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/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/netsocket/CellularBase.h b/features/netsocket/CellularBase.h index e430653abb9..db956bb425e 100644 --- a/features/netsocket/CellularBase.h +++ b/features/netsocket/CellularBase.h @@ -22,122 +22,14 @@ #ifndef CELLULAR_BASE_H #define CELLULAR_BASE_H -#include "netsocket/NetworkInterface.h" - -/** Common interface that is shared between cellular interfaces. +/** + * This class is deprecated and will be removed altogether after expiration of + * deprecation notice. */ -class CellularBase: public NetworkInterface { - -public: - /** Get the default cellular interface. - * - * This is provided as a weak method so applications can override. - * Default behavior is to get the target's default interface, if - * any. - * - * @return pointer to interface, if any. - */ - static CellularBase *get_default_instance(); - - /** Set the cellular network credentials. - * - * Please check documentation of connect() for default behavior of APN settings. - * - * @param apn Access point name. - * @param uname Username (optional). - * @param pwd Password (optional). - */ - virtual void set_credentials(const char *apn, const char *uname = 0, - const char *pwd = 0) = 0; - - /** Set the plmn. PLMN controls to what network device registers. - * - * @param plmn user to force what network to register. - */ - virtual void set_plmn(const char *plmn) = 0; - - /** Set the PIN code for SIM card. - * - * @param sim_pin PIN for the SIM card. - */ - virtual void set_sim_pin(const char *sim_pin) = 0; - - /** Attempt to connect to a cellular network with a PIN and credentials. - * - * @param sim_pin PIN for the SIM card. - * @param apn Access point name (optional). - * @param uname Username (optional). - * @param pwd Password (optional). - * @return NSAPI_ERROR_OK on success, or negative error code on failure. - */ - virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0, - const char *uname = 0, - const char *pwd = 0) = 0; - - /** Attempt to connect to a cellular network. - * - * If the SIM requires a PIN, and it is invalid or not set, NSAPI_ERROR_AUTH_ERROR is returned. - * - * @return NSAPI_ERROR_OK on success, or negative error code on failure. - */ - virtual nsapi_error_t connect() = 0; - - /** Stop the interface. - * - * @return NSAPI_ERROR_OK on success, or error code on failure. - */ - virtual nsapi_error_t disconnect() = 0; - - /** Check if the connection is currently established. - * - * @return `true` if the cellular module have successfully acquired a carrier and is - * connected to an external packet data network using PPP, `false` otherwise. - */ - virtual bool is_connected() = 0; - - /** Get the local IP address. - * - * @return Null-terminated representation of the local IP address, - * or null if no IP address has been received. - */ - virtual const char *get_ip_address() = 0; - - /** Get the local network mask. - * - * @return Null-terminated representation of the local network mask, - * or null if no network mask has been received. - */ - virtual const char *get_netmask() = 0; - - /** Get the local gateways. - * - * @return Null-terminated representation of the local gateway, - * or null if no network mask has been received. - */ - virtual const char *get_gateway() = 0; - - /** @copydoc NetworkInterface::cellularBase - */ - virtual CellularBase *cellularBase() - { - return this; - } - -#if !defined(DOXYGEN_ONLY) - -protected: - /** Get the target's default cellular interface. - * - * This is provided as a weak method so targets can override. The - * default implementation configures and returns the OnBoardModemInterface, - * if available. - * - * @return Pointer to interface, if any. - */ - static CellularBase *get_target_default_instance(); +#include "CellularInterface.h" -#endif //!defined(DOXYGEN_ONLY) -}; +MBED_DEPRECATED_SINCE("mbed-os-5.12", "Migrated to CellularInterface") +typedef CellularInterface CellularBase; #endif //CELLULAR_BASE_H diff --git a/features/netsocket/CellularInterface.h b/features/netsocket/CellularInterface.h new file mode 100644 index 00000000000..37199c659af --- /dev/null +++ b/features/netsocket/CellularInterface.h @@ -0,0 +1,162 @@ +/* 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. + */ + +#ifndef CELLULAR_INTERFACE_H_ +#define CELLULAR_INTERFACE_H_ + +#include "netsocket/NetworkInterface.h" + +/** + * @addtogroup cellular + * @{ + */ + +/** Common interface that is shared between cellular interfaces. + */ +class CellularInterface: public NetworkInterface { + +public: + /** Get the default cellular interface. + * + * This is provided as a weak method so applications can override. + * Default behavior is to get the target's default interface, if + * any. + * + * @return pointer to interface, if any. + */ + static CellularInterface *get_default_instance(); + + /** Set the cellular network credentials. + * + * Please check documentation of connect() for default behavior of APN settings. + * + * @param apn Access point name. + * @param uname Username (optional). + * @param pwd Password (optional). + */ + virtual void set_credentials(const char *apn, const char *uname = 0, + const char *pwd = 0) = 0; + + /** Set the plmn. PLMN controls to what network device registers. + * + * @param plmn user to force what network to register. + */ + virtual void set_plmn(const char *plmn) = 0; + + /** Set the PIN code for SIM card. + * + * @param sim_pin PIN for the SIM card. + */ + virtual void set_sim_pin(const char *sim_pin) = 0; + + /** Attempt to connect to a cellular network with a PIN and credentials. + * + * @param sim_pin PIN for the SIM card. + * @param apn Access point name (optional). + * @param uname Username (optional). + * @param pwd Password (optional). + * @return NSAPI_ERROR_OK on success, or negative error code on failure. + */ + virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0, + const char *uname = 0, + const char *pwd = 0) = 0; + + /** Attempt to connect to a cellular network. + * + * If the SIM requires a PIN, and it is invalid or not set, NSAPI_ERROR_AUTH_ERROR is returned. + * + * @return NSAPI_ERROR_OK on success, or negative error code on failure. + */ + virtual nsapi_error_t connect() = 0; + + /** Stop the interface. + * + * @return NSAPI_ERROR_OK on success, or error code on failure. + */ + virtual nsapi_error_t disconnect() = 0; + + /** Check if the connection is currently established. + * + * @return `true` if the cellular module have successfully acquired a carrier and is + * connected to an external packet data network using PPP, `false` otherwise. + */ + virtual bool is_connected() = 0; + + /** Get the local IP address. + * + * @return Null-terminated representation of the local IP address, + * or null if no IP address has been received. + */ + virtual const char *get_ip_address() = 0; + + /** Get the local network mask. + * + * @return Null-terminated representation of the local network mask, + * or null if no network mask has been received. + */ + virtual const char *get_netmask() = 0; + + /** Get the local gateways. + * + * @return Null-terminated representation of the local gateway, + * or null if no network mask has been received. + */ + virtual const char *get_gateway() = 0; + + /** @copydoc NetworkInterface::cellularBase + */ + MBED_DEPRECATED_SINCE("mbed-os-5.12", "Migrated to CellularInterface") + virtual CellularInterface *cellularBase() + { + return this; + } + + /** @copydoc NetworkInterface::cellularInterface + */ + virtual CellularInterface *cellularInterface() + { + return this; + } + +#if !defined(DOXYGEN_ONLY) + +protected: + /** Get the target's default cellular interface. + * + * This is provided as a weak method so targets can override. The + * default implementation configures and returns the OnBoardModemInterface, + * if available. + * + * @return Pointer to interface, if any. + */ + static CellularInterface *get_target_default_instance(); + +#endif //!defined(DOXYGEN_ONLY) + +public: + /** Set default parameters on a cellular interface. + * + * A cellular interface instantiated directly or using + * CellularInterface::get_default_instance() is initially unconfigured. + * This call can be used to set the default parameters that would + * have been set if the interface had been requested using + * NetworkInterface::get_default_instance() (see nsapi JSON + * configuration). + */ + virtual void set_default_parameters(); +}; + +#endif // CELLULAR_INTERFACE_H_ diff --git a/features/netsocket/DNS.h b/features/netsocket/DNS.h index 003635c5adf..3c907a97297 100644 --- a/features/netsocket/DNS.h +++ b/features/netsocket/DNS.h @@ -25,7 +25,7 @@ class DNS { public: - /** Translate a hostname to an IP address with specific version. + /** Translate a hostname to an IP address with specific version using network interface name. * * The hostname may be either a domain name or an IP address. If the * hostname is an IP address, no network transactions will be performed. @@ -37,11 +37,11 @@ class DNS { * @param address Pointer to a SocketAddress to store the result. * @param version IP version of address to resolve, NSAPI_UNSPEC indicates * version is chosen by the stack (defaults to NSAPI_UNSPEC). + * @param interface_name Network interface name * @return NSAPI_ERROR_OK on success, negative error code on failure. */ virtual nsapi_error_t gethostbyname(const char *host, - SocketAddress *address, nsapi_version_t version = NSAPI_UNSPEC) = 0; - + SocketAddress *address, nsapi_version_t version = NSAPI_UNSPEC, const char *interface_name = NULL) = 0; /** Hostname translation callback for gethostbyname_async. * * The callback is called after DNS resolution completes, or a failure occurs. @@ -57,7 +57,7 @@ class DNS { */ typedef mbed::Callback hostbyname_cb_t; - /** Translate a hostname to an IP address (asynchronous). + /** Translate a hostname to an IP address (asynchronous) * * The hostname may be either a domain name or an IP address. If the * hostname is an IP address, no network transactions will be performed. @@ -74,13 +74,14 @@ class DNS { * @param callback Callback that is called to return the result. * @param version IP version of address to resolve. NSAPI_UNSPEC indicates that the * version is chosen by the stack (defaults to NSAPI_UNSPEC). + * @param interface_name Network interface name * @return NSAPI_ERROR_OK on immediate success, * negative error code on immediate failure or * a positive unique ID that represents the hostname translation operation * and can be passed to cancel. */ - virtual nsapi_value_or_error_t gethostbyname_async(const char *host, hostbyname_cb_t callback, - nsapi_version_t version = NSAPI_UNSPEC) = 0; + virtual nsapi_value_or_error_t gethostbyname_async(const char *host, hostbyname_cb_t callback, nsapi_version_t version = NSAPI_UNSPEC, + const char *interface_name = NULL) = 0; /** Cancel asynchronous hostname translation. * @@ -94,9 +95,10 @@ class DNS { /** Add a domain name server to list of servers to query. * * @param address DNS server host address. + * @param interface_name Network interface name * @return NSAPI_ERROR_OK on success, negative error code on failure. */ - virtual nsapi_error_t add_dns_server(const SocketAddress &address) = 0; + virtual nsapi_error_t add_dns_server(const SocketAddress &address, const char *interface_name = NULL) = 0; }; #endif diff --git a/features/netsocket/EMACInterface.cpp b/features/netsocket/EMACInterface.cpp index c88d9b461f2..e1c16f009a6 100644 --- a/features/netsocket/EMACInterface.cpp +++ b/features/netsocket/EMACInterface.cpp @@ -15,6 +15,7 @@ */ #include "EMACInterface.h" + using namespace mbed; /* Interface implementation */ @@ -112,6 +113,22 @@ const char *EMACInterface::get_gateway() return 0; } +char *EMACInterface::get_interface_name(char *interface_name) +{ + if (_interface) { + return _interface->get_interface_name(interface_name); + } + + return NULL; +} + +void EMACInterface::set_as_default() +{ + if (_interface) { + _stack.set_default_interface(_interface); + } +} + NetworkStack *EMACInterface::get_stack() { return &_stack; diff --git a/features/netsocket/EMACInterface.h b/features/netsocket/EMACInterface.h index 6d9d981ad47..a2034191ad4 100644 --- a/features/netsocket/EMACInterface.h +++ b/features/netsocket/EMACInterface.h @@ -117,6 +117,17 @@ class EMACInterface : public virtual NetworkInterface { */ virtual const char *get_gateway(); + /** Get the network interface name + * + * @return Null-terminated representation of the network interface name + * or null if interface not exists + */ + virtual char *get_interface_name(char *interface_name); + + /** Set the network interface as default one + */ + virtual void set_as_default(); + /** Register callback for status reporting * * @param status_cb The callback for status changes diff --git a/features/netsocket/InternetSocket.cpp b/features/netsocket/InternetSocket.cpp index 815e2d5de89..4f08bc9dcbf 100644 --- a/features/netsocket/InternetSocket.cpp +++ b/features/netsocket/InternetSocket.cpp @@ -21,6 +21,7 @@ using namespace mbed; InternetSocket::InternetSocket() : _stack(0), _socket(0), _timeout(osWaitForever), + _remote_peer(), _readers(0), _writers(0), _factory_allocated(false) { @@ -54,7 +55,7 @@ nsapi_error_t InternetSocket::open(NetworkStack *stack) _socket = socket; _event = callback(this, &InternetSocket::event); _stack->socket_attach(_socket, Callback::thunk, &_event); - + _interface_name[0] = '\0'; _lock.unlock(); return NSAPI_ERROR_OK; } @@ -86,7 +87,7 @@ nsapi_error_t InternetSocket::close() _event_flag.wait_any(FINISHED_FLAG, osWaitForever); _lock.lock(); } - + _interface_name[0] = '\0'; _lock.unlock(); // When allocated by accept() call, will destroy itself on close(); @@ -175,6 +176,9 @@ nsapi_error_t InternetSocket::setsockopt(int level, int optname, const void *opt ret = NSAPI_ERROR_NO_SOCKET; } else { ret = _stack->setsockopt(_socket, level, optname, optval, optlen); + if (optname == NSAPI_BIND_TO_DEVICE && level == NSAPI_SOCKET) { + strncpy(_interface_name, static_cast(optval), optlen); + } } _lock.unlock(); diff --git a/features/netsocket/InternetSocket.h b/features/netsocket/InternetSocket.h index c1ef86b3696..ab41df9fbb5 100644 --- a/features/netsocket/InternetSocket.h +++ b/features/netsocket/InternetSocket.h @@ -158,7 +158,7 @@ class InternetSocket : public Socket { virtual nsapi_protocol_t get_proto() = 0; virtual void event(); int modify_multicast_group(const SocketAddress &address, nsapi_socket_option_t socketopt); - + char _interface_name[NSAPI_INTERFACE_NAME_MAX_SIZE]; NetworkStack *_stack; nsapi_socket_t _socket; uint32_t _timeout; diff --git a/features/netsocket/L3IPInterface.cpp b/features/netsocket/L3IPInterface.cpp index 27a82af95a1..09c0e57fe8f 100644 --- a/features/netsocket/L3IPInterface.cpp +++ b/features/netsocket/L3IPInterface.cpp @@ -16,6 +16,7 @@ */ #include "L3IPInterface.h" +#include "LWIPStack.h" using namespace mbed; /* Interface implementation */ @@ -56,10 +57,12 @@ nsapi_error_t L3IPInterface::set_dhcp(bool dhcp) return NSAPI_ERROR_OK; } + + nsapi_error_t L3IPInterface::connect() { if (!_interface) { - nsapi_error_t err = _stack.add_l3ip_interface(_l3ip, true, &_interface); + nsapi_error_t err = _stack.add_l3ip_interface(_l3ip, false, &_interface); if (err != NSAPI_ERROR_OK) { _interface = NULL; return err; @@ -110,6 +113,22 @@ const char *L3IPInterface::get_gateway() return 0; } +char *L3IPInterface::get_interface_name(char *interface_name) +{ + if (_interface) { + return _interface->get_interface_name(interface_name); + } + + return NULL; +} + +void L3IPInterface::set_as_default() +{ + if (_interface) { + static_cast(&_stack)->set_default_interface(_interface); + } +} + NetworkStack *L3IPInterface::get_stack() { return &_stack; diff --git a/features/netsocket/L3IPInterface.h b/features/netsocket/L3IPInterface.h index f76f56816ab..99d56e7a4fc 100644 --- a/features/netsocket/L3IPInterface.h +++ b/features/netsocket/L3IPInterface.h @@ -103,6 +103,17 @@ class L3IPInterface : public virtual NetworkInterface { */ virtual const char *get_gateway(); + /** Get the network interface name + * + * @return Null-terminated representation of the network interface name + * or null if interface not exists + */ + virtual char *get_interface_name(char *interface_name); + + /** Set the network interface as default one + */ + virtual void set_as_default(); + /** Register callback for status reporting * * @param status_cb The callback for status changes diff --git a/features/netsocket/NetworkInterface.cpp b/features/netsocket/NetworkInterface.cpp index a59ca7e20f7..e189218a81a 100644 --- a/features/netsocket/NetworkInterface.cpp +++ b/features/netsocket/NetworkInterface.cpp @@ -16,10 +16,17 @@ #include "netsocket/NetworkInterface.h" #include "netsocket/NetworkStack.h" +#include "platform/Callback.h" +#include "platform/mbed_error.h" #include - +#include "ns_list.h" // Default network-interface state +void NetworkInterface::set_as_default() +{ + +} + const char *NetworkInterface::get_mac_address() { return 0; @@ -40,6 +47,11 @@ const char *NetworkInterface::get_gateway() return 0; } +char *NetworkInterface::get_interface_name(char *interface_name) +{ + return 0; +} + nsapi_error_t NetworkInterface::set_network(const char *ip_address, const char *netmask, const char *gateway) { return NSAPI_ERROR_UNSUPPORTED; @@ -54,15 +66,14 @@ nsapi_error_t NetworkInterface::set_dhcp(bool dhcp) } } -// DNS operations go through the underlying stack by default -nsapi_error_t NetworkInterface::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version) +nsapi_error_t NetworkInterface::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version, const char *interface_name) { - return get_stack()->gethostbyname(name, address, version); + return get_stack()->gethostbyname(name, address, version, interface_name); } -nsapi_value_or_error_t NetworkInterface::gethostbyname_async(const char *host, hostbyname_cb_t callback, nsapi_version_t version) +nsapi_value_or_error_t NetworkInterface::gethostbyname_async(const char *host, hostbyname_cb_t callback, nsapi_version_t version, const char *interface_name) { - return get_stack()->gethostbyname_async(host, callback, version); + return get_stack()->gethostbyname_async(host, callback, version, interface_name); } nsapi_error_t NetworkInterface::gethostbyname_async_cancel(int id) @@ -70,13 +81,71 @@ nsapi_error_t NetworkInterface::gethostbyname_async_cancel(int id) return get_stack()->gethostbyname_async_cancel(id); } -nsapi_error_t NetworkInterface::add_dns_server(const SocketAddress &address) +nsapi_error_t NetworkInterface::add_dns_server(const SocketAddress &address, const char *interface_name) { - return get_stack()->add_dns_server(address); + return get_stack()->add_dns_server(address, interface_name); } void NetworkInterface::attach(mbed::Callback status_cb) { + // Dummy, that needs to be overwritten when inherited, but cannot be removed + // because suplied previously and can be referred from binaries. +} + +typedef struct iface_eventlist_entry { + NetworkInterface *iface; + mbed::Callback status_cb; + ns_list_link_t link; +} iface_eventlist_entry_t; + +typedef NS_LIST_HEAD(iface_eventlist_entry_t, link) iface_eventlist_t; + +static iface_eventlist_t *get_interface_event_list_head() +{ + static iface_eventlist_t NS_LIST_NAME_INIT(event_list); + return &event_list; +} + +static void call_all_event_listeners(NetworkInterface *iface, nsapi_event_t event, intptr_t val) +{ + iface_eventlist_t *event_list = get_interface_event_list_head(); + ns_list_foreach(iface_eventlist_entry_t, entry, event_list) { + if (entry->iface == iface) { + entry->status_cb(event, val); + } + } +} + +void NetworkInterface::add_event_listener(mbed::Callback status_cb) +{ + iface_eventlist_t *event_list = get_interface_event_list_head(); + iface_eventlist_entry_t *entry = new iface_eventlist_entry_t; + entry->iface = this; + entry->status_cb = status_cb; + ns_list_add_to_end(event_list, entry); + attach(mbed::callback(&call_all_event_listeners, this)); +} + +void NetworkInterface::remove_event_listener(mbed::Callback status_cb) +{ + iface_eventlist_t *event_list = get_interface_event_list_head(); + ns_list_foreach_safe(iface_eventlist_entry_t, entry, event_list) { + if (entry->status_cb == status_cb && entry->iface == this) { + ns_list_remove(event_list, entry); + delete entry; + return; + } + } +} + +NetworkInterface::~NetworkInterface() +{ + iface_eventlist_t *event_list = get_interface_event_list_head(); + ns_list_foreach_safe(iface_eventlist_entry_t, entry, event_list) { + if (entry->iface == this) { + ns_list_remove(event_list, entry); + } + } } nsapi_connection_status_t NetworkInterface::get_connection_status() const diff --git a/features/netsocket/NetworkInterface.h b/features/netsocket/NetworkInterface.h index a7ecaf7ef42..179e21718de 100644 --- a/features/netsocket/NetworkInterface.h +++ b/features/netsocket/NetworkInterface.h @@ -34,7 +34,7 @@ class NetworkStack; class EthInterface; class WiFiInterface; class MeshInterface; -class CellularBase; +class CellularInterface; class EMACInterface; /** Common interface that is shared between network devices. @@ -43,7 +43,7 @@ class EMACInterface; class NetworkInterface: public DNS { public: - virtual ~NetworkInterface() {}; + virtual ~NetworkInterface(); /** Return the default network interface. * @@ -84,6 +84,10 @@ class NetworkInterface: public DNS { */ static NetworkInterface *get_default_instance(); + /** Set network interface as default one. + */ + virtual void set_as_default(); + /** Get the local MAC address. * * Provided MAC address is intended for info or debug purposes and @@ -95,10 +99,10 @@ class NetworkInterface: public DNS { */ virtual const char *get_mac_address(); - /** Get the local IP address. + /** Get the local IP address * * @return Null-terminated representation of the local IP address - * or null if no IP address has been received. + * or null if not yet connected */ virtual const char *get_ip_address(); @@ -116,6 +120,13 @@ class NetworkInterface: public DNS { */ virtual const char *get_gateway(); + /** Get the network interface name + * + * @return Null-terminated representation of the network interface name + * or null if interface not exists + */ + virtual char *get_interface_name(char *interface_name); + /** Configure this network interface to use a static IP address. * Implicitly disables DHCP, which can be enabled in set_dhcp. * Requires that the network is disconnected. @@ -173,7 +184,7 @@ class NetworkInterface: public DNS { */ virtual nsapi_error_t disconnect() = 0; - /** Translate a hostname to an IP address with specific version. + /** Translate a hostname to an IP address with specific version using network interface name. * * The hostname may be either a domain name or an IP address. If the * hostname is an IP address, no network transactions will be performed. @@ -185,10 +196,11 @@ class NetworkInterface: public DNS { * @param address Pointer to a SocketAddress to store the result. * @param version IP version of address to resolve, NSAPI_UNSPEC indicates * version is chosen by the stack (defaults to NSAPI_UNSPEC). + * @param interface_name Network interface name * @return NSAPI_ERROR_OK on success, negative error code on failure. */ virtual nsapi_error_t gethostbyname(const char *host, - SocketAddress *address, nsapi_version_t version = NSAPI_UNSPEC); + SocketAddress *address, nsapi_version_t version = NSAPI_UNSPEC, const char *interface_name = NULL); /** Hostname translation callback (for use with gethostbyname_async()). * @@ -205,7 +217,7 @@ class NetworkInterface: public DNS { */ typedef mbed::Callback hostbyname_cb_t; - /** Translate a hostname to an IP address (asynchronous). + /** Translate a hostname to an IP address (asynchronous) using network interface name. * * The hostname may be either a domain name or a dotted IP address. If the * hostname is an IP address, no network transactions will be performed. @@ -222,13 +234,14 @@ class NetworkInterface: public DNS { * @param callback Callback that is called for result. * @param version IP version of address to resolve, NSAPI_UNSPEC indicates * version is chosen by the stack (defaults to NSAPI_UNSPEC). + * @param interface_name Network interface name * @return 0 on immediate success, * negative error code on immediate failure or * a positive unique id that represents the hostname translation operation * and can be passed to cancel. */ - virtual nsapi_value_or_error_t gethostbyname_async(const char *host, hostbyname_cb_t callback, - nsapi_version_t version = NSAPI_UNSPEC); + virtual nsapi_value_or_error_t gethostbyname_async(const char *host, hostbyname_cb_t callback, nsapi_version_t version = NSAPI_UNSPEC, + const char *interface_name = NULL); /** Cancel asynchronous hostname translation. * @@ -245,18 +258,44 @@ class NetworkInterface: public DNS { * @param address Address for the dns host. * @return NSAPI_ERROR_OK on success, negative error code on failure. */ - virtual nsapi_error_t add_dns_server(const SocketAddress &address); + virtual nsapi_error_t add_dns_server(const SocketAddress &address, const char *interface_name); /** Register callback for status reporting. * * The specified status callback function will be called on status changes * on the network. The parameters on the callback are the event type and - * event-type dependent reason parameter. + * event-type dependent reason parameter. Only one callback can be registered at a time. + * + * To unregister a callback call with status_cb parameter as a zero. + * + * *NOTE:* Any callbacks registered with this function will be overwritten if + * add_event_listener() API is used. * * @param status_cb The callback for status changes. */ virtual void attach(mbed::Callback status_cb); + /** Add event listener for interface. + * + * This API allows multiple callback to be registered for a single interface. + * When first called, internal list of event handlers are created and registered to + * interface through attach() API. + * + * Application may only use attach() or add_event_listener() interface. Mixing usage + * of both leads to undefined behavior. + * + * @param status_cb The callback for status changes. + */ + void add_event_listener(mbed::Callback status_cb); + + /** Remove event listener from interface. + * + * Remove previously added callback from the handler list. + * + * @param status_cb The callback to unregister. + */ + void remove_event_listener(mbed::Callback status_cb); + /** Get the connection status. * * @return The connection status (@see nsapi_types.h). @@ -299,10 +338,11 @@ class NetworkInterface: public DNS { return 0; } - /** Return pointer to a CellularBase. + /** Return pointer to a CellularInterface. * @return Pointer to requested interface type or NULL if this class doesn't implement the interface. */ - virtual CellularBase *cellularBase() + MBED_DEPRECATED_SINCE("mbed-os-5.12", "Migrated to CellularInterface") + virtual CellularInterface *cellularBase() { return 0; } @@ -363,6 +403,26 @@ class NetworkInterface: public DNS { */ static NetworkInterface *get_target_default_instance(); #endif //!defined(DOXYGEN_ONLY) + +public: + /** Set default parameters on an interface. + * + * A network interface instantiated directly or using calls such as + * WiFiInterface::get_default_instance() is initially unconfigured. + * This call can be used to set the default parameters that would + * have been set if the interface had been requested using + * NetworkInterface::get_default_instance() (see nsapi JSON + * configuration). + */ + virtual void set_default_parameters(); + + /** Return pointer to a CellularInterface. + * @return Pointer to requested interface type or NULL if this class doesn't implement the interface. + */ + virtual CellularInterface *cellularInterface() + { + return 0; + } }; #endif diff --git a/features/netsocket/NetworkInterfaceDefaults.cpp b/features/netsocket/NetworkInterfaceDefaults.cpp index fb29ce88f4d..33780254cdb 100644 --- a/features/netsocket/NetworkInterfaceDefaults.cpp +++ b/features/netsocket/NetworkInterfaceDefaults.cpp @@ -62,6 +62,53 @@ MBED_WEAK NetworkInterface *NetworkInterface::get_default_instance() return get_target_default_instance(); } + +/* Helpers to set default parameters - used by NetworkInterface::get_default_instance, + * but exposed for apps which want to get these defaults after requesting a specific type. + */ +void NetworkInterface::set_default_parameters() +{ + +} + +void WiFiInterface::set_default_parameters() +{ +#ifdef MBED_CONF_NSAPI_DEFAULT_WIFI_SSID +#ifndef MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD +#define MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD NULL +#endif +#ifndef MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY +#define MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY NONE +#endif +#define concat_(x,y) x##y +#define concat(x,y) concat_(x,y) +#define SECURITY concat(NSAPI_SECURITY_,MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY) + set_credentials(MBED_CONF_NSAPI_DEFAULT_WIFI_SSID, MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD, SECURITY); +#endif +} + +void CellularBase::set_default_parameters() +{ + /* CellularBase is expected to attempt to work without any parameters - we + * will try, at least. + */ +#ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN +#ifndef MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME +#define MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME NULL +#endif +#ifndef MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD +#define MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD NULL +#endif + set_credentials(MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN, MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME, MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD); +#endif +#ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_SIM_PIN + set_sim_pin(MBED_CONF_NSAPI_DEFAULT_CELLULAR_SIM_PIN); +#endif +#ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN + set_plmn(MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN); +#endif +} + /* Finally the dispatch from the JSON default interface type to the specific * subclasses. It's our job to configure - the default NetworkInterface is * preconfigured - the specific subtypes' defaults are not (necessarily). @@ -87,16 +134,7 @@ MBED_WEAK NetworkInterface *NetworkInterface::get_target_default_instance() if (!wifi) { return NULL; } -#ifndef MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD -#define MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD NULL -#endif -#ifndef MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY -#define MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY NONE -#endif -#define concat_(x,y) x##y -#define concat(x,y) concat_(x,y) -#define SECURITY concat(NSAPI_SECURITY_,MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY) - wifi->set_credentials(MBED_CONF_NSAPI_DEFAULT_WIFI_SSID, MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD, SECURITY); + wifi->set_default_parameters(); return wifi; #else return NULL; @@ -114,24 +152,7 @@ MBED_WEAK NetworkInterface *NetworkInterface::get_target_default_instance() if (!cellular) { return NULL; } - /* CellularBase is expected to attempt to work without any parameters - we - * will try, at least. - */ -#ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN -#ifndef MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME -#define MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME NULL -#endif -#ifndef MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD -#define MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD NULL -#endif - cellular->set_credentials(MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN, MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME, MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD); -#endif -#ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_SIM_PIN - cellular->set_sim_pin(MBED_CONF_NSAPI_DEFAULT_CELLULAR_SIM_PIN); -#endif -#ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN - cellular->set_plmn(MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN); -#endif + cellular->set_default_parameters(); return cellular; } #elif defined(MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE) diff --git a/features/netsocket/NetworkStack.cpp b/features/netsocket/NetworkStack.cpp index 8d671da51b7..312554caa24 100644 --- a/features/netsocket/NetworkStack.cpp +++ b/features/netsocket/NetworkStack.cpp @@ -22,12 +22,19 @@ #include "mbed_shared_queues.h" // Default NetworkStack operations + const char *NetworkStack::get_ip_address() +{ + return 0; +} + +const char *NetworkStack::get_ip_address_if(const char *interface_name) { return 0; } -nsapi_error_t NetworkStack::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version) + +nsapi_error_t NetworkStack::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version, const char *interface_name) { if (name[0] == '\0') { return NSAPI_ERROR_PARAMETER; @@ -51,10 +58,10 @@ nsapi_error_t NetworkStack::gethostbyname(const char *name, SocketAddress *addre } } - return nsapi_dns_query(this, name, address, version); + return nsapi_dns_query(this, name, address, interface_name, version); } -nsapi_value_or_error_t NetworkStack::gethostbyname_async(const char *name, hostbyname_cb_t callback, nsapi_version_t version) +nsapi_value_or_error_t NetworkStack::gethostbyname_async(const char *name, hostbyname_cb_t callback, nsapi_version_t version, const char *interface_name) { SocketAddress address; @@ -83,7 +90,7 @@ nsapi_value_or_error_t NetworkStack::gethostbyname_async(const char *name, hostb call_in_callback_cb_t call_in_cb = get_call_in_callback(); - return nsapi_dns_query_async(this, name, callback, call_in_cb, version); + return nsapi_dns_query_async(this, name, callback, call_in_cb, interface_name, version); } nsapi_error_t NetworkStack::gethostbyname_async_cancel(int id) @@ -91,12 +98,12 @@ nsapi_error_t NetworkStack::gethostbyname_async_cancel(int id) return nsapi_dns_query_async_cancel(id); } -nsapi_error_t NetworkStack::add_dns_server(const SocketAddress &address) +nsapi_error_t NetworkStack::add_dns_server(const SocketAddress &address, const char *interface_name) { - return nsapi_dns_add_server(address); + return nsapi_dns_add_server(address, interface_name); } -nsapi_error_t NetworkStack::get_dns_server(int index, SocketAddress *address) +nsapi_error_t NetworkStack::get_dns_server(int index, SocketAddress *address, const char *interface_name) { return NSAPI_ERROR_UNSUPPORTED; } @@ -164,6 +171,8 @@ class NetworkStackWrapper : public NetworkStack { } public: + using NetworkStack::get_ip_address; + using NetworkStack::gethostbyname; virtual const char *get_ip_address() { if (!_stack_api()->get_ip_address) { @@ -175,10 +184,10 @@ class NetworkStackWrapper : public NetworkStack { return address->get_ip_address(); } - virtual nsapi_error_t gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version) + virtual nsapi_error_t gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version, const char *interface_name) { if (!_stack_api()->gethostbyname) { - return NetworkStack::gethostbyname(name, address, version); + return NetworkStack::gethostbyname(name, address, version, interface_name); } nsapi_addr_t addr = {NSAPI_UNSPEC, 0}; @@ -187,10 +196,10 @@ class NetworkStackWrapper : public NetworkStack { return err; } - virtual nsapi_error_t add_dns_server(const SocketAddress &address) + virtual nsapi_error_t add_dns_server(const SocketAddress &address, const char *interface_name) { if (!_stack_api()->add_dns_server) { - return NetworkStack::add_dns_server(address); + return NetworkStack::add_dns_server(address, interface_name); } return _stack_api()->add_dns_server(_stack(), address.get_addr()); diff --git a/features/netsocket/NetworkStack.h b/features/netsocket/NetworkStack.h index 64fac20449a..a9cc6e5bc4a 100644 --- a/features/netsocket/NetworkStack.h +++ b/features/netsocket/NetworkStack.h @@ -48,6 +48,14 @@ class NetworkStack: public DNS { */ virtual const char *get_ip_address(); + /** Get the local IP address on interface name + * + * @param interface_name Network interface_name + * @return Null-terminated representation of the local IP address + * or null if not yet connected + */ + virtual const char *get_ip_address_if(const char *interface_name); + /** Translates a hostname to an IP address with specific version * * The hostname may be either a domain name or an IP address. If the @@ -60,10 +68,11 @@ class NetworkStack: public DNS { * @param address Pointer to a SocketAddress to store the result. * @param version IP version of address to resolve, NSAPI_UNSPEC indicates * version is chosen by the stack (defaults to NSAPI_UNSPEC) + * @param interface_name Network interface_name * @return NSAPI_ERROR_OK on success, negative error code on failure */ virtual nsapi_error_t gethostbyname(const char *host, - SocketAddress *address, nsapi_version_t version = NSAPI_UNSPEC); + SocketAddress *address, nsapi_version_t version = NSAPI_UNSPEC, const char *interface_name = NULL); /** Hostname translation callback (asynchronous) * @@ -97,13 +106,14 @@ class NetworkStack: public DNS { * @param callback Callback that is called for result * @param version IP version of address to resolve, NSAPI_UNSPEC indicates * version is chosen by the stack (defaults to NSAPI_UNSPEC) + * @param interface_name Network interface_name * @return 0 on immediate success, * negative error code on immediate failure or * a positive unique id that represents the hostname translation operation * and can be passed to cancel */ - virtual nsapi_value_or_error_t gethostbyname_async(const char *host, hostbyname_cb_t callback, - nsapi_version_t version = NSAPI_UNSPEC); + virtual nsapi_value_or_error_t gethostbyname_async(const char *host, hostbyname_cb_t callback, nsapi_version_t version = NSAPI_UNSPEC, + const char *interface_name = NULL); /** Cancels asynchronous hostname translation * @@ -117,9 +127,10 @@ class NetworkStack: public DNS { /** Add a domain name server to list of servers to query * * @param address Destination for the host address + * @param interface_name Network interface name * @return NSAPI_ERROR_OK on success, negative error code on failure */ - virtual nsapi_error_t add_dns_server(const SocketAddress &address); + virtual nsapi_error_t add_dns_server(const SocketAddress &address, const char *interface_name = NULL); /** Get a domain name server from a list of servers to query * @@ -128,9 +139,10 @@ class NetworkStack: public DNS { * * @param index Index of the DNS server, starts from zero * @param address Destination for the host address + * @param interface_name Network interface name * @return NSAPI_ERROR_OK on success, negative error code on failure */ - virtual nsapi_error_t get_dns_server(int index, SocketAddress *address); + virtual nsapi_error_t get_dns_server(int index, SocketAddress *address, const char *interface_name = NULL); /* Set stack options * diff --git a/features/netsocket/OnboardNetworkStack.h b/features/netsocket/OnboardNetworkStack.h index 650b2cd4fa1..17e634b5629 100644 --- a/features/netsocket/OnboardNetworkStack.h +++ b/features/netsocket/OnboardNetworkStack.h @@ -89,22 +89,47 @@ class OnboardNetworkStack : public NetworkStack { * * @return The connection status according to ConnectionStatusType */ + virtual nsapi_connection_status_t get_connection_status() const = 0; + /** Returns interface name + * + * @return string containing name of network interface for example "en0" + */ + + virtual char *get_interface_name(char *buf) + { + return NULL; + }; /** Return MAC address of the network interface * * @return MAC address as "V:W:X:Y:Z" */ + virtual char *get_mac_address(char *buf, nsapi_size_t buflen) = 0; /** Copies IP address of the network interface to user supplied buffer * * @param buf buffer to which IP address will be copied as "W:X:Y:Z" * @param buflen size of supplied buffer + * @param interface_name Network interface name * @return Pointer to a buffer, or NULL if the buffer is too small */ + virtual char *get_ip_address(char *buf, nsapi_size_t buflen) = 0; + /** Copies IP address of the network interface to user supplied buffer + * + * @param buf buffer to which IP address will be copied as "W:X:Y:Z" + * @param buflen size of supplied buffer + * @param interface_name Network interface name + * @return Pointer to a buffer, or NULL if the buffer is too small + */ + virtual char *get_ip_address_if(char *buf, nsapi_size_t buflen, const char *interface_name) + { + return NULL; + }; + /** Copies netmask of the network interface to user supplied buffer * * @param buf buffer to which netmask will be copied as "W:X:Y:Z" @@ -144,6 +169,11 @@ class OnboardNetworkStack : public NetworkStack { { return NSAPI_ERROR_OK; }; + + virtual void set_default_interface(OnboardNetworkStack::Interface *interface) + { + } + }; #endif /* MBED_IPSTACK_H */ diff --git a/features/netsocket/SocketAddress.cpp b/features/netsocket/SocketAddress.cpp index 2d0cb75bc82..0aa5e4ef59b 100644 --- a/features/netsocket/SocketAddress.cpp +++ b/features/netsocket/SocketAddress.cpp @@ -26,6 +26,7 @@ SocketAddress::SocketAddress(nsapi_addr_t addr, uint16_t port) { + mem_init(); _ip_address = NULL; set_addr(addr); set_port(port); @@ -33,6 +34,7 @@ SocketAddress::SocketAddress(nsapi_addr_t addr, uint16_t port) SocketAddress::SocketAddress(const char *addr, uint16_t port) { + mem_init(); _ip_address = NULL; set_ip_address(addr); set_port(port); @@ -40,6 +42,7 @@ SocketAddress::SocketAddress(const char *addr, uint16_t port) SocketAddress::SocketAddress(const void *bytes, nsapi_version_t version, uint16_t port) { + mem_init(); _ip_address = NULL; set_ip_bytes(bytes, version); set_port(port); @@ -47,11 +50,19 @@ SocketAddress::SocketAddress(const void *bytes, nsapi_version_t version, uint16_ SocketAddress::SocketAddress(const SocketAddress &addr) { + mem_init(); _ip_address = NULL; set_addr(addr.get_addr()); set_port(addr.get_port()); } +void SocketAddress::mem_init(void) +{ + _addr.version = NSAPI_UNSPEC; + memset(_addr.bytes, 0, NSAPI_IP_BYTES); + _port = 0; +} + bool SocketAddress::set_ip_address(const char *addr) { delete[] _ip_address; diff --git a/features/netsocket/SocketAddress.h b/features/netsocket/SocketAddress.h index 52a17af7f23..e0b2e1f6bbe 100644 --- a/features/netsocket/SocketAddress.h +++ b/features/netsocket/SocketAddress.h @@ -178,6 +178,9 @@ class SocketAddress { private: void _SocketAddress(NetworkStack *iface, const char *host, uint16_t port); + /** Initialize memory */ + void mem_init(void); + mutable char *_ip_address; nsapi_addr_t _addr; uint16_t _port; diff --git a/features/netsocket/TCPSocket.cpp b/features/netsocket/TCPSocket.cpp index 4d915f8136c..02c29095f83 100644 --- a/features/netsocket/TCPSocket.cpp +++ b/features/netsocket/TCPSocket.cpp @@ -110,7 +110,12 @@ nsapi_error_t TCPSocket::connect(const char *host, uint16_t port) if (!_socket) { return NSAPI_ERROR_NO_SOCKET; } - nsapi_error_t err = _stack->gethostbyname(host, &address); + nsapi_error_t err; + if (!strcmp(_interface_name, "")) { + err = _stack->gethostbyname(host, &address); + } else { + err = _stack->gethostbyname(host, &address, NSAPI_UNSPEC, _interface_name); + } if (err) { return NSAPI_ERROR_DNS_FAILURE; } diff --git a/features/netsocket/TLSSocketWrapper.cpp b/features/netsocket/TLSSocketWrapper.cpp index c8bbda76c36..2a6ccd07044 100644 --- a/features/netsocket/TLSSocketWrapper.cpp +++ b/features/netsocket/TLSSocketWrapper.cpp @@ -23,6 +23,7 @@ #define TRACE_GROUP "TLSW" #include "mbed-trace/mbed_trace.h" #include "mbedtls/debug.h" +#include "mbedtls/platform.h" #include "mbed_error.h" #include "Kernel.h" @@ -45,6 +46,12 @@ TLSSocketWrapper::TLSSocketWrapper(Socket *transport, const char *hostname, cont _clicert_allocated(false), _ssl_conf_allocated(false) { +#if defined(MBEDTLS_PLATFORM_C) + int ret = mbedtls_platform_setup(NULL); + if (ret != 0) { + print_mbedtls_error("mbedtls_platform_setup()", ret); + } +#endif /* MBEDTLS_PLATFORM_C */ mbedtls_entropy_init(&_entropy); mbedtls_ctr_drbg_init(&_ctr_drbg); mbedtls_ssl_init(&_ssl); @@ -71,6 +78,9 @@ TLSSocketWrapper::~TLSSocketWrapper() set_ca_chain(NULL); #endif set_ssl_config(NULL); +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ } void TLSSocketWrapper::set_hostname(const char *hostname) @@ -99,6 +109,8 @@ nsapi_error_t TLSSocketWrapper::set_root_ca_cert(const void *root_ca, size_t len if ((ret = mbedtls_x509_crt_parse(crt, static_cast(root_ca), len)) != 0) { print_mbedtls_error("mbedtls_x509_crt_parse", ret); + mbedtls_x509_crt_free(crt); + delete crt; return NSAPI_ERROR_PARAMETER; } set_ca_chain(crt); @@ -130,12 +142,16 @@ nsapi_error_t TLSSocketWrapper::set_client_cert_key(const void *client_cert, siz if ((ret = mbedtls_x509_crt_parse(crt, static_cast(client_cert), client_cert_len)) != 0) { print_mbedtls_error("mbedtls_x509_crt_parse", ret); + mbedtls_x509_crt_free(crt); + delete crt; return NSAPI_ERROR_PARAMETER; } mbedtls_pk_init(&_pkctx); if ((ret = mbedtls_pk_parse_key(&_pkctx, static_cast(client_private_key_pem), client_private_key_len, NULL, 0)) != 0) { print_mbedtls_error("mbedtls_pk_parse_key", ret); + mbedtls_x509_crt_free(crt); + delete crt; return NSAPI_ERROR_PARAMETER; } set_own_cert(crt); @@ -287,7 +303,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 +357,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/UDPSocket.cpp b/features/netsocket/UDPSocket.cpp index a200183ba6c..d5041144dc9 100644 --- a/features/netsocket/UDPSocket.cpp +++ b/features/netsocket/UDPSocket.cpp @@ -43,7 +43,14 @@ nsapi_error_t UDPSocket::connect(const SocketAddress &address) nsapi_size_or_error_t UDPSocket::sendto(const char *host, uint16_t port, const void *data, nsapi_size_t size) { SocketAddress address; - nsapi_size_or_error_t err = _stack->gethostbyname(host, &address); + nsapi_size_or_error_t err; + + if (!strcmp(_interface_name, "")) { + err = _stack->gethostbyname(host, &address); + } else { + err = _stack->gethostbyname(host, &address, NSAPI_UNSPEC, _interface_name); + } + if (err) { return NSAPI_ERROR_DNS_FAILURE; } diff --git a/features/netsocket/WiFiInterface.h b/features/netsocket/WiFiInterface.h index a96a742695d..4a3ed9cea68 100644 --- a/features/netsocket/WiFiInterface.h +++ b/features/netsocket/WiFiInterface.h @@ -123,6 +123,18 @@ class WiFiInterface: public virtual NetworkInterface { */ static WiFiInterface *get_target_default_instance(); #endif //!defined(DOXYGEN_ONLY) + +public: + /** Set default parameters on a Wi-Fi interface. + * + * A Wi-Fi interface instantiated directly or using + * WiFiInterface::get_default_instance() is initially unconfigured. + * This call can be used to set the default parameters that would + * have been set if the interface had been requested using + * NetworkInterface::get_default_instance() (see nsapi JSON + * configuration). + */ + virtual void set_default_parameters(); }; #endif diff --git a/features/netsocket/cellular/CellularNonIPSocket.cpp b/features/netsocket/cellular/CellularNonIPSocket.cpp new file mode 100644 index 00000000000..30bda5390bb --- /dev/null +++ b/features/netsocket/cellular/CellularNonIPSocket.cpp @@ -0,0 +1,264 @@ +/* CellularNonIPSocket +#include + * Copyright (c) 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. + */ + +#include "platform/Callback.h" +#include "CellularNonIPSocket.h" +#include + +using namespace mbed; + +CellularNonIPSocket::CellularNonIPSocket() + : _timeout(osWaitForever), + _readers(0), _writers(0), _pending(0), + _cp_netif(NULL), + _opened(false) +{} + +nsapi_error_t CellularNonIPSocket::open(CellularContext *cellular_context) +{ + if (cellular_context == NULL) { + return NSAPI_ERROR_PARAMETER; + } + + return open(cellular_context->get_cp_netif()); +} + +CellularNonIPSocket::~CellularNonIPSocket() +{ + close(); +} + +nsapi_error_t CellularNonIPSocket::open(ControlPlane_netif *cp_netif) +{ + _lock.lock(); + + if (_cp_netif != NULL || cp_netif == NULL) { + _lock.unlock(); + return NSAPI_ERROR_PARAMETER; + } + _cp_netif = cp_netif; + + _event = callback(this, &CellularNonIPSocket::event); + _cp_netif->attach(Callback::thunk, &_event); + _opened = true; + + _lock.unlock(); + return NSAPI_ERROR_OK; +} + +nsapi_error_t CellularNonIPSocket::close() +{ + _lock.lock(); + + nsapi_error_t ret = NSAPI_ERROR_OK; + if (!_opened) { + return NSAPI_ERROR_NO_SOCKET; + } + + // Just in case - tell the stack not to callback any more, then remove this socket. + _cp_netif->attach(0, 0); + _opened = false; + _cp_netif = 0; // Invalidate the cp_netif pointer - otherwise open() fails. + + // Wakeup anything in a blocking operation + // on this socket + event(); + + // Wait until all readers and writers are gone + while (_readers || _writers) { + _lock.unlock(); + _event_flag.wait_any(FINISHED_FLAG, osWaitForever); + _lock.lock(); + } + + _lock.unlock(); + + return ret; +} + +nsapi_size_or_error_t CellularNonIPSocket::send(const void *data, nsapi_size_t size) +{ + _lock.lock(); + nsapi_size_or_error_t ret; + + _writers++; + + while (true) { + if (!_opened) { + ret = NSAPI_ERROR_NO_SOCKET; + break; + } + + _pending = 0; + nsapi_size_or_error_t sent = _cp_netif->send(data, size); + if ((0 == _timeout) || (NSAPI_ERROR_WOULD_BLOCK != sent)) { + ret = sent; + break; + } else { + uint32_t flag; + + // Release lock before blocking so other threads + // accessing this object aren't blocked + _lock.unlock(); + flag = _event_flag.wait_any(WRITE_FLAG, _timeout); + _lock.lock(); + + if (flag & osFlagsError) { + // Timeout break + ret = NSAPI_ERROR_WOULD_BLOCK; + break; + } + } + } + + _writers--; + if (!_opened || !_writers) { + _event_flag.set(FINISHED_FLAG); + } + _lock.unlock(); + return ret; +} + +nsapi_size_or_error_t CellularNonIPSocket::recv(void *buffer, nsapi_size_t size) +{ + _lock.lock(); + nsapi_size_or_error_t ret; + + _readers++; + + while (true) { + if (!_opened) { + ret = NSAPI_ERROR_NO_SOCKET; + break; + } + + _pending = 0; + nsapi_size_or_error_t recv = _cp_netif->recv(buffer, size); + + // Non-blocking sockets always return. Blocking only returns when success or errors other than WOULD_BLOCK + if ((0 == _timeout) || (NSAPI_ERROR_WOULD_BLOCK != recv)) { + ret = recv; + break; + } else { + uint32_t flag; + + // Release lock before blocking so other threads + // accessing this object aren't blocked + _lock.unlock(); + flag = _event_flag.wait_any(READ_FLAG, _timeout); + _lock.lock(); + + if (flag & osFlagsError) { + // Timeout break + ret = NSAPI_ERROR_WOULD_BLOCK; + break; + } + } + } + + _readers--; + if (!_opened || !_readers) { + _event_flag.set(FINISHED_FLAG); + } + + _lock.unlock(); + return ret; +} + +void CellularNonIPSocket::set_blocking(bool blocking) +{ + set_timeout(blocking ? -1 : 0); +} + +void CellularNonIPSocket::set_timeout(int timeout) +{ + _lock.lock(); + + if (timeout >= 0) { + _timeout = (uint32_t)timeout; + } else { + _timeout = osWaitForever; + } + + _lock.unlock(); +} + +void CellularNonIPSocket::event() +{ + _event_flag.set(READ_FLAG | WRITE_FLAG); + + _pending += 1; + if (_callback && _pending == 1) { + _callback(); + } +} + +void CellularNonIPSocket::sigio(Callback callback) +{ + _lock.lock(); + _callback = callback; + _lock.unlock(); +} + +nsapi_error_t CellularNonIPSocket::connect(const SocketAddress &address) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +Socket *CellularNonIPSocket::accept(nsapi_error_t *error) +{ + if (error) { + *error = NSAPI_ERROR_UNSUPPORTED; + } + return NULL; +} + +nsapi_error_t CellularNonIPSocket::listen(int backlog) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +nsapi_size_or_error_t CellularNonIPSocket::sendto(const SocketAddress &address, + const void *data, nsapi_size_t size) +{ + return NSAPI_ERROR_UNSUPPORTED; +} +nsapi_size_or_error_t CellularNonIPSocket::recvfrom(SocketAddress *address, + void *data, nsapi_size_t size) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +nsapi_error_t CellularNonIPSocket::setsockopt(int level, int optname, const void *optval, unsigned optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +nsapi_error_t CellularNonIPSocket::getsockopt(int level, int optname, void *optval, unsigned *optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +nsapi_error_t CellularNonIPSocket::getpeername(SocketAddress *address) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +nsapi_error_t CellularNonIPSocket::bind(const SocketAddress &address) +{ + return NSAPI_ERROR_UNSUPPORTED; +} diff --git a/features/netsocket/cellular/CellularNonIPSocket.h b/features/netsocket/cellular/CellularNonIPSocket.h new file mode 100644 index 00000000000..d9a356ee843 --- /dev/null +++ b/features/netsocket/cellular/CellularNonIPSocket.h @@ -0,0 +1,160 @@ +/* CellularNonIPSocket + * Copyright (c) 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 CELLULARNONIPSOCKET_H +#define CELLULARNONIPSOCKET_H + +#include "netsocket/Socket.h" +#include "rtos/Mutex.h" +#include "rtos/EventFlags.h" +#include "Callback.h" +#include "mbed_toolchain.h" +#include "ControlPlane_netif.h" +#include "CellularContext.h" + +namespace mbed { + +/** \addtogroup netsocket */ +/** @{*/ + +/** Socket implementation for cellular Non-IP data delivery(NIDD). + * Relies on Control Plane CIoT EPS optimization feature, + * implemented in ControlPlane_netif class. + */ +class CellularNonIPSocket : public Socket { +public: + /** Destroy the socket. + * + * @note Closes socket if it's still open. + */ + virtual ~CellularNonIPSocket(); + + /** Creates a socket. + */ + CellularNonIPSocket(); + + /** Opens a socket on the given cellular context. + * + * @param cellular_context Cellular PDP context over which this socket is sending and + * receiving data. The context has support for providing + * a control plane interface for data delivery. + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER otherwise + */ + virtual nsapi_error_t open(mbed::CellularContext *cellular_context); + + /** Opens a socket that will use the given control plane interface for data delivery. + * Attaches the event as callback to the control plane interface. + * + * @param cp_netif Control plane interface for data delivery. + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_PARAMETER otherwise + * + */ + virtual nsapi_error_t open(mbed::ControlPlane_netif *cp_netif); + + /** Closes socket + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_NO_SOCKET otherwise + */ + + virtual nsapi_error_t close(); + + /** Send data over a control plane cellular context. + * + * By default, send blocks until all data is sent. If socket is set to + * nonblocking 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 be sent. + * @param size Size of the buffer in bytes. + * @return Number of sent bytes on success, negative error + * code on failure. + */ + virtual nsapi_size_or_error_t send(const void *data, nsapi_size_t size); + + /** Receive data from a socket. + * + * By default, recv blocks until some data is received. If socket is set to + * nonblocking or times out, NSAPI_ERROR_WOULD_BLOCK can be returned to + * indicate no data. + * + * @param data Pointer to buffer for received data. + * @param size Size of the buffer in bytes. + * @return Number of received bytes on success, negative error + * code on failure. + */ + virtual nsapi_size_or_error_t recv(void *data, nsapi_size_t size); + + /** @copydoc Socket::set_blocking + */ + virtual void set_blocking(bool blocking); + + /** @copydoc Socket::set_timeout + */ + virtual void set_timeout(int timeout); + + /** @copydoc Socket::sigio + */ + virtual void sigio(mbed::Callback func); + + /// NOT APPLICABLE + virtual nsapi_error_t connect(const SocketAddress &address); + /// NOT APPLICABLE + virtual Socket *accept(nsapi_error_t *error = NULL); + /// NOT APPLICABLE + virtual nsapi_error_t listen(int backlog = 1); + /// NOT APPLICABLE + virtual nsapi_error_t setsockopt(int level, int optname, const void *optval, unsigned optlen); + /// NOT APPLICABLE + virtual nsapi_error_t getsockopt(int level, int optname, void *optval, unsigned *optlen); + /// NOT APPLICABLE + virtual nsapi_error_t getpeername(SocketAddress *address); + /// NOT APPLICABLE + virtual nsapi_size_or_error_t sendto(const SocketAddress &address, + const void *data, nsapi_size_t size); + /// NOT APPLICABLE + virtual nsapi_size_or_error_t recvfrom(SocketAddress *address, + void *data, nsapi_size_t size); + /// NOT APPLICABLE + virtual nsapi_error_t bind(const SocketAddress &address); + +protected: + virtual void event(); + + uint32_t _timeout; + mbed::Callback _event; + mbed::Callback _callback; + rtos::EventFlags _event_flag; + rtos::Mutex _lock; + uint8_t _readers; + uint8_t _writers; + volatile unsigned _pending; + + // Event flags + static const int READ_FLAG = 0x1u; + static const int WRITE_FLAG = 0x2u; + static const int FINISHED_FLAG = 0x3u; + + ControlPlane_netif *_cp_netif; + bool _opened; +}; + +/** @}*/ +} // namespace mbed + +#endif // CELLULARNONIPSOCKET_H diff --git a/features/netsocket/cellular/ControlPlane_netif.h b/features/netsocket/cellular/ControlPlane_netif.h new file mode 100644 index 00000000000..97e3e903d33 --- /dev/null +++ b/features/netsocket/cellular/ControlPlane_netif.h @@ -0,0 +1,98 @@ +/* + * 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 CONTROLPLANE_NETIF_H_ +#define CONTROLPLANE_NETIF_H_ + +#include "nsapi_types.h" + +/** @file ControlPlane_netif.h + * @brief Implements support for data transfer using Control Plane CIoT EPS optimization. + * + */ + +namespace mbed { + +/* Length of the buffer storing data received over control plane */ +#define MAX_CP_DATA_RECV_LEN 2048 + +// TODO: need to make this l3ip compatible + +/** + * @addtogroup cellular + * @{ + */ + +/** Implements support for data transfer using + * Control Plane CIoT EPS optimization specified in 3GPP 23.401(4.10), 3GPP 23.682(4.5.14). + */ +class ControlPlane_netif { +public: + ControlPlane_netif() {} + virtual ~ControlPlane_netif() {} + +protected: + friend class CellularNonIPSocket; + friend class CellularContext; + + /** Send data over cellular control plane + * + * @param cpdata Buffer of data to be sent over control plane connection + * @param cpdata_length Length of data in bytes + * @return Number of sent bytes on success, negative error + * code on failure. + */ + virtual nsapi_size_or_error_t send(const void *cpdata, nsapi_size_t cpdata_length) = 0; + + /** Receive data over cellular control plane + * + * @param cpdata Destination buffer for data received from control plane connection + * @param cpdata_length Length of data in bytes + * @return Number of received bytes on success, negative error + * code on failure. + */ + virtual nsapi_size_or_error_t recv(void *cpdata, nsapi_size_t cpdata_length) = 0; + + /** Receives data from the control plane PDP context + * + * This function is called by cellular PDP context when data + * is received from network. It will invoke the callback set + * by the above attach. + * + */ + virtual void data_received() = 0; + + /** 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 successfully and on 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. + * + * @param callback Function to call on state change + * @param data Argument to pass to callback + */ + virtual void attach(void (*callback)(void *), void *data) = 0; +}; + +/** + * @} + */ + +} // mbed namespace +#endif diff --git a/features/netsocket/cellular/generic_modem_driver/OnboardCellularInterface.cpp b/features/netsocket/cellular/generic_modem_driver/OnboardCellularInterface.cpp deleted file mode 100644 index a1e39a8853b..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/OnboardCellularInterface.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright (c) 2017 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 "mbed_toolchain.h" -#include "CellularBase.h" -#include "OnboardCellularInterface.h" - -#ifndef CELLULAR_DEVICE - -#if MODEM_ON_BOARD && MODEM_ON_BOARD_UART && NSAPI_PPP_AVAILABLE - -#include "onboard_modem_api.h" - -/** - * OnboardCellularInterface is an on-board specific implementation. - * - */ - -OnboardCellularInterface::OnboardCellularInterface(bool debug) : - UARTCellularInterface(MDMTXD, MDMRXD, MDMDCD, MDMRTS, - MDMCTS, MDMRI, MDMDTR, MDMDSR, - MBED_CONF_PPP_CELL_IFACE_BAUD_RATE, MDM_PIN_POLARITY, debug) -{ -} - -OnboardCellularInterface::~OnboardCellularInterface() -{ -} - -void OnboardCellularInterface::modem_init() -{ - ::onboard_modem_init(); -} - -void OnboardCellularInterface::modem_deinit() -{ - ::onboard_modem_deinit(); -} - -void OnboardCellularInterface::modem_power_up() -{ - ::onboard_modem_power_up(); -} - -void OnboardCellularInterface::modem_power_down() -{ - ::onboard_modem_power_down(); -} -#endif - -#endif // CELLULAR_DEVICE - -#ifdef CELLULAR_DEVICE -MBED_WEAK CellularBase *CellularBase::get_target_default_instance() -{ - return CellularContext::get_default_instance(); -} -#elif defined ONBOARD_CELLULAR_INTERFACE_AVAILABLE -MBED_WEAK CellularBase *CellularBase::get_target_default_instance() -{ - static OnboardCellularInterface cellular; - - return &cellular; -} -#else -MBED_WEAK CellularBase *CellularBase::get_target_default_instance() -{ - return NULL; -} -#endif diff --git a/features/netsocket/cellular/generic_modem_driver/OnboardCellularInterface.h b/features/netsocket/cellular/generic_modem_driver/OnboardCellularInterface.h deleted file mode 100644 index 8aa049b2612..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/OnboardCellularInterface.h +++ /dev/null @@ -1,174 +0,0 @@ -/* Copyright (c) 2017 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 ONBOARD_CELLULAR_INTERFACE_ -#define ONBOARD_CELLULAR_INTERFACE_ - -#include "CellularContext.h" -#ifdef CELLULAR_DEVICE -using namespace mbed; -MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use CellularBase::get_default_instance() instead.") -class OnboardCellularInterface : public CellularBase { -public: - OnboardCellularInterface(bool debug = false) - { - context = CellularContext::get_default_instance(); - MBED_ASSERT(context != NULL); - CellularDevice *dev = CellularDevice::get_default_instance(); - MBED_ASSERT(dev != NULL); - dev->modem_debug_on(debug); - } -public: // from NetworkInterface - virtual nsapi_error_t set_blocking(bool blocking) - { - return context->set_blocking(blocking); - } - virtual NetworkStack *get_stack() - { - return context->get_stack(); - } - virtual const char *get_ip_address() - { - return context->get_ip_address(); - } - virtual void attach(mbed::Callback status_cb) - { - context->attach(status_cb); - } - virtual nsapi_error_t connect() - { - return context->connect(); - } - virtual nsapi_error_t disconnect() - { - return context->disconnect(); - } - - // from CellularBase - virtual void set_plmn(const char *plmn) - { - context->set_plmn(plmn); - } - virtual void set_sim_pin(const char *sim_pin) - { - context->set_sim_pin(sim_pin); - } - virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0, const char *uname = 0, - const char *pwd = 0) - { - return context->connect(sim_pin, apn, uname, pwd); - } - virtual void set_credentials(const char *apn, const char *uname = 0, const char *pwd = 0) - { - context->set_credentials(apn, uname, pwd); - } - virtual const char *get_netmask() - { - return context->get_netmask(); - } - virtual const char *get_gateway() - { - return context->get_gateway(); - } - virtual bool is_connected() - { - return context->is_connected(); - } - -private: - CellularContext *context; -}; - -#define ONBOARD_CELLULAR_INTERFACE_AVAILABLE -#elif MODEM_ON_BOARD && MODEM_ON_BOARD_UART && NSAPI_PPP_AVAILABLE - -#include "UARTCellularInterface.h" - -/** OnboardCellularInterface class - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/framework/API/CellularPower.h instead. - * - * This interface serves as the controller/driver for an - * onboard modem implementing onboard_modem_api.h. - * - * Depending on the type of on-board modem, OnboardCellularInterface - * could be derived from different implementation classes. - * Portable applications should only rely on it being a CellularBase. - */ - -class OnboardCellularInterface : public UARTCellularInterface { - -public: - - /** Constructor - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/framework/API/CellularPower.h instead. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/framework/API/CellularPower.h instead.") - OnboardCellularInterface(bool debug = false); - - /** Destructor - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/framework/API/CellularPower.h instead. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/framework/API/CellularPower.h instead.") - virtual ~OnboardCellularInterface(); - -protected: - /** Sets the modem up for powering on - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/framework/API/CellularPower.h instead. - * - * modem_init() is equivalent to plugging in the device, for example, attaching power and serial port. - * Uses onboard_modem_api.h where the target provides the implementation of onboard_modem_api. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/framework/API/CellularPower.h instead.") - virtual void modem_init(); - - /** Sets the modem in unplugged state - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/framework/API/CellularPower.h instead. - * - * modem_deinit() will be equivalent to pulling the plug off of the device, in other words, detaching power - * and serial port. This puts the modem in lowest power state. - * Uses onboard_modem_api.h where the target provides the implementation of onboard_modem_api. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/framework/API/CellularPower.h instead.") - virtual void modem_deinit(); - - /** Powers up the modem - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/framework/API/CellularPower.h instead. - * - * modem_power_up() is equivalent to pressing the soft power button. - * The driver may repeat this if the modem is not responsive to AT commands. - * Uses onboard_modem_api.h where the target provides the implementation of onboard_modem_api. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/framework/API/CellularPower.h instead.") - virtual void modem_power_up(); - - /** Powers down the modem - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/framework/API/CellularPower.h instead. - * - * modem_power_down() is equivalent to turning off the modem by button press. - * Uses onboard_modem_api.h where the target provides the implementation of onboard_modem_api. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/framework/API/CellularPower.h instead.") - virtual void modem_power_down(); -}; - -#define ONBOARD_CELLULAR_INTERFACE_AVAILABLE - -#endif //MODEM_ON_BOARD && MODEM_ON_BOARD_UART && NSAPI_PPP_AVAILABLE -#endif //ONBOARD_CELLULAR_INTERFACE_ diff --git a/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.cpp b/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.cpp deleted file mode 100644 index c0ebe799a9d..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.cpp +++ /dev/null @@ -1,849 +0,0 @@ -/* Copyright (c) 2017 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 "PPPCellularInterface.h" - -#if NSAPI_PPP_AVAILABLE - -#include -#include "nsapi_ppp.h" -#if MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP -#include "APN_db.h" -#endif //MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP -#include "mbed_trace.h" -#define TRACE_GROUP "UCID" - -#include "mbed_wait_api.h" - -using namespace mbed; - -/** - * PDP (packet data profile) Context - */ -#define CTX "1" - -/** - * Output Enter sequence for the modem , default CR - */ -#define OUTPUT_ENTER_KEY "\r" - -#if MBED_CONF_PPP_CELL_IFACE_AT_PARSER_BUFFER_SIZE -#define AT_PARSER_BUFFER_SIZE MBED_CONF_PPP_CELL_IFACE_AT_PARSER_BUFFER_SIZE //bytes -#else -#define AT_PARSER_BUFFER_SIZE 256 //bytes -#endif //MBED_CONF_PPP_CELL_IFACE_AT_PARSER_BUFFER_SIZE - -#if MBED_CONF_PPP_CELL_IFACE_AT_PARSER_TIMEOUT -#define AT_PARSER_TIMEOUT MBED_CONF_PPP_CELL_IFACE_AT_PARSER_TIMEOUT -#else -#define AT_PARSER_TIMEOUT 8*1000 //miliseconds -#endif //MBED_CONF_PPP_CELL_IFACE_AT_PARSER_TIMEOUT - -static bool initialized; -static bool set_sim_pin_check_request; -static bool change_pin; -static device_info dev_info; - -static void parser_abort(ATCmdParser *at) -{ - at->abort(); -} - -static bool get_CCID(ATCmdParser *at) -{ - // Returns the ICCID (Integrated Circuit Card ID) of the SIM-card. - // ICCID is a serial number identifying the SIM. - bool success = at->send("AT+CCID") && at->recv("+CCID: %20[^\n]\nOK\n", dev_info.ccid); - tr_debug("DevInfo: CCID=%s", dev_info.ccid); - return success; -} - -static bool get_IMSI(ATCmdParser *at) -{ - // International mobile subscriber identification - bool success = at->send("AT+CIMI") && at->recv("%15[^\n]\nOK\n", dev_info.imsi); - tr_debug("DevInfo: IMSI=%s", dev_info.imsi); - return success; -} - -static bool get_IMEI(ATCmdParser *at) -{ - // International mobile equipment identifier - bool success = at->send("AT+CGSN") && at->recv("%15[^\n]\nOK\n", dev_info.imei); - tr_debug("DevInfo: IMEI=%s", dev_info.imei); - return success; -} - -static bool get_MEID(ATCmdParser *at) -{ - // Mobile equipment identifier - bool success = at->send("AT+GSN") - && at->recv("%18[^\n]\nOK\n", dev_info.meid); - tr_debug("DevInfo: MEID=%s", dev_info.meid); - return success; -} - -static bool set_CMGF(ATCmdParser *at) -{ - // Preferred message format - // set AT+CMGF=[mode] , 0 PDU mode, 1 text mode - bool success = at->send("AT+CMGF=1") && at->recv("OK"); - return success; -} - -static bool set_CNMI(ATCmdParser *at) -{ - // New SMS indication configuration - // set AT+CMTI=[mode, index] , 0 PDU mode, 1 text mode - // Multiple URCs for SMS, i.e., CMT, CMTI, UCMT, CBMI, CDSI as DTE could be following any of these SMS formats - bool success = at->send("AT+CNMI=2," CTX) && at->recv("OK"); - return success; -} - -static void CMTI_URC(ATCmdParser *at) -{ - // our CMGF = 1, i.e., text mode. So we expect response in this format: - //+CMTI: ,, - at->recv(": %*u,%*u"); - tr_info("New SMS received"); - -} - -static void CMT_URC(ATCmdParser *at) -{ - // our CMGF = 1, i.e., text mode. So we expect response in this format: - //+CMT: ,[],[,, - //,,,,, - //] - // By default detailed SMS header CSDH=0 , so we are not expecting [,, - //,,,, - char sms[50]; - char service_timestamp[15]; - at->recv(": %49[^\"]\",,%14[^\"]\"\n", sms, service_timestamp); - - tr_info("SMS:%s, %s", service_timestamp, sms); - -} - -static bool set_atd(ATCmdParser *at) -{ - bool success = at->send("ATD*99***" CTX "#") && at->recv("CONNECT"); - - return success; -} - -/** - * Enables or disables SIM pin check lock - */ -static nsapi_error_t do_sim_pin_check(ATCmdParser *at, const char *pin) -{ - bool success; - if (set_sim_pin_check_request) { - /* use the SIM locked */ - success = at->send("AT+CLCK=\"SC\",1,\"%s\"", pin) && at->recv("OK"); - } else { - /* use the SIM unlocked */ - success = at->send("AT+CLCK=\"SC\",0,\"%s\"", pin) && at->recv("OK"); - } - - if (success) { - return NSAPI_ERROR_OK; - } - - return NSAPI_ERROR_AUTH_FAILURE; -} - -/** - * Change the pin code for the SIM card - */ -static nsapi_error_t do_change_sim_pin(ATCmdParser *at, const char *old_pin, const char *new_pin) -{ - /* changes the SIM pin */ - bool success = at->send("AT+CPWD=\"SC\",\"%s\",\"%s\"", old_pin, new_pin) && at->recv("OK"); - if (success) { - return NSAPI_ERROR_OK; - } - - return NSAPI_ERROR_AUTH_FAILURE; -} - -static void set_nwk_reg_status_csd(unsigned int status) -{ - switch (status) { - case CSD_NOT_REGISTERED_NOT_SEARCHING: - case CSD_NOT_REGISTERED_SEARCHING: - break; - case CSD_REGISTERED: - case CSD_REGISTERED_ROAMING: - tr_debug("Registered for circuit switched service"); - break; - case CSD_REGISTRATION_DENIED: - tr_debug("Circuit switched service denied"); - break; - case CSD_UNKNOWN_COVERAGE: - tr_debug("Out of circuit switched service coverage"); - break; - case CSD_SMS_ONLY: - tr_debug("SMS service only"); - break; - case CSD_SMS_ONLY_ROAMING: - tr_debug("SMS service only"); - break; - case CSD_CSFB_NOT_PREFERRED: - tr_debug("Registered for circuit switched service with CSFB not preferred"); - break; - default: - tr_debug("Unknown circuit switched service registration status. %u", status); - break; - } - - dev_info.reg_status_csd = static_cast(status); -} - -static void set_nwk_reg_status_psd(unsigned int status) -{ - switch (status) { - case PSD_NOT_REGISTERED_NOT_SEARCHING: - case PSD_NOT_REGISTERED_SEARCHING: - break; - case PSD_REGISTERED: - case PSD_REGISTERED_ROAMING: - tr_debug("Registered for packet switched service"); - break; - case PSD_REGISTRATION_DENIED: - tr_debug("Packet switched service denied"); - break; - case PSD_UNKNOWN_COVERAGE: - tr_debug("Out of packet switched service coverage"); - break; - case PSD_EMERGENCY_SERVICES_ONLY: - tr_debug("Limited access for packet switched service. Emergency use only."); - break; - default: - tr_debug("Unknown packet switched service registration status. %u", status); - break; - } - - dev_info.reg_status_psd = static_cast(status); -} - -static bool is_registered_csd() -{ - return (dev_info.reg_status_csd == CSD_REGISTERED) || - (dev_info.reg_status_csd == CSD_REGISTERED_ROAMING) || - (dev_info.reg_status_csd == CSD_CSFB_NOT_PREFERRED); -} - -static bool is_registered_psd() -{ - return (dev_info.reg_status_psd == PSD_REGISTERED) || - (dev_info.reg_status_psd == PSD_REGISTERED_ROAMING); -} - -PPPCellularInterface::PPPCellularInterface(FileHandle *fh, bool debug) -{ - _new_pin = NULL; - _pin = NULL; - _at = NULL; - _apn = NULL; - _uname = NULL; - _pwd = NULL; - _fh = fh; - _debug_trace_on = debug; - _stack = DEFAULT_STACK; - _connection_status_cb = NULL; - _connect_status = NSAPI_STATUS_DISCONNECTED; - _connect_is_blocking = true; - dev_info.reg_status_csd = CSD_NOT_REGISTERED_NOT_SEARCHING; - dev_info.reg_status_psd = PSD_NOT_REGISTERED_NOT_SEARCHING; -} - - -PPPCellularInterface::~PPPCellularInterface() -{ - delete _at; -} - -void PPPCellularInterface::enable_hup(bool) -{ - //meant to be overridden -} - -void PPPCellularInterface::modem_init() -{ - //meant to be overridden -} - -void PPPCellularInterface::modem_deinit() -{ - //meant to be overridden -} - -void PPPCellularInterface::modem_power_up() -{ - //meant to be overridden -} - -void PPPCellularInterface::modem_power_down() -{ - //meant to be overridden -} - -void PPPCellularInterface::modem_debug_on(bool on) -{ - _debug_trace_on = on; -} - -void PPPCellularInterface::ppp_status_cb(nsapi_event_t event, intptr_t parameter) -{ - _connect_status = (nsapi_connection_status_t)parameter; - - if (_connection_status_cb) { - _connection_status_cb(event, parameter); - } -} - -/** - * Public API. Sets up the flag for the driver to enable or disable SIM pin check - * at the next boot. - */ -void PPPCellularInterface::set_sim_pin_check(bool check) -{ - set_sim_pin_check_request = check; -} - -/** - * Public API. Sets up the flag for the driver to change pin code for SIM card - */ -void PPPCellularInterface::set_new_sim_pin(const char *new_pin) -{ - change_pin = true; - _new_pin = new_pin; -} - -bool PPPCellularInterface::nwk_registration(uint8_t nwk_type) -{ - bool success = false; - bool registered = false; - - char str[35]; - int retcode; - int retry_counter = 0; - unsigned int reg_status; - - success = nwk_type == PACKET_SWITCHED ? - _at->send("AT+CGREG=0") : - _at->send("AT+CREG=0") && _at->recv("OK\n"); - - success = _at->send("AT+COPS=0") //initiate auto-registration - && _at->recv("OK"); - if (!success) { - tr_error("Modem not responding."); - return false; - } - - //Network search - //If not registered after 60 attempts, i.e., 30 seconds wait, give up - tr_debug("Searching Network ..."); - - while (!registered) { - - if (retry_counter > 60) { - success = false; - goto give_up; - } - - success = nwk_type == PACKET_SWITCHED ? - _at->send("AT+CGREG?") - && _at->recv("+CGREG: %34[^\n]\n", str) - && _at->recv("OK\n") : - _at->send("AT+CREG?") - && _at->recv("+CREG: %34[^\n]\n", str) - && _at->recv("OK\n"); - - retcode = sscanf(str, "%*u,%u", ®_status); - - if (retcode >= 1) { - if (nwk_type == PACKET_SWITCHED) { - set_nwk_reg_status_psd(reg_status); - if (is_registered_psd()) { - registered = true; - } - } else if (nwk_type == CIRCUIT_SWITCHED) { - set_nwk_reg_status_csd(reg_status); - if (is_registered_csd()) { - registered = true; - } - } - } - - if (registered) { - break; - } else { - wait_ms(500); - } - - retry_counter++; - } - -give_up: - return registered; -} - -bool PPPCellularInterface::is_connected() -{ - return (_connect_status == NSAPI_STATUS_GLOBAL_UP || _connect_status == NSAPI_STATUS_LOCAL_UP); -} - -// Get the SIM card going. -nsapi_error_t PPPCellularInterface::initialize_sim_card() -{ - nsapi_error_t nsapi_error = NSAPI_ERROR_AUTH_FAILURE; - int retry_count = 0; - bool done = false; - - /* SIM initialization may take a significant amount, so an error is - * kind of expected. We should retry 10 times until we succeed or timeout. */ - for (retry_count = 0; !done && (retry_count < 10); retry_count++) { - char pinstr[16]; - - if (_at->send("AT+CPIN?") && _at->recv("+CPIN: %15[^\n]\nOK\n", pinstr)) { - if (strcmp(pinstr, "SIM PIN") == 0) { - if (!_at->send("AT+CPIN=\"%s\"", _pin) || !_at->recv("OK")) { - tr_debug("PIN correct"); - nsapi_error = NSAPI_ERROR_OK; - } - } else if (strcmp(pinstr, "READY") == 0) { - tr_debug("SIM Ready"); - nsapi_error = NSAPI_ERROR_OK; - done = true; - } else { - tr_debug("Unexpected response from SIM: \"%s\"", pinstr); - } - } - - /* wait for a second before retry */ - wait_ms(1000); - } - - if (!done) { - tr_error("SIM not ready."); - } - - return nsapi_error; -} - -void PPPCellularInterface::set_sim_pin(const char *pin) -{ - /* overwrite the default pin by user provided pin */ - _pin = pin; -} - -nsapi_error_t PPPCellularInterface::setup_context_and_credentials() -{ - bool success; - - if (!_apn) { - return NSAPI_ERROR_PARAMETER; - } - -#if NSAPI_PPP_IPV4_AVAILABLE && NSAPI_PPP_IPV6_AVAILABLE - const char ipv4v6_pdp_type[] = {"IPV4V6"}; - const char ipv4_pdp_type[] = {"IP"}; - const char *pdp_type = ipv4v6_pdp_type; - _stack = IPV4V6_STACK; -#elif NSAPI_PPP_IPV6_AVAILABLE - const char pdp_type[] = {"IPV6"}; -#elif NSAPI_PPP_IPV4_AVAILABLE - const char pdp_type[] = {"IP"}; -#endif - const char *auth = _uname && _pwd ? "CHAP:" : ""; - -#if NSAPI_PPP_IPV4_AVAILABLE && NSAPI_PPP_IPV6_AVAILABLE -retry_without_dual_stack: -#endif - success = _at->send("AT" - "+FCLASS=0;" // set to connection (ATD) to data mode - "+CGDCONT=" CTX ",\"%s\",\"%s%s\"", - pdp_type, auth, _apn - ) - && _at->recv("OK"); - -#if NSAPI_PPP_IPV4_AVAILABLE && NSAPI_PPP_IPV6_AVAILABLE - if (_stack == IPV4V6_STACK) { - if (!success) { - // fallback to ipv4 - pdp_type = ipv4_pdp_type; - _stack = IPV4_STACK; - goto retry_without_dual_stack; - } - } -#endif - - if (!success) { - _at->recv("OK"); - } - - return success ? NSAPI_ERROR_OK : NSAPI_ERROR_PARAMETER; - -} - -void PPPCellularInterface::set_credentials(const char *apn, const char *uname, - const char *pwd) -{ - _apn = apn; - _uname = uname; - _pwd = pwd; -} - -void PPPCellularInterface::setup_at_parser() -{ - if (_at) { - return; - } - - _at = new ATCmdParser(_fh, OUTPUT_ENTER_KEY, AT_PARSER_BUFFER_SIZE, AT_PARSER_TIMEOUT, - _debug_trace_on ? true : false); - - /* Error cases, out of band handling */ - _at->oob("ERROR", callback(parser_abort, _at)); - _at->oob("+CME ERROR", callback(parser_abort, _at)); - _at->oob("+CMS ERROR", callback(parser_abort, _at)); - _at->oob("NO CARRIER", callback(parser_abort, _at)); - - /* URCs, handled out of band */ - _at->oob("+CMT", callback(CMT_URC, _at)); - _at->oob("+CMTI", callback(CMTI_URC, _at)); -} - -void PPPCellularInterface::shutdown_at_parser() -{ - delete _at; - _at = NULL; -} - -nsapi_error_t PPPCellularInterface::connect(const char *sim_pin, const char *apn, const char *uname, const char *pwd) -{ - if (!sim_pin) { - return NSAPI_ERROR_PARAMETER; - } - - _pin = sim_pin; - - if (apn) { - if (pwd && !uname) { - return NSAPI_ERROR_PARAMETER; - } - set_credentials(apn, uname, pwd); - } - - return connect(); -} - -nsapi_error_t PPPCellularInterface::connect() -{ - nsapi_error_t retcode; - bool success; - bool did_init = false; - const char *apn_config = NULL; - bool user_specified_apn = false; - - /* If the user has specified the APN then use that or, - * if we are not using the APN database, set _apn to - * "internet" as a best guess - */ - if (_apn) { - user_specified_apn = true; - } else { -#ifndef MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP - _apn = "internet"; - user_specified_apn = true; -#endif - } - - if (is_connected()) { - return NSAPI_ERROR_IS_CONNECTED; - } else if (_connect_status == NSAPI_STATUS_CONNECTING) { - return NSAPI_ERROR_ALREADY; - } - - _connect_status = NSAPI_STATUS_CONNECTING; - if (_connection_status_cb) { - _connection_status_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, NSAPI_STATUS_CONNECTING); - } - - do { -retry_init: - - retcode = NSAPI_ERROR_OK; - - /* setup AT parser */ - setup_at_parser(); - - if (!initialized) { - - /* If we have hangup (eg DCD) detection, we don't want it active - * as long as we are using ATCmdParser. - * As soon as we get into data mode, we will turn it back on. */ - enable_hup(false); - - if (!power_up()) { - retcode = NSAPI_ERROR_DEVICE_ERROR; - break; - } - - retcode = initialize_sim_card(); - if (retcode != NSAPI_ERROR_OK) { - break; - } - - success = nwk_registration(PACKET_SWITCHED) //perform network registration - && get_CCID(_at)//get integrated circuit ID of the SIM - && get_IMSI(_at)//get international mobile subscriber information - && get_IMEI(_at)//get international mobile equipment identifier - && get_MEID(_at)//its same as IMEI - && set_CMGF(_at)//set message format for SMS - && set_CNMI(_at);//set new SMS indication - - if (!success) { - retcode = NSAPI_ERROR_NO_CONNECTION; - break; - } - -#if MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP - if (!apn_config) { - apn_config = apnconfig(dev_info.imsi); - } -#endif - - /* Check if user want skip SIM pin checking on boot up */ - if (set_sim_pin_check_request) { - retcode = do_sim_pin_check(_at, _pin); - if (retcode != NSAPI_ERROR_OK) { - break; - } - /* set this request to false, as it is unnecessary to repeat in case of retry */ - set_sim_pin_check_request = false; - } - - /* check if the user requested a sim pin change */ - if (change_pin) { - retcode = do_change_sim_pin(_at, _pin, _new_pin); - if (retcode != NSAPI_ERROR_OK) { - break; - } - /* set this request to false, as it is unnecessary to repeat in case of retry */ - change_pin = false; - } - -#if MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP - if (!user_specified_apn && apn_config) { - _apn = _APN_GET(apn_config); - _uname = _APN_GET(apn_config); - _pwd = _APN_GET(apn_config); - tr_info("Looked up APN %s.", _apn); - } -#endif - - //sets up APN and IP protocol for external PDP context - retcode = setup_context_and_credentials(); - if (retcode != NSAPI_ERROR_OK) { - break; - } - - if (!success) { - shutdown_at_parser(); - retcode = NSAPI_ERROR_NO_CONNECTION; - break; - } - - initialized = true; - did_init = true; - } else { - /* If we were already initialized, we expect to receive NO_CARRIER response - * from the modem as we were kicked out of Data mode */ - _at->recv("NO CARRIER"); - success = _at->send("AT") && _at->recv("OK"); - } - - tr_info("The APN being used is %s.\n", _apn); - - /* Attempt to enter data mode */ - success = set_atd(_at); //enter into Data mode with the modem - if (!success) { - power_down(); - initialized = false; - - /* if we were previously initialized , i.e., not in this particular attempt, - * we want to re-initialize */ - if (!did_init) { - goto retry_init; - } - - /* shutdown AT parser before notifying application of the failure */ - shutdown_at_parser(); - - retcode = NSAPI_ERROR_NO_CONNECTION; - break; - } - - /* This is the success case. - * Save RAM, discard AT Parser as we have entered Data mode. */ - shutdown_at_parser(); - - /* We now want hangup (e.g., DCD) detection if available */ - enable_hup(true); - - /* Initialize PPP - * mbed_ppp_init() is a blocking call, it will block until - * connected, or timeout after 30 seconds*/ - retcode = nsapi_ppp_connect(_fh, callback(this, &PPPCellularInterface::ppp_status_cb), _uname, _pwd, _stack); - if (retcode == NSAPI_ERROR_OK && _connect_is_blocking) { - _connect_status = NSAPI_STATUS_GLOBAL_UP; - } - } while ((_connect_status == NSAPI_STATUS_CONNECTING && _connect_is_blocking) && - apn_config && *apn_config); - - - if (retcode != NSAPI_ERROR_OK) { - _connect_status = NSAPI_STATUS_DISCONNECTED; - if (_connection_status_cb) { - _connection_status_cb(NSAPI_EVENT_CONNECTION_STATUS_CHANGE, NSAPI_STATUS_DISCONNECTED); - } - } - - - return retcode; -} - -/** - * User initiated disconnect - * - * Disconnects from PPP connection only and brings down the underlying network - * interface - */ -nsapi_error_t PPPCellularInterface::disconnect() -{ - return nsapi_ppp_disconnect(_fh); -} - -const char *PPPCellularInterface::get_ip_address() -{ - return nsapi_ppp_get_ip_addr(_fh); -} - -const char *PPPCellularInterface::get_netmask() -{ - return nsapi_ppp_get_netmask(_fh); -} - -const char *PPPCellularInterface::get_gateway() -{ - return nsapi_ppp_get_gw_addr(_fh); -} - -/** Power down modem - * Uses AT command to do it */ -void PPPCellularInterface::power_down() -{ - modem_power_down(); - modem_deinit(); -} - -/** - * Powers up the modem - * - * Enables the GPIO lines to the modem and then wriggles the power line in short pulses. - */ -bool PPPCellularInterface::power_up() -{ - /* Initialize GPIO lines */ - modem_init(); - /* Give modem a little time to settle down */ - wait(0.25); - - bool success = false; - - int retry_count = 0; - while (true) { - modem_power_up(); - /* Modem tends to spit out noise during power up - don't confuse the parser */ - _at->flush(); - /* It is mandatory to avoid sending data to the serial port during the first 200 ms - * of the module startup. Telit_xE910 Global form factor App note. - * Not necessary for all types of modems however. Let's wait just to be on the safe side */ - wait_ms(200); - _at->set_timeout(1000); - if (_at->send("AT") && _at->recv("OK")) { - tr_info("Modem Ready."); - break; - } - - if (++retry_count > 10) { - goto failure; - } - } - - _at->set_timeout(8000); - - /*For more details regarding DCD and DTR circuitry, please refer to Modem AT manual */ - success = _at->send("AT" - "E0;" //turn off modem echoing - "+CMEE=2;"//turn on verbose responses - "&K0"//turn off RTC/CTS handshaking - "+IPR=115200;"//setup baud rate - "&C1;"//set DCD circuit(109), changes in accordance with the carrier detect status - "&D0")//set DTR circuit, we ignore the state change of DTR - && _at->recv("OK"); - - if (!success) { - goto failure; - } - - /* If everything alright, return from here with success*/ - return success; - -failure: - tr_error("Preliminary modem setup failed."); - return false; -} - -/** - * Get a pointer to the underlying network stack - */ -NetworkStack *PPPCellularInterface::get_stack() -{ - return nsapi_ppp_get_stack(); -} - - -void PPPCellularInterface::attach( - Callback status_cb) -{ - _connection_status_cb = status_cb; -} - -nsapi_connection_status_t PPPCellularInterface::get_connection_status() const -{ - return _connect_status; -} - -nsapi_error_t PPPCellularInterface::set_blocking(bool blocking) -{ - return nsapi_ppp_set_blocking(blocking); -} - - - -#endif // NSAPI_PPP_AVAILABLE diff --git a/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.h b/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.h deleted file mode 100644 index b0658c77dd2..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/PPPCellularInterface.h +++ /dev/null @@ -1,414 +0,0 @@ -/* Copyright (c) 2017 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 PPP_CELLULAR_INTERFACE_ -#define PPP_CELLULAR_INTERFACE_ - -#include "CellularBase.h" -#include "platform/ATCmdParser.h" -#include "ATCmdParser.h" -#include "FileHandle.h" -#include "Callback.h" - -#if NSAPI_PPP_AVAILABLE - -// Forward declaration -class NetworkStack; - -/** - * Network registration status - * UBX-13001820 - AT Commands Example Application Note (Section 4.1.4.5) - */ -typedef enum { - GSM = 0, - COMPACT_GSM = 1, - UTRAN = 2, - EDGE = 3, - HSDPA = 4, - HSUPA = 5, - HSDPA_HSUPA = 6, - LTE = 7 -} radio_access_nwk_type; - -/** - * Used in registration process to tell which type of network - * to connect. - */ -typedef enum { - CIRCUIT_SWITCHED = 0, - PACKET_SWITCHED -} nwk_type; - -/** - * Circuit Switched network registration status (CREG Usage) - * UBX-13001820 - AT Commands Example Application Note (Section 7.10.3) - */ -typedef enum { - CSD_NOT_REGISTERED_NOT_SEARCHING = 0, - CSD_REGISTERED = 1, - CSD_NOT_REGISTERED_SEARCHING = 2, - CSD_REGISTRATION_DENIED = 3, - CSD_UNKNOWN_COVERAGE = 4, - CSD_REGISTERED_ROAMING = 5, - CSD_SMS_ONLY = 6, - CSD_SMS_ONLY_ROAMING = 7, - CSD_CSFB_NOT_PREFERRED = 9 -} nwk_registration_status_csd; - -/** - * Packet Switched network registration status (CGREG Usage) - * UBX-13001820 - AT Commands Example Application Note (Section 18.27.3) - */ -typedef enum { - PSD_NOT_REGISTERED_NOT_SEARCHING = 0, - PSD_REGISTERED = 1, - PSD_NOT_REGISTERED_SEARCHING = 2, - PSD_REGISTRATION_DENIED = 3, - PSD_UNKNOWN_COVERAGE = 4, - PSD_REGISTERED_ROAMING = 5, - PSD_EMERGENCY_SERVICES_ONLY = 8 -} nwk_registration_status_psd; - -typedef struct { - char ccid[20 + 1]; //!< Integrated Circuit Card ID - char imsi[15 + 1]; //!< International Mobile Station Identity - char imei[15 + 1]; //!< International Mobile Equipment Identity - char meid[18 + 1]; //!< Mobile Equipment IDentifier - int flags; - radio_access_nwk_type rat; - nwk_registration_status_csd reg_status_csd; - nwk_registration_status_psd reg_status_psd; -} device_info; - -/** PPPCellularInterface class - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * This interface serves as the controller/driver for the Cellular - * modems (tested with UBLOX_C027 and MTS_DRAGONFLY_F411RE). - * - * The driver will work with any generic FileHandle, and can be - * derived from in order to provide forms for specific interfaces, as well as - * adding extra power and reset controls alongside the FileHandle. - */ - -class PPPCellularInterface : public CellularBase { - -public: - - /** Constructor for a generic modem, using a single FileHandle for commands and PPP data. - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * The file handle pointer is not accessed within the constructor, only recorded for later - * 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(mbed::FileHandle *fh, bool debug = false); - - /** Destructor - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual ~PPPCellularInterface(); - - /** Set the Cellular network credentials - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * Please check documentation of connect() for default behavior of APN settings. - * - * @param apn Access point name - * @param uname optionally, Username - * @param pwd optionally, password - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual void set_credentials(const char *apn, const char *uname = 0, - const char *pwd = 0); - - /** Set the pin code for SIM card - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * @param sim_pin PIN for the SIM card - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual void set_sim_pin(const char *sim_pin); - - /** Start the interface - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * Attempts to connect to a Cellular network. - * This driver is written mainly for data network connections as CellularBase - * is NetworkInterface. That's why connect() call internally calls nwk_registration() - * method with parameter PACKET_SWITCHED network. Circuit switched hook and registration - * process is implemented and left in the driver for future extension/subclass support,e.g., - * an SMS or GPS extension. - * - * @param sim_pin PIN for the SIM card - * @param apn optionally, access point name - * @param uname optionally, Username - * @param pwd optionally, password - * @return NSAPI_ERROR_OK on success, or negative error code on failure - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0, - const char *uname = 0, const char *pwd = 0); - - /** Attempt to connect to the Cellular network - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * Brings up the network interface. Connects to the Cellular Radio - * network and then brings up the underlying network stack to be used - * by the cellular modem over PPP interface. - * - * If the SIM requires a PIN, and it is not set/invalid, NSAPI_ERROR_AUTH_ERROR is returned. - * For APN setup, default behavior is to use 'internet' as APN string and assuming no authentication - * is required, i.e., username and password are not set. Optionally, a database lookup can be requested - * by turning on the APN database lookup feature. In order to do so, add 'MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP' - * in your mbed_app.json. APN database is by no means exhaustive. It contains a short list of some public - * APNs with publicly available usernames and passwords (if required) in some particular countries only. - * Lookup is done using IMSI (International mobile subscriber identifier). - * Please note that even if 'MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP' config option is set, 'set_credentials()' api still - * gets the precedence. If the aforementioned API is not used and the config option is set but no match is found in - * the lookup table then the driver tries to resort to default APN settings. - * - * Preferred method is to setup APN using 'set_credentials()' API. - * @return 0 on success, negative error code on failure - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual nsapi_error_t connect(); - - /** Attempt to disconnect from the network - * - * Brings down the network interface. Shuts down the PPP interface - * of the underlying network stack. Does not bring down the Radio network - * - * @return 0 on success, negative error code on failure - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual nsapi_error_t disconnect(); - - /** Adds or removes a SIM facility lock - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * Can be used to enable or disable SIM pin check at device startup. - * This API sets up flags for the driver which would either enable or disable - * SIM pin checking depending upon the user provided argument while establishing - * 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 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); - - /** Change the pin for the SIM card - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * Provide the new pin for your SIM card with this API. Old pin code will be assumed to - * be set using set_SIM_pin() API. This API have no immediate effect. While establishing - * connection, driver will change the SIM pin for the next boot. - * - * @param new_pin new pin to be used in string format - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - void set_new_sim_pin(const char *new_pin); - - /** Check if the connection is currently established or not - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * @return true/false If the cellular module have successfully acquired a carrier and is - * connected to an external packet data network using PPP, isConnected() - * API returns true and false otherwise. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual bool is_connected(); - - /** Get the local IP address - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * @return Null-terminated representation of the local IP address - * or null if no IP address has been received - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual const char *get_ip_address(); - - /** Get the local network mask - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * @return Null-terminated representation of the local network mask - * or null if no network mask has been received - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual const char *get_netmask(); - - /** Get the local gateways - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * @return Null-terminated representation of the local gateway - * or null if no network mask has been received - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual const char *get_gateway(); - - - /** Turn modem debug traces on - * - * @param on set true to enable debug traces - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - void modem_debug_on(bool on); - - /** Register callback for status reporting - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * @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(mbed::Callback status_cb); - - /** Get the connection status - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * @return The connection status according to nsapi_connection_status_t - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual nsapi_connection_status_t get_connection_status() const; - - /** Set blocking status of connect() which by default should be blocking - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * @param blocking true if connect is blocking - * @return 0 on success, negative error code on failure - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual nsapi_error_t set_blocking(bool blocking); - -private: - mbed::FileHandle *_fh; - mbed::ATCmdParser *_at; - const char *_new_pin; - const char *_pin; - const char *_apn; - const char *_uname; - const char *_pwd; - bool _debug_trace_on; - nsapi_ip_stack_t _stack; - mbed::Callback _connection_status_cb; - nsapi_connection_status_t _connect_status; - bool _connect_is_blocking; - void base_initialization(); - void setup_at_parser(); - void shutdown_at_parser(); - nsapi_error_t initialize_sim_card(); - nsapi_error_t setup_context_and_credentials(); - bool power_up(); - void power_down(); - void ppp_status_cb(nsapi_event_t, intptr_t); - -protected: - /** Enable or disable hang-up detection - * - * When in PPP data pump mode, it is helpful if the FileHandle will signal hang-up via - * POLLHUP, e.g., if the DCD line is deasserted on a UART. During command mode, this - * signaling is not desired. enable_hup() controls whether this function should be - * active. - * - * Meant to be overridden. - */ - virtual void enable_hup(bool enable); - - /** Sets the modem up for powering on - * - * modem_init() is equivalent to plugging in the device, e.g., attaching power and serial port. - * It is meant to be overridden. - * If the modem is on-board, an implementation of onboard_modem_api.h - * will override this. - * If the the modem is a plugged-in device (i.e., a shield type component), the driver deriving from this - * class will override. - */ - virtual void modem_init(); - - /** Sets the modem in unplugged state - * - * modem_deinit() will be equivalent to pulling the plug off of the device, i.e., detaching power - * and serial port. This puts the modem in lowest power state. - * It is meant to be overridden. - * If the modem is on-board, an implementation of onboard_modem_api.h - * will override this. - * If the the modem is a plugged-in device (i.e., a shield type component), the driver deriving from this - * class will override. - */ - virtual void modem_deinit(); - - /** Powers up the modem - * - * modem_power_up() is equivalent to pressing the soft power button. - * The driver may repeat this if the modem is not responsive to AT commands. - * It is meant to be overridden. - * If the modem is on-board, an implementation of onboard_modem_api.h - * will override this. - * If the the modem is a plugged-in device (i.e., a shield type component), the driver deriving from this - * class will override. - */ - virtual void modem_power_up(); - - /** Powers down the modem - * - * modem_power_down() is equivalent to turning off the modem by button press. - * It is meant to be overridden. - * If the modem is on-board, an implementation of onboard_modem_api.h - * will override this. - * If the the modem is a plugged-in device (i.e., a shield type component), the driver deriving from this - * class will override. - */ - virtual void modem_power_down(); - - /** Provide access to the underlying stack - * - * @return The underlying network stack - */ - virtual NetworkStack *get_stack(); - - /** Starts network registration process. - * - * Potential users could be subclasses who are not network interface - * but would like to use CellularBase infrastructure to register - * with a cellular network, e.g., an SMS extension to CellularBase. - * - * @param nwk_type type of network to connect, defaults to packet switched network - * - * @return true if registration is successful - */ - bool nwk_registration(uint8_t nwk_type = PACKET_SWITCHED); - -}; - -#endif //NSAPI_PPP_AVAILABLE - -#endif //PPP_CELLULAR_INTERFACE_ diff --git a/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/gmd_ut_config_header.h b/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/gmd_ut_config_header.h deleted file mode 100644 index b59901c553f..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/gmd_ut_config_header.h +++ /dev/null @@ -1,69 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2017 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_OS_GMD_UT_CONFIG_HEADER_H_ -#define MBED_OS_GMD_UT_CONFIG_HEADER_H_ - -// The number of retries for UDP exchanges -#define NUM_UDP_RETRIES 5 - -// How long to wait for stuff to travel in the async echo tests -#define ASYNC_TEST_WAIT_TIME 10000 - -#define TEST_DATA "_____0000:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0100:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0200:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0300:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0400:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0500:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0600:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0700:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0800:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____0900:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1000:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1100:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1200:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1300:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1400:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1500:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1600:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1700:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1800:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____1900:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789" \ - "_____2000:0123456789012345678901234567890123456789" \ - "01234567890123456789012345678901234567890123456789"; - -#endif /* MBED_OS_GMD_UT_CONFIG_HEADER_H_ */ diff --git a/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/main.cpp b/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/main.cpp deleted file mode 100644 index 437d8e2e4ad..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/main.cpp +++ /dev/null @@ -1,435 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2017 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. - */ - -#if !MODEM_ON_BOARD -#error [NOT_SUPPORTED] MODEM_ON_BOARD should be set for this test to be functional -#endif - -#include "mbed.h" -#include "gmd_ut_config_header.h" -#include "greentea-client/test_env.h" -#include "unity.h" -#include "utest.h" -//Add your driver's header file here -#include "OnboardCellularInterface.h" -#include "UDPSocket.h" -#include "TCPSocket.h" -#include "mbed_trace.h" -#define TRACE_GROUP "TEST" - -using namespace utest::v1; - -#if !defined(MBED_CONF_APP_DEFAULT_PIN) -#error [NOT_SUPPORTED] A json configuration file is needed. Skipping this build. -#endif - -/** How to run port verification tests - * - * i) Copy this file in your implementation directory - * e.g., netsocket/cellular/YOUR_IMPLEMENTATION/TESTS/unit_tests/default/ - * ii) Rename OnboardCellularInterface everywhere in this file with your Class - * iii) Make an empty test application with the fork of mbed-os where your implementation resides - * iv) Create a json file in the root directory of your application and copy the contents of - * template_mbed_app.txt into it - * v) Now from the root of your application, enter this command: - * mbed test --compile-list - * Look for the name of of your test suite matching to the directory path - * vi) Run tests with the command: - * mbed test -n YOUR_TEST_SUITE_NAME - * - * For more information on mbed-greentea testing suite, please visit: - * https://docs.mbed.com/docs/mbed-os-handbook/en/latest/advanced/greentea/ - */ - -// Lock for debug prints -static Mutex mtx; - -// An instance of the cellular driver -// change this with the name of your driver -static OnboardCellularInterface driver(true); - -// Test data -static const char test_data[] = TEST_DATA; - -//Private Function prototypes -static nsapi_error_t do_connect(OnboardCellularInterface *iface); -static int fix(int size, int limit); -static void do_udp_echo(UDPSocket *sock, SocketAddress *host_address, int size); -static int send_all(TCPSocket *sock, const char *data, int size); -static void async_cb(bool *callback_triggered); -static void do_tcp_echo_async(TCPSocket *sock, int size, bool *callback_triggered); -static void use_connection(OnboardCellularInterface *driver); -static void drop_connection(OnboardCellularInterface *driver); -static void lock(); -static void unlock(); - -/* - * Verification tests for a successful porting - * These tests must pass: - * - * test_udp_echo() - * test_tcp_echo_async - * test_connect_credentials - * test_connect_preset_credentials - */ - -/** - * Test UDP data exchange - */ -void test_udp_echo() -{ - UDPSocket sock; - SocketAddress host_address; - int x; - int size; - - driver.disconnect(); - TEST_ASSERT(do_connect(&driver) == 0); - - TEST_ASSERT(driver.gethostbyname(MBED_CONF_APP_ECHO_SERVER, &host_address) == 0); - host_address.set_port(MBED_CONF_APP_ECHO_UDP_PORT); - - tr_debug("UDP: Server %s address: %s on port %d.", - MBED_CONF_APP_ECHO_SERVER, host_address.get_ip_address(), - host_address.get_port()); - - TEST_ASSERT(sock.open(&driver) == 0) - - sock.set_timeout(10000); - - // Test min, max, and some random sizes in-between - do_udp_echo(&sock, &host_address, 1); - do_udp_echo(&sock, &host_address, MBED_CONF_APP_UDP_MAX_PACKET_SIZE); - for (x = 0; x < 10; x++) { - size = (rand() % MBED_CONF_APP_UDP_MAX_PACKET_SIZE) + 1; - size = fix(size, MBED_CONF_APP_UDP_MAX_PACKET_SIZE + 1); - do_udp_echo(&sock, &host_address, size); - } - - sock.close(); - - drop_connection(&driver); - - tr_debug("%d UDP packets of size up to %d byte(s) echoed successfully.", x, - MBED_CONF_APP_UDP_MAX_PACKET_SIZE); -} - -/** - * Test TCP data exchange via the asynchronous sigio() mechanism - */ -void test_tcp_echo_async() -{ - TCPSocket sock; - SocketAddress host_address; - bool callback_triggered = false; - int x; - int size; - - driver.disconnect(); - TEST_ASSERT(do_connect(&driver) == 0); - - TEST_ASSERT( - driver.gethostbyname(MBED_CONF_APP_ECHO_SERVER, &host_address) == 0); - host_address.set_port(MBED_CONF_APP_ECHO_TCP_PORT); - - tr_debug("TCP: Server %s address: %s on port %d.", - MBED_CONF_APP_ECHO_SERVER, host_address.get_ip_address(), - host_address.get_port()); - - TEST_ASSERT(sock.open(&driver) == 0) - - // Set up the async callback and set the timeout to zero - sock.sigio(callback(async_cb, &callback_triggered)); - sock.set_timeout(0); - - TEST_ASSERT(sock.connect(host_address) == 0); - // Test min, max, and some random sizes in-between - do_tcp_echo_async(&sock, 1, &callback_triggered); - do_tcp_echo_async(&sock, MBED_CONF_APP_TCP_MAX_PACKET_SIZE, - &callback_triggered); - - sock.close(); - - drop_connection(&driver); - - tr_debug("TCP packets of size up to %d byte(s) echoed asynchronously and successfully.", - MBED_CONF_APP_TCP_MAX_PACKET_SIZE); -} - -/** - * Connect with credentials included in the connect request - */ -void test_connect_credentials() -{ - - driver.disconnect(); - - TEST_ASSERT(do_connect(&driver) == 0); - use_connection(&driver); - drop_connection(&driver); -} - -/** - * Test with credentials preset - */ -void test_connect_preset_credentials() -{ - driver.disconnect(); - driver.set_sim_pin(MBED_CONF_APP_DEFAULT_PIN); - driver.set_credentials(MBED_CONF_APP_APN, MBED_CONF_APP_USERNAME, - MBED_CONF_APP_PASSWORD); - int num_retries = 0; - nsapi_error_t err = NSAPI_ERROR_OK; - while (!driver.is_connected()) { - err = driver.connect(); - if (err == NSAPI_ERROR_OK || num_retries > MBED_CONF_APP_MAX_RETRIES) { - break; - } - } - - TEST_ASSERT(err == 0); - use_connection(&driver); - drop_connection(&driver); -} - -/** - * Setup Test Environment - */ -utest::v1::status_t test_setup(const size_t number_of_cases) -{ - // Setup Greentea with a timeout - GREENTEA_SETUP(600, "default_auto"); - return verbose_test_setup_handler(number_of_cases); -} - -/** - * Array defining test cases - */ -Case cases[] = { Case("UDP echo test", test_udp_echo), -#if MBED_CONF_LWIP_TCP_ENABLED - Case("TCP async echo test", test_tcp_echo_async), -#endif - Case("Connect with credentials", test_connect_credentials), - Case("Connect with preset credentials", test_connect_preset_credentials) - }; - -Specification specification(test_setup, cases); - -/** - * main test harness - */ -int main() -{ - mbed_trace_init(); - - mbed_trace_mutex_wait_function_set(lock); - mbed_trace_mutex_release_function_set(unlock); - - // Run tests - return !Harness::run(specification); -} -/** - * connect to the network - */ -static nsapi_error_t do_connect(OnboardCellularInterface *iface) -{ - int num_retries = 0; - nsapi_error_t err = NSAPI_ERROR_OK; - while (!iface->is_connected()) { - err = driver.connect(MBED_CONF_APP_DEFAULT_PIN, MBED_CONF_APP_APN, - MBED_CONF_APP_USERNAME, MBED_CONF_APP_PASSWORD); - if (err == NSAPI_ERROR_OK || num_retries > MBED_CONF_APP_MAX_RETRIES) { - break; - } - num_retries++; - } - - return err; -} - -/** - * Get a random size for the test packet - */ -static int fix(int size, int limit) -{ - if (size <= 0) { - size = limit / 2; - } else if (size > limit) { - size = limit; - } - return size; -} - -/** - * Do a UDP socket echo test to a given host of a given packet size - */ -static void do_udp_echo(UDPSocket *sock, SocketAddress *host_address, int size) -{ - bool success = false; - void *recv_data = malloc(size); - TEST_ASSERT(recv_data != NULL); - - // Retry this a few times, don't want to fail due to a flaky link - for (int x = 0; !success && (x < NUM_UDP_RETRIES); x++) { - tr_debug("Echo testing UDP packet size %d byte(s), try %d.", size, x + 1); - if ((sock->sendto(*host_address, (void *) test_data, size) == size) - && (sock->recvfrom(host_address, recv_data, size) == size)) { - TEST_ASSERT(memcmp(test_data, recv_data, size) == 0); - success = true; - } - } - TEST_ASSERT(success); - - free(recv_data); -} - -/** - * Send an entire TCP data buffer until done - */ -static int send_all(TCPSocket *sock, const char *data, int size) -{ - int x; - int count = 0; - Timer timer; - - timer.start(); - while ((count < size) && (timer.read_ms() < ASYNC_TEST_WAIT_TIME)) { - x = sock->send(data + count, size - count); - if (x > 0) { - count += x; - tr_debug("%d byte(s) sent, %d left to send.", count, size - count); - } - wait_ms(10); - } - timer.stop(); - - return count; -} - -/** - * The asynchronous callback - */ -static void async_cb(bool *callback_triggered) -{ - - TEST_ASSERT(callback_triggered != NULL); - *callback_triggered = true; -} - -/** - * Do a TCP echo using the asynchronous driver - */ -static void do_tcp_echo_async(TCPSocket *sock, int size, - bool *callback_triggered) -{ - void *recv_data = malloc(size); - int recv_size = 0; - int remaining_size; - int x, y; - Timer timer; - TEST_ASSERT(recv_data != NULL); - - *callback_triggered = false; - tr_debug("Echo testing TCP packet size %d byte(s) async.", size); - TEST_ASSERT(send_all(sock, test_data, size) == size); - // Wait for all the echoed data to arrive - timer.start(); - remaining_size = size; - while ((recv_size < size) && (timer.read_ms() < ASYNC_TEST_WAIT_TIME)) { - if (*callback_triggered) { - *callback_triggered = false; - x = sock->recv((char *) recv_data + recv_size, remaining_size); - if (x > 0) { - recv_size += x; - remaining_size = size - recv_size; - tr_debug("%d byte(s) echoed back so far, %d to go.", recv_size, - remaining_size); - } - } - wait_ms(10); - } - TEST_ASSERT(recv_size == size); - y = memcmp(test_data, recv_data, size); - if (y != 0) { - tr_debug("Sent %d, |%*.*s|", size, size, size, test_data); - tr_debug("Rcvd %d, |%*.*s|", size, size, size, (char *) recv_data); - // We do not assert a failure here because ublox TCP echo server doesn't send - // back original data. It actually constructs a ublox message string. They need to fix it as - // at the minute in case of TCP, their server is not behaving like a echo TCP server. - //TEST_ASSERT(false); - } - timer.stop(); - free(recv_data); -} - -/** - * Use a connection, checking that it is good - * Checks via doing an NTP transaction - */ -static void use_connection(OnboardCellularInterface *driver) -{ - const char *ip_address = driver->get_ip_address(); - const char *net_mask = driver->get_netmask(); - const char *gateway = driver->get_gateway(); - - TEST_ASSERT(driver->is_connected()); - - TEST_ASSERT(ip_address != NULL); - tr_debug("IP address %s.", ip_address); - TEST_ASSERT(net_mask != NULL); - tr_debug("Net mask %s.", net_mask); - TEST_ASSERT(gateway != NULL); - tr_debug("Gateway %s.", gateway); - - UDPSocket sock; - SocketAddress host_address; - - TEST_ASSERT(driver->gethostbyname(MBED_CONF_APP_ECHO_SERVER, &host_address) == 0); - host_address.set_port(MBED_CONF_APP_ECHO_UDP_PORT); - - tr_debug("UDP: Server %s address: %s on port %d.", - MBED_CONF_APP_ECHO_SERVER, host_address.get_ip_address(), - host_address.get_port()); - - TEST_ASSERT(sock.open(driver) == 0) - - sock.set_timeout(10000); - do_udp_echo(&sock, &host_address, 1); - - sock.close(); -} - -/** - * Drop a connection and check that it has dropped - */ -static void drop_connection(OnboardCellularInterface *driver) -{ - TEST_ASSERT(driver->disconnect() == 0); - TEST_ASSERT(!driver->is_connected()); -} - -/** - * Locks for debug prints - */ -static void lock() -{ - mtx.lock(); -} - -static void unlock() -{ - mtx.unlock(); -} diff --git a/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/template_mbed_app.txt b/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/template_mbed_app.txt deleted file mode 100644 index e41a4259105..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/TESTS/unit_tests/default/template_mbed_app.txt +++ /dev/null @@ -1,68 +0,0 @@ -{ - "config": { - "platform": { - "help": "The platform for the cellular feature, e.g. UBLOX or MTS_DRAGONFLY", - "value": "UBLOX" - }, - "max-retries": { - "help": "Network can be intermittent, number of retries before giving up", - "value": 3 - }, - "default-pin": { - "help": "The current value of the SIM PIN as a string", - "value": "\"1234\"" - }, - "apn": { - "help": "The APN string to use for this SIM/network, set to 0 if none", - "value": "\"internet\"" - }, - "username": { - "help": "The user name string to use for this APN, set to zero if none", - "value": 0 - }, - "password": { - "help": "The password string to use for this APN, set to 0 if none", - "value": 0 - }, - "echo-server": { - "help": "The URL string of the UDP/TCP echo server to use during testing", - "value": "\"echo.u-blox.com\"" - }, - "echo-udp-port": { - "help": "The port to connect to on echo-server for UDP testing", - "value": 7 - }, - "echo-tcp-port": { - "help": "The port to connect to on echo-server for TCP testing", - "value": 7 - }, - "ntp-server": { - "help": "The URL string of the NTP server to use during testing", - "value": "\"2.pool.ntp.org\"" - }, - "ntp-port": { - "help": "The port to connect to on ntp-server", - "value": 123 - }, - "udp-max-packet-size": { - "help": "The maximum UDP packet size to use", - "value": 508 - }, - "tcp-max-packet-size": { - "help": "The maximum TCP packet size to use", - "value": 1500 - } - }, - "target_overrides": { - "*": { - "lwip.ipv4-enabled": true, - "lwip.ethernet-enabled": false, - "lwip.ppp-enabled": true, - "lwip.tcp-enabled": true, - "platform.stdio-convert-newlines": true, - "platform.stdio-baud-rate": 115200, - "platform.default-serial-baud-rate": 115200, - "mbed-trace.enable": 1 - } - } -} diff --git a/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.cpp b/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.cpp deleted file mode 100644 index 17cf64206f2..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (c) 2017 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 "UARTCellularInterface.h" - - -#if NSAPI_PPP_AVAILABLE - -UARTCellularInterface::UARTCellularInterface(PinName txd, PinName rxd, PinName dcd, PinName rts, PinName cts, PinName ri, - PinName dtr, PinName dsr, int baud, bool active_high, bool debug) : - PPPCellularInterface(&_serial, debug), - _serial(txd, rxd, baud) -{ - _dcd_pin = dcd; - _active_high = active_high; -} - -UARTCellularInterface::~UARTCellularInterface() -{ - //do nothing -} - -void UARTCellularInterface::enable_hup(bool enable) -{ - _serial.set_data_carrier_detect(enable ? _dcd_pin : NC, _active_high); -} - -#endif // NSAPI_PPP_AVAILABLE diff --git a/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.h b/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.h deleted file mode 100644 index e1d27459021..00000000000 --- a/features/netsocket/cellular/generic_modem_driver/UARTCellularInterface.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright (c) 2017 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 UART_CELLULAR_INTERFACE_ -#define UART_CELLULAR_INTERFACE_ - -#include "PPPCellularInterface.h" -#include "UARTSerial.h" - -#if NSAPI_PPP_AVAILABLE - -/** UARTCellularInterface class - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * This interface serves as the controller/driver for Cellular - * modems attached via a UART (tested with UBLOX_C027 and MTS_DRAGONFLY_F411RE). - * - * It constructs a FileHandle and passes it back to its base class as well as overrides - * enable_hup() in the base class. - */ - -class UARTCellularInterface : public PPPCellularInterface { - -public: - - /** Constructor - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - UARTCellularInterface(PinName tx, PinName rx, PinName dcd = NC, PinName rts = NC, PinName cts = NC, PinName ri = NC, - PinName dtr = NC, PinName dsr = NC, int baud = MBED_CONF_PPP_CELL_IFACE_BAUD_RATE, - bool active_high = false, - bool debug = false); - - /** Destructor - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual ~UARTCellularInterface(); - -private: - mbed::UARTSerial _serial; - PinName _dcd_pin; - bool _active_high; - -protected: - /** Enable or disable hang-up detection - * - * @deprecated This API will be deprecated in mbed-os-5.9. Use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead. - * - * When in PPP data pump mode, it is helpful if the FileHandle will signal hang-up via - * POLLHUP, e.g., if the DCD line is deasserted on a UART. During command mode, this - * signaling is not desired. enable_hup() controls whether this function should be - * active. - */ - MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.") - virtual void enable_hup(bool enable); -}; - -#endif //NSAPI_PPP_AVAILABLE - -#endif //UART_CELLULAR_INTERFACE_ diff --git a/features/netsocket/cellular/generic_modem_driver/mbed_lib.json b/features/netsocket/cellular/mbed_lib.json similarity index 100% rename from features/netsocket/cellular/generic_modem_driver/mbed_lib.json rename to features/netsocket/cellular/mbed_lib.json diff --git a/features/netsocket/emac-drivers/TARGET_Freescale_EMAC/kinetis_emac.h b/features/netsocket/emac-drivers/TARGET_Freescale_EMAC/kinetis_emac.h index f6138efa3bf..82b588b04fa 100644 --- a/features/netsocket/emac-drivers/TARGET_Freescale_EMAC/kinetis_emac.h +++ b/features/netsocket/emac-drivers/TARGET_Freescale_EMAC/kinetis_emac.h @@ -1,5 +1,17 @@ -/* - * Copyright (c) 2017 ARM Limited. All rights reserved. +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 KINETIS_EMAC_H_ diff --git a/features/netsocket/emac-drivers/TARGET_NUVOTON_EMAC/numaker_emac.h b/features/netsocket/emac-drivers/TARGET_NUVOTON_EMAC/numaker_emac.h index fde3a62ea0a..fb570bede2a 100644 --- a/features/netsocket/emac-drivers/TARGET_NUVOTON_EMAC/numaker_emac.h +++ b/features/netsocket/emac-drivers/TARGET_NUVOTON_EMAC/numaker_emac.h @@ -1,5 +1,17 @@ -/* - * Copyright (c) 2017 ARM Limited. All rights reserved. +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 NUMAKER_EMAC_H_ diff --git a/features/netsocket/emac-drivers/TARGET_NXP_EMAC/TARGET_IMX/imx_emac.h b/features/netsocket/emac-drivers/TARGET_NXP_EMAC/TARGET_IMX/imx_emac.h index f6138efa3bf..82b588b04fa 100644 --- a/features/netsocket/emac-drivers/TARGET_NXP_EMAC/TARGET_IMX/imx_emac.h +++ b/features/netsocket/emac-drivers/TARGET_NXP_EMAC/TARGET_IMX/imx_emac.h @@ -1,5 +1,17 @@ -/* - * Copyright (c) 2017 ARM Limited. All rights reserved. +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 KINETIS_EMAC_H_ diff --git a/features/netsocket/emac-drivers/TARGET_NXP_EMAC/TARGET_MCU_LPC546XX/lpc546xx_emac.h b/features/netsocket/emac-drivers/TARGET_NXP_EMAC/TARGET_MCU_LPC546XX/lpc546xx_emac.h index c940cf164b9..570a7a53d8a 100644 --- a/features/netsocket/emac-drivers/TARGET_NXP_EMAC/TARGET_MCU_LPC546XX/lpc546xx_emac.h +++ b/features/netsocket/emac-drivers/TARGET_NXP_EMAC/TARGET_MCU_LPC546XX/lpc546xx_emac.h @@ -1,5 +1,17 @@ -/* - * Copyright (c) 2017 ARM Limited. All rights reserved. +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 LPC546XX_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/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/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 new file mode 100644 index 00000000000..24e25298db3 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/LICENSE-permissive-binary-license-1.0.txt @@ -0,0 +1,49 @@ +Permissive Binary License + +Version 1.0, January 2019 + +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/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/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 new file mode 100644 index 00000000000..5df1aa37df9 --- /dev/null +++ b/features/netsocket/emac-drivers/TARGET_RDA_EMAC/lwip-wifi/arch/TARGET_RDA/TARGET_UNO_91H/lib/README.md @@ -0,0 +1,7 @@ +This directory tree contains binaries build from RDA SDK modified for Mbed OS and released under Permissive Binary License. + +libhal files in the subfolders are generated with toolchains: + +Arm Compiler 5 - version 5.06u6 +GNU Arm Embedded - version 6.3.1 +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_RZ_A1_EMAC/rza1_emac.cpp b/features/netsocket/emac-drivers/TARGET_RZ_A1_EMAC/rza1_emac.cpp index c664d53f2a7..6033551fa9c 100644 --- a/features/netsocket/emac-drivers/TARGET_RZ_A1_EMAC/rza1_emac.cpp +++ b/features/netsocket/emac-drivers/TARGET_RZ_A1_EMAC/rza1_emac.cpp @@ -1,3 +1,18 @@ +/* Copyright (c) 2018 Renesas Electronics Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 "cmsis_os.h" #include "rtos/ThisThread.h" #include "netsocket/nsapi_types.h" diff --git a/features/netsocket/emac-drivers/TARGET_STM_EMAC/TARGET_STM32F4/TARGET_MODULE_UBLOX_ODIN_W2/wifi_emac/wifi_emac.h b/features/netsocket/emac-drivers/TARGET_STM_EMAC/TARGET_STM32F4/TARGET_MODULE_UBLOX_ODIN_W2/wifi_emac/wifi_emac.h index cb96cfc6a0b..22e68baa27a 100644 --- a/features/netsocket/emac-drivers/TARGET_STM_EMAC/TARGET_STM32F4/TARGET_MODULE_UBLOX_ODIN_W2/wifi_emac/wifi_emac.h +++ b/features/netsocket/emac-drivers/TARGET_STM_EMAC/TARGET_STM32F4/TARGET_MODULE_UBLOX_ODIN_W2/wifi_emac/wifi_emac.h @@ -1,5 +1,17 @@ -/* - * Copyright (c) 2017 ARM Limited. All rights reserved. +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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_EMAC_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/emac-drivers/TARGET_STM_EMAC/stm32xx_emac.cpp b/features/netsocket/emac-drivers/TARGET_STM_EMAC/stm32xx_emac.cpp index 56e29950ee1..47e11a11d11 100644 --- a/features/netsocket/emac-drivers/TARGET_STM_EMAC/stm32xx_emac.cpp +++ b/features/netsocket/emac-drivers/TARGET_STM_EMAC/stm32xx_emac.cpp @@ -1,3 +1,19 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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" diff --git a/features/netsocket/emac-drivers/TARGET_STM_EMAC/stm32xx_emac_config.h b/features/netsocket/emac-drivers/TARGET_STM_EMAC/stm32xx_emac_config.h index b3d70f3544f..8ae812d9fb3 100644 --- a/features/netsocket/emac-drivers/TARGET_STM_EMAC/stm32xx_emac_config.h +++ b/features/netsocket/emac-drivers/TARGET_STM_EMAC/stm32xx_emac_config.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/features/netsocket/mbed_lib.json b/features/netsocket/mbed_lib.json index 973ba55507a..2a11d9f3a15 100644 --- a/features/netsocket/mbed_lib.json +++ b/features/netsocket/mbed_lib.json @@ -2,15 +2,42 @@ "name": "nsapi", "config": { "present": 1, - "default-stack": "LWIP", - "default-wifi-ssid": null, - "default-wifi-password": null, - "default-wifi-security": "NONE", - "default-cellular-plmn": null, - "default-cellular-sim-pin": null, - "default-cellular-apn": null, - "default-cellular-username": null, - "default-cellular-password": null, + "default-stack": { + "help" : "Default stack to be used, valid values: LWIP, NANOSTACK.", + "value" : "LWIP" + }, + "default-wifi-ssid" : { + "help" : "Default Wi-Fi SSID.", + "value": null + }, + "default-wifi-password" : { + "help" : "Password for the default Wi-Fi network.", + "value": null + }, + "default-wifi-security" : { + "help" : "Wi-Fi security protocol, valid values are WEP, WPA, WPA2, WPA/WPA2.", + "value" : "NONE" + }, + "default-cellular-plmn" : { + "help" : "Default Public Land Mobile Network for cellular connection.", + "value": null + }, + "default-cellular-sim-pin" : { + "help" : "PIN for the default SIM card.", + "value": null + }, + "default-cellular-apn" : { + "help" : "Default cellular Access Point Name.", + "value": null + }, + "default-cellular-username" : { + "help" : "Username for the default cellular network.", + "value": null + }, + "default-cellular-password" : { + "help" : "Password for the default cellular network.", + "value": null + }, "default-mesh-type": { "help": "Configuration type for MeshInterface::get_default_instance(). [LOWPAN/THREAD]", "value": "THREAD" diff --git a/features/netsocket/nsapi_dns.cpp b/features/netsocket/nsapi_dns.cpp index aa2de3aafd1..0c9249173c6 100644 --- a/features/netsocket/nsapi_dns.cpp +++ b/features/netsocket/nsapi_dns.cpp @@ -67,6 +67,7 @@ struct DNS_QUERY { nsapi_error_t status; NetworkStack *stack; char *host; + const char *interface_name; NetworkStack::hostbyname_cb_t callback; call_in_callback_cb_t call_in_cb; nsapi_size_t addr_count; @@ -89,7 +90,7 @@ struct DNS_QUERY { static void nsapi_dns_cache_add(const char *host, nsapi_addr_t *address, uint32_t ttl); static nsapi_size_or_error_t nsapi_dns_cache_find(const char *host, nsapi_version_t version, nsapi_addr_t *address); -static nsapi_error_t nsapi_dns_get_server_addr(NetworkStack *stack, uint8_t *index, uint8_t *total_attempts, uint8_t *send_success, SocketAddress *dns_addr); +static nsapi_error_t nsapi_dns_get_server_addr(NetworkStack *stack, uint8_t *index, uint8_t *total_attempts, uint8_t *send_success, SocketAddress *dns_addr, const char *interface_name); static void nsapi_dns_query_async_create(void *ptr); static nsapi_error_t nsapi_dns_query_async_delete(int unique_id); @@ -128,7 +129,7 @@ static SingletonPtr dns_call_in; static bool dns_timer_running = false; // DNS server configuration -extern "C" nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr) +extern "C" nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr, const char *interface_name) { memmove(&dns_servers[1], &dns_servers[0], (DNS_SERVERS_SIZE - 1)*sizeof(nsapi_addr_t)); @@ -395,7 +396,7 @@ static nsapi_error_t nsapi_dns_cache_find(const char *host, nsapi_version_t vers return ret_val; } -static nsapi_error_t nsapi_dns_get_server_addr(NetworkStack *stack, uint8_t *index, uint8_t *total_attempts, uint8_t *send_success, SocketAddress *dns_addr) +static nsapi_error_t nsapi_dns_get_server_addr(NetworkStack *stack, uint8_t *index, uint8_t *total_attempts, uint8_t *send_success, SocketAddress *dns_addr, const char *interface_name) { bool dns_addr_set = false; @@ -414,7 +415,7 @@ static nsapi_error_t nsapi_dns_get_server_addr(NetworkStack *stack, uint8_t *ind } if (*index < DNS_STACK_SERVERS_NUM) { - nsapi_error_t ret = stack->get_dns_server(*index, dns_addr); + nsapi_error_t ret = stack->get_dns_server(*index, dns_addr, interface_name); if (ret < 0) { *index = DNS_STACK_SERVERS_NUM; } else { @@ -433,7 +434,7 @@ static nsapi_error_t nsapi_dns_get_server_addr(NetworkStack *stack, uint8_t *ind // core query function static nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const char *host, - nsapi_addr_t *addr, unsigned addr_count, nsapi_version_t version) + nsapi_addr_t *addr, unsigned addr_count, const char *interface_name, nsapi_version_t version) { // check for valid host name int host_len = host ? strlen(host) : 0; @@ -455,6 +456,9 @@ static nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const socket.set_timeout(MBED_CONF_NSAPI_DNS_RESPONSE_WAIT_TIME); + if (interface_name != NULL) { + socket.setsockopt(NSAPI_SOCKET, NSAPI_BIND_TO_DEVICE, interface_name, NSAPI_INTERFACE_NAME_MAX_SIZE); + } // create network packet uint8_t *const packet = (uint8_t *)malloc(DNS_BUFFER_SIZE); if (!packet) { @@ -471,7 +475,7 @@ static nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const // check against each dns server while (true) { SocketAddress dns_addr; - err = nsapi_dns_get_server_addr(stack, &index, &total_attempts, &send_success, &dns_addr); + err = nsapi_dns_get_server_addr(stack, &index, &total_attempts, &send_success, &dns_addr, interface_name); if (err != NSAPI_ERROR_OK) { break; } @@ -540,17 +544,17 @@ static nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const // convenience functions for other forms of queries extern "C" nsapi_size_or_error_t nsapi_dns_query_multiple(nsapi_stack_t *stack, const char *host, - nsapi_addr_t *addr, nsapi_size_t addr_count, nsapi_version_t version) + nsapi_addr_t *addr, nsapi_size_t addr_count, const char *interface_name, nsapi_version_t version) { NetworkStack *nstack = nsapi_create_stack(stack); - return nsapi_dns_query_multiple(nstack, host, addr, addr_count, version); + return nsapi_dns_query_multiple(nstack, host, addr, addr_count, interface_name, version); } nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const char *host, - SocketAddress *addresses, nsapi_size_t addr_count, nsapi_version_t version) + SocketAddress *addresses, nsapi_size_t addr_count, const char *interface_name, nsapi_version_t version) { nsapi_addr_t *addrs = new (std::nothrow) nsapi_addr_t[addr_count]; - nsapi_size_or_error_t result = nsapi_dns_query_multiple(stack, host, addrs, addr_count, version); + nsapi_size_or_error_t result = nsapi_dns_query_multiple(stack, host, addrs, addr_count, interface_name, version); if (result > 0) { for (int i = 0; i < result; i++) { @@ -566,7 +570,7 @@ extern "C" nsapi_error_t nsapi_dns_query(nsapi_stack_t *stack, const char *host, nsapi_addr_t *addr, nsapi_version_t version) { NetworkStack *nstack = nsapi_create_stack(stack); - nsapi_size_or_error_t result = nsapi_dns_query_multiple(nstack, host, addr, 1, version); + nsapi_size_or_error_t result = nsapi_dns_query_multiple(nstack, host, addr, 1, NULL, version); return (nsapi_error_t)((result > 0) ? 0 : result); } @@ -574,7 +578,16 @@ nsapi_error_t nsapi_dns_query(NetworkStack *stack, const char *host, SocketAddress *address, nsapi_version_t version) { nsapi_addr_t addr; - nsapi_size_or_error_t result = nsapi_dns_query_multiple(stack, host, &addr, 1, version); + nsapi_size_or_error_t result = nsapi_dns_query_multiple(stack, host, &addr, 1, NULL, version); + address->set_addr(addr); + return (nsapi_error_t)((result > 0) ? 0 : result); +} + +nsapi_error_t nsapi_dns_query(NetworkStack *stack, const char *host, + SocketAddress *address, const char *interface_name, nsapi_version_t version) +{ + nsapi_addr_t addr; + nsapi_size_or_error_t result = nsapi_dns_query_multiple(stack, host, &addr, 1, interface_name, version); address->set_addr(addr); return (nsapi_error_t)((result > 0) ? 0 : result); } @@ -583,7 +596,14 @@ nsapi_value_or_error_t nsapi_dns_query_async(NetworkStack *stack, const char *ho NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb, nsapi_version_t version) { - return nsapi_dns_query_multiple_async(stack, host, callback, 0, call_in_cb, version); + return nsapi_dns_query_multiple_async(stack, host, callback, 0, call_in_cb, NULL, version); +} + +nsapi_value_or_error_t nsapi_dns_query_async(NetworkStack *stack, const char *host, + NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb, + const char *interface_name, nsapi_version_t version) +{ + return nsapi_dns_query_multiple_async(stack, host, callback, 0, call_in_cb, interface_name, version); } void nsapi_dns_call_in_set(call_in_callback_cb_t callback) @@ -603,7 +623,7 @@ nsapi_error_t nsapi_dns_call_in(call_in_callback_cb_t cb, int delay, mbed::Callb nsapi_value_or_error_t nsapi_dns_query_multiple_async(NetworkStack *stack, const char *host, NetworkStack::hostbyname_cb_t callback, nsapi_size_t addr_count, - call_in_callback_cb_t call_in_cb, nsapi_version_t version) + call_in_callback_cb_t call_in_cb, const char *interface_name, nsapi_version_t version) { dns_mutex->lock(); @@ -672,7 +692,7 @@ nsapi_value_or_error_t nsapi_dns_query_multiple_async(NetworkStack *stack, const query->total_timeout = MBED_CONF_NSAPI_DNS_TOTAL_ATTEMPTS * MBED_CONF_NSAPI_DNS_RESPONSE_WAIT_TIME + 500; query->count = 0; query->state = DNS_CREATED; - + query->interface_name = interface_name; query->unique_id = dns_unique_id++; if (query->unique_id > 0x7FFF) { query->unique_id = 1; @@ -870,6 +890,9 @@ static void nsapi_dns_query_async_create(void *ptr) } socket->set_timeout(0); + if (query->interface_name != NULL) { + socket->setsockopt(NSAPI_SOCKET, NSAPI_BIND_TO_DEVICE, query->interface_name, NSAPI_INTERFACE_NAME_MAX_SIZE); + } if (!query->socket_cb_data) { query->socket_cb_data = new SOCKET_CB_DATA; @@ -988,7 +1011,7 @@ static void nsapi_dns_query_async_send(void *ptr) while (true) { SocketAddress dns_addr; - nsapi_size_or_error_t err = nsapi_dns_get_server_addr(query->stack, &(query->dns_server), &(query->total_attempts), &(query->send_success), &dns_addr); + nsapi_size_or_error_t err = nsapi_dns_get_server_addr(query->stack, &(query->dns_server), &(query->total_attempts), &(query->send_success), &dns_addr, query->interface_name); if (err != NSAPI_ERROR_OK) { nsapi_dns_query_async_resp(query, NSAPI_ERROR_TIMEOUT, NULL); free(packet); diff --git a/features/netsocket/nsapi_dns.h b/features/netsocket/nsapi_dns.h index 692d3d5b42f..7f5d134a94e 100644 --- a/features/netsocket/nsapi_dns.h +++ b/features/netsocket/nsapi_dns.h @@ -59,7 +59,7 @@ nsapi_size_or_error_t nsapi_dns_query_multiple(nsapi_stack_t *stack, const char * @param addr Destination for the host address * @return 0 on success, negative error code on failure */ -nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr); +nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr, const char *interface_name); #else @@ -78,6 +78,20 @@ typedef mbed::Callback user_ nsapi_error_t nsapi_dns_query(NetworkStack *stack, const char *host, SocketAddress *addr, nsapi_version_t version = NSAPI_IPv4); +/** Query a domain name server for an IP address of a given hostname using Network interface name + * + * @param stack Network stack as target for DNS query + * @param host Hostname to resolve + * @param addr Destination for the host address + * @param interface_name Network interface name + * @param version IP version to resolve (defaults to NSAPI_IPv4) + * @return 0 on success, negative error code on failure + * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found + */ +nsapi_error_t nsapi_dns_query(NetworkStack *stack, const char *host, + SocketAddress *addr, const char *interface_name, nsapi_version_t version = NSAPI_IPv4); + + /** Query a domain name server for an IP address of a given hostname * * @param stack Network stack as target for DNS query @@ -92,6 +106,21 @@ nsapi_error_t nsapi_dns_query_async(NetworkStack *stack, const char *host, NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb, nsapi_version_t version = NSAPI_IPv4); +/** Query a domain name server for an IP address of a given hostname using Network interface name + * + * @param stack Network stack as target for DNS query + * @param host Hostname to resolve + * @param callback Callback that is called for result + * @param interface_name Network interface name + * @param version IP version to resolve (defaults to NSAPI_IPv4) + * @return 0 on success, negative error code on failure or an unique id that + * represents the hostname translation operation and can be passed to + * cancel, NSAPI_ERROR_DNS_FAILURE indicates the host could not be found + */ +nsapi_error_t nsapi_dns_query_async(NetworkStack *stack, const char *host, + NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb, + const char *interface_name, nsapi_version_t version = NSAPI_IPv4); + /** Query a domain name server for an IP address of a given hostname (asynchronous) * * @param stack Network stack as target for DNS query @@ -131,7 +160,7 @@ nsapi_error_t nsapi_dns_query(S *stack, const char *host, * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found */ nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const char *host, - SocketAddress *addr, nsapi_size_t addr_count, nsapi_version_t version = NSAPI_IPv4); + SocketAddress *addr, nsapi_size_t addr_count, const char *interface_name, nsapi_version_t version = NSAPI_IPv4); /** Query a domain name server for an IP address of a given hostname (asynchronous) * @@ -146,7 +175,7 @@ nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const char * */ nsapi_size_or_error_t nsapi_dns_query_multiple_async(NetworkStack *stack, const char *host, NetworkStack::hostbyname_cb_t callback, nsapi_size_t addr_count, - call_in_callback_cb_t call_in_cb, nsapi_version_t version = NSAPI_IPv4); + call_in_callback_cb_t call_in_cb, const char *interface_name, nsapi_version_t version = NSAPI_IPv4); /** Query a domain name server for multiple IP address of a given hostname * @@ -159,7 +188,7 @@ nsapi_size_or_error_t nsapi_dns_query_multiple_async(NetworkStack *stack, const * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found */ extern "C" nsapi_size_or_error_t nsapi_dns_query_multiple(nsapi_stack_t *stack, const char *host, - nsapi_addr_t *addr, nsapi_size_t addr_count, nsapi_version_t version = NSAPI_IPv4); + nsapi_addr_t *addr, nsapi_size_t addr_count, const char *interface_name, nsapi_version_t version = NSAPI_IPv4); /** Query a domain name server for multiple IP address of a given hostname @@ -204,16 +233,16 @@ void nsapi_dns_call_in_set(call_in_callback_cb_t callback); * @param addr Destination for the host address * @return 0 on success, negative error code on failure */ -extern "C" nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr); +extern "C" nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr, const char *interface_name); /** Add a domain name server to list of servers to query * * @param addr Destination for the host address * @return 0 on success, negative error code on failure */ -static inline nsapi_error_t nsapi_dns_add_server(const SocketAddress &address) +static inline nsapi_error_t nsapi_dns_add_server(const SocketAddress &address, const char *interface_name) { - return nsapi_dns_add_server(address.get_addr()); + return nsapi_dns_add_server(address.get_addr(), interface_name); } /** Add a domain name server to list of servers to query @@ -221,9 +250,9 @@ static inline nsapi_error_t nsapi_dns_add_server(const SocketAddress &address) * @param addr Destination for the host address * @return 0 on success, negative error code on failure */ -static inline nsapi_error_t nsapi_dns_add_server(const char *address) +static inline nsapi_error_t nsapi_dns_add_server(const char *address, const char *interface_name) { - return nsapi_dns_add_server(SocketAddress(address)); + return nsapi_dns_add_server(SocketAddress(address), interface_name); } diff --git a/features/netsocket/nsapi_types.h b/features/netsocket/nsapi_types.h index ce6c19ddec9..9f112b82aca 100644 --- a/features/netsocket/nsapi_types.h +++ b/features/netsocket/nsapi_types.h @@ -128,9 +128,13 @@ typedef enum nsapi_security { NSAPI_SECURITY_UNKNOWN = 0xFF, /*!< unknown/unsupported security in scan results */ } nsapi_security_t; +/** Size of 2 char network interface name from driver + */ +#define NSAPI_INTERFACE_PREFIX_SIZE 2 + /** Maximum size of network interface name */ -#define NSAPI_INTERFACE_NAME_SIZE 2 +#define NSAPI_INTERFACE_NAME_MAX_SIZE 6 /** Maximum size of IP address representation */ @@ -259,6 +263,7 @@ typedef enum nsapi_socket_option { NSAPI_RCVBUF, /*!< Sets recv buffer size */ NSAPI_ADD_MEMBERSHIP, /*!< Add membership to multicast address */ NSAPI_DROP_MEMBERSHIP, /*!< Drop membership to multicast address */ + NSAPI_BIND_TO_DEVICE, /*!< Bind socket network interface name*/ } nsapi_socket_option_t; /** Supported IP protocol versions of IP stack diff --git a/features/nfc/mbed_lib.json b/features/nfc/mbed_lib.json new file mode 100644 index 00000000000..dd3c37b504c --- /dev/null +++ b/features/nfc/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "nfc" +} 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 1e940c745a0..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 * @{ */ @@ -153,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/storage/TESTS/blockdevice/general_block_device/main.cpp b/features/storage/TESTS/blockdevice/general_block_device/main.cpp index df680f75ea9..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()); @@ -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, "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,6 +269,7 @@ 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("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; @@ -169,17 +314,12 @@ 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."); 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; - int err = block_device->init(); - TEST_ASSERT_EQUAL(0, err); - for (unsigned atr = 0; atr < sizeof(ATTRS) / sizeof(ATTRS[0]); atr++) { static const char *prefixes[] = {"", "k", "M", "G"}; for (int i_ind = 3; i_ind >= 0; i_ind--) { @@ -207,9 +347,6 @@ void test_multi_threads() 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_erase_functionality() @@ -222,12 +359,8 @@ void test_erase_functionality() // 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, "no block device found."); - int err = block_device->init(); - TEST_ASSERT_EQUAL(0, err); - // Check erase value int erase_value_int = block_device->get_erase_value(); utest_printf("block_device->get_erase_value()=%d\n", erase_value_int); @@ -261,7 +394,7 @@ void test_erase_functionality() // First must Erase given memory region utest_printf("erasing given memory region\n"); - err = block_device->erase(start_address, data_buf_size); + 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. @@ -305,16 +438,14 @@ void test_erase_functionality() free(data_buf); free(out_data_buf); - - // BlockDevice deinitialization - err = block_device->deinit(); - TEST_ASSERT_EQUAL(0, err); } 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 @@ -322,13 +453,6 @@ 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, "no block device found."); - - // 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); @@ -378,14 +502,13 @@ void test_contiguous_erase_write_read() // 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("not enough memory for test"); } 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); - err = block_device->erase(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, @@ -444,41 +567,29 @@ void test_contiguous_erase_write_read() } 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(bd != NULL, "no block device found."); - - int err = bd->init(); - TEST_ASSERT_EQUAL(0, err); + TEST_SKIP_UNLESS_MESSAGE(block_device != NULL, "no block device found."); - bd_size_t erase_size = bd->get_erase_size(); - bd_size_t program_size = bd->get_program_size(); - bd_size_t read_size = bd->get_read_size(); + 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); - err = bd->deinit(); - TEST_ASSERT_EQUAL(0, err); - // 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 - err = block_device->init(); + int err = buff_block_device->init(); TEST_ASSERT_EQUAL(0, err); const char write_buffer[] = "1234567"; @@ -488,16 +599,16 @@ void test_program_read_small_data_sizes() 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); @@ -505,16 +616,19 @@ void test_program_read_small_data_sizes() } // BlockDevice deinitialization - err = block_device->deinit(); + err = buff_block_device->deinit(); TEST_ASSERT_EQUAL(0, err); - delete block_device; + delete buff_block_device; } void test_get_type_functionality() { - BlockDevice *block_device = BlockDevice::get_default_instance(); - TEST_SKIP_UNLESS_MESSAGE(block_device, "No block device component is defined for this target"); + 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); @@ -529,7 +643,20 @@ void test_get_type_functionality() #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); + block_device = NULL; } utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) @@ -538,25 +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 BlockDevice erase functionality", test_erase_functionality, greentea_failure_handler), - 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 program read small data sizes", test_program_read_small_data_sizes, greentea_failure_handler), - Case("Testing get type functionality", test_get_type_functionality, greentea_failure_handler) -}; +int get_bd_count() +{ + int count = 0; + +#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; +} -Specification specification(test_setup, cases); +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/kvstore/conf/global/mbed_lib.json b/features/storage/kvstore/conf/global/mbed_lib.json new file mode 100644 index 00000000000..35938fdaae9 --- /dev/null +++ b/features/storage/kvstore/conf/global/mbed_lib.json @@ -0,0 +1,30 @@ +{ +"name": "storage", + "config": { + "storage_type": { + "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", + "value": "kv" + } + }, + "target_overrides": { + "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/mbed_lib.json b/features/storage/kvstore/conf/mbed_lib.json index 35938fdaae9..55c62752006 100644 --- a/features/storage/kvstore/conf/mbed_lib.json +++ b/features/storage/kvstore/conf/mbed_lib.json @@ -1,30 +1,3 @@ { -"name": "storage", - "config": { - "storage_type": { - "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", - "value": "kv" - } - }, - "target_overrides": { - "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" - } - } + "name": "kv-config" } diff --git a/features/storage/kvstore/direct_access_devicekey/mbed_lib.json b/features/storage/kvstore/direct_access_devicekey/mbed_lib.json new file mode 100644 index 00000000000..c98f6f1eb48 --- /dev/null +++ b/features/storage/kvstore/direct_access_devicekey/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "direct-access-devicekey" +} diff --git a/features/storage/kvstore/filesystemstore/FileSystemStore.cpp b/features/storage/kvstore/filesystemstore/FileSystemStore.cpp index ac1aea3cd72..01ac336e3e4 100644 --- a/features/storage/kvstore/filesystemstore/FileSystemStore.cpp +++ b/features/storage/kvstore/filesystemstore/FileSystemStore.cpp @@ -93,7 +93,7 @@ int FileSystemStore::init() tr_info("KV Dir: %s, doesnt exist - creating new.. ", _cfg_fs_path); //TBD verify ERRNO NOEXIST if (_fs->mkdir(_cfg_fs_path,/* which flags ? */0777) != 0) { tr_error("KV Dir: %s, mkdir failed.. ", _cfg_fs_path); //TBD verify ERRNO NOEXIST - status = MBED_ERROR_FAILED_OPERATION ; + status = MBED_ERROR_FAILED_OPERATION; goto exit_point; } } else { @@ -138,9 +138,7 @@ int FileSystemStore::reset() kv_dir.open(_fs, _cfg_fs_path); while (kv_dir.read(&dir_ent) != 0) { - tr_info("Looping FSST folder: %s, File - %s", _cfg_fs_path, dir_ent.d_name); if (dir_ent.d_type != DT_REG) { - tr_error("KV_Dir should contain only Regular File - %s", dir_ent.d_name); continue; } // Build File's full path name and delete it (even if write-onced) @@ -354,7 +352,6 @@ int FileSystemStore::set_start(set_handle_t *handle, const char *key, size_t fin } if (status == MBED_SUCCESS) { - tr_info("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(); status = MBED_ERROR_WRITE_PROTECTED; @@ -544,7 +541,6 @@ int FileSystemStore::iterator_next(iterator_t it, char *key, size_t key_size) while (kv_dir->read(&kv_dir_ent) != 0) { if (kv_dir_ent.d_type != DT_REG) { - tr_error("KV_Dir should contain only Regular File - %s", kv_dir_ent.d_name); continue; } @@ -605,7 +601,6 @@ int FileSystemStore::_verify_key_file(const char *key, key_metadata_t *key_metad _build_full_path_key(key); if (0 != kv_file->open(_fs, _full_path_key, O_RDONLY)) { - tr_info("Couldn't read: %s", _full_path_key); status = MBED_ERROR_ITEM_NOT_FOUND; goto exit_point; } diff --git a/features/storage/kvstore/filesystemstore/mbed_lib.json b/features/storage/kvstore/filesystemstore/mbed_lib.json new file mode 100644 index 00000000000..dbcba1eacf8 --- /dev/null +++ b/features/storage/kvstore/filesystemstore/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "filesystemstore" +} diff --git a/features/storage/kvstore/global_api/mbed_lib.json b/features/storage/kvstore/global_api/mbed_lib.json new file mode 100644 index 00000000000..7facc6b0dc8 --- /dev/null +++ b/features/storage/kvstore/global_api/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "kv-global-api" +} diff --git a/features/storage/kvstore/kv_map/mbed_lib.json b/features/storage/kvstore/kv_map/mbed_lib.json new file mode 100644 index 00000000000..07dc74cdca4 --- /dev/null +++ b/features/storage/kvstore/kv_map/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "kv-map" +} diff --git a/features/storage/kvstore/securestore/SecureStore.cpp b/features/storage/kvstore/securestore/SecureStore.cpp index 20cfeca0c92..17207481a7e 100644 --- a/features/storage/kvstore/securestore/SecureStore.cpp +++ b/features/storage/kvstore/securestore/SecureStore.cpp @@ -22,6 +22,7 @@ #include "aes.h" #include "cmac.h" +#include "mbedtls/platform.h" #include "entropy.h" #include "DeviceKey.h" #include "mbed_assert.h" @@ -737,6 +738,12 @@ int SecureStore::init() MBED_ASSERT(!(scratch_buf_size % enc_block_size)); _mutex.lock(); +#if defined(MBEDTLS_PLATFORM_C) + ret = mbedtls_platform_setup(NULL); + if (ret) { + goto fail; + } +#endif /* MBEDTLS_PLATFORM_C */ _entropy = new mbedtls_entropy_context; mbedtls_entropy_init(static_cast(_entropy)); @@ -775,6 +782,9 @@ int SecureStore::deinit() } _is_initialized = false; +#if defined(MBEDTLS_PLATFORM_C) + mbedtls_platform_teardown(NULL); +#endif /* MBEDTLS_PLATFORM_C */ _mutex.unlock(); return MBED_SUCCESS; diff --git a/features/storage/kvstore/tdbstore/mbed_lib.json b/features/storage/kvstore/tdbstore/mbed_lib.json new file mode 100644 index 00000000000..9ae5f7a8895 --- /dev/null +++ b/features/storage/kvstore/tdbstore/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "tdbstore" +} diff --git a/features/storage/nvstore/TESTS/nvstore/functionality/main.cpp b/features/storage/nvstore/TESTS/nvstore/functionality/main.cpp index bd157ded43c..ab8752b74b4 100644 --- a/features/storage/nvstore/TESTS/nvstore/functionality/main.cpp +++ b/features/storage/nvstore/TESTS/nvstore/functionality/main.cpp @@ -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); @@ -503,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)); diff --git a/features/storage/nvstore/source/nvstore.cpp b/features/storage/nvstore/source/nvstore.cpp index fc98faf1731..41b2603dcd9 100644 --- a/features/storage/nvstore/source/nvstore.cpp +++ b/features/storage/nvstore/source/nvstore.cpp @@ -244,32 +244,29 @@ int NVStore::flash_erase_area(uint8_t area) 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; @@ -278,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 { @@ -297,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; } diff --git a/features/storage/system_storage/mbed_lib.json b/features/storage/system_storage/mbed_lib.json new file mode 100644 index 00000000000..5c4a19ec1df --- /dev/null +++ b/features/storage/system_storage/mbed_lib.json @@ -0,0 +1,3 @@ +{ + "name": "system-storage" +} diff --git a/hal/analogin_api.h b/hal/analogin_api.h index 41524402932..fdf91dc62af 100644 --- a/hal/analogin_api.h +++ b/hal/analogin_api.h @@ -21,6 +21,7 @@ #define MBED_ANALOGIN_API_H #include "device.h" +#include "pinmap.h" #if DEVICE_ANALOGIN @@ -59,6 +60,15 @@ float analogin_read(analogin_t *obj); */ uint16_t analogin_read_u16(analogin_t *obj); +/** Get the pins that support analogin + * + * Return a PinMap array of pins that support analogin. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *analogin_pinmap(void); + /**@}*/ #ifdef __cplusplus diff --git a/hal/analogout_api.h b/hal/analogout_api.h index 7c25369a12c..95531cc7cc4 100644 --- a/hal/analogout_api.h +++ b/hal/analogout_api.h @@ -21,6 +21,7 @@ #define MBED_ANALOGOUT_API_H #include "device.h" +#include "pinmap.h" #if DEVICE_ANALOGOUT @@ -81,6 +82,15 @@ float analogout_read(dac_t *obj); */ uint16_t analogout_read_u16(dac_t *obj); +/** Get the pins that support analogout + * + * Return a PinMap array of pins that support analogout. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *analogout_pinmap(void); + /**@}*/ #ifdef __cplusplus diff --git a/hal/can_api.h b/hal/can_api.h index 777dc6b4437..675c7a1b7c7 100644 --- a/hal/can_api.h +++ b/hal/can_api.h @@ -21,6 +21,7 @@ #define MBED_CAN_API_H #include "device.h" +#include "pinmap.h" #if DEVICE_CAN @@ -76,6 +77,24 @@ unsigned char can_rderror(can_t *obj); unsigned char can_tderror(can_t *obj); void can_monitor(can_t *obj, int silent); +/** Get the pins that support CAN RD + * + * Return a PinMap array of pins that support CAN RD. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *can_rd_pinmap(void); + +/** Get the pins that support CAN TD + * + * Return a PinMap array of pins that support CAN TD. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *can_td_pinmap(void); + #ifdef __cplusplus }; #endif diff --git a/hal/i2c_api.h b/hal/i2c_api.h index 43ed7bcebdb..3ade94ce778 100644 --- a/hal/i2c_api.h +++ b/hal/i2c_api.h @@ -21,6 +21,7 @@ #define MBED_I2C_API_H #include "device.h" +#include "pinmap.h" #include "hal/buffer.h" #if DEVICE_I2C_ASYNCH @@ -146,6 +147,42 @@ int i2c_byte_read(i2c_t *obj, int last); */ int i2c_byte_write(i2c_t *obj, int data); +/** Get the pins that support I2C SDA + * + * Return a PinMap array of pins that support I2C SDA in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *i2c_master_sda_pinmap(void); + +/** Get the pins that support I2C SCL + * + * Return a PinMap array of pins that support I2C SCL in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *i2c_master_scl_pinmap(void); + +/** Get the pins that support I2C SDA + * + * Return a PinMap array of pins that support I2C SDA in + * slave mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *i2c_slave_sda_pinmap(void); + +/** Get the pins that support I2C SCL + * + * Return a PinMap array of pins that support I2C SCL in + * slave mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *i2c_slave_scl_pinmap(void); + /**@}*/ #if DEVICE_I2CSLAVE diff --git a/hal/mbed_pinmap_common.c b/hal/mbed_pinmap_common.c index 0f2083d92e3..aff140ea4d9 100644 --- a/hal/mbed_pinmap_common.c +++ b/hal/mbed_pinmap_common.c @@ -104,3 +104,77 @@ uint32_t pinmap_function(PinName pin, const PinMap *map) } return function; } + +bool pinmap_find_peripheral_pins(const PinList *whitelist, const PinList *blacklist, int per, const PinMap *const *maps, PinName **pins, uint32_t count) +{ + /* + * This function uses recursion to find a suitable set of pins which meet the requirements. + * Recursion is at max the number of pinmaps passed in - the 'count' parameter. Because of this + * there is no risk of a stack overflow due to unbounded recursion. + * + * Below is a psuedo code example of this function's operation when finding a set of 4 pins. + * The recursion depth is indicated by the number in front. + * + * 1. Given 4 maps and a peripheral find 4 suitable pins + * 2. Given 4 maps, a peripheral and 1 pin find 3 suitable pins + * 3. Given 4 maps, a peripheral and 2 pins find 2 suitable pins + * 4. Given 4 maps, a peripheral and 3 pins find 1 suitable pin + * 4. Return success if all pins are found, return failure if there are no suitable pins, otherwise choose the next pin and retry + * 3. Return success if all pins are found, return failure if there are no suitable pins, otherwise choose the next pin and retry + * 2. Return success if all pins are found, return failure if there are no suitable pins, otherwise choose the next pin and retry + * 1. Return success if all pins are found, return failure if there are no suitable pins, otherwise choose the next pin and retry + * + */ + + for (uint32_t i = 0; i < count; i++) { + const PinMap *map = maps[i]; + PinName *pin = pins[i]; + if (*pin == NC) { + for (; map->pin != NC; map++) { + if (map->peripheral != per) { + continue; + } + if (!pinmap_list_has_pin(whitelist, map->pin)) { + // Not part of this form factor + continue; + } + if (pinmap_list_has_pin(blacklist, map->pin)) { + // Restricted pin + continue; + } + bool already_in_use = false; + for (uint32_t j = 0; j < count; j++) { + if (j == i) { + // Don't compare with self + continue; + } + if (map->pin == *pins[j]) { + already_in_use = true; + break; + } + } + if (already_in_use) { + continue; + } + *pin = map->pin; + if (pinmap_find_peripheral_pins(whitelist, blacklist, per, maps, pins, count)) { + return true; + } + } + *pin = NC; + return false; + } + } + return true; +} + +bool pinmap_list_has_pin(const PinList *list, PinName pin) +{ + for (uint32_t i = 0; i < list->count; i++) { + if (list->pins[i] == pin) { + return true; + } + } + return false; +} + diff --git a/hal/mbed_pinmap_default.c b/hal/mbed_pinmap_default.c new file mode 100644 index 00000000000..780bb682520 --- /dev/null +++ b/hal/mbed_pinmap_default.c @@ -0,0 +1,79 @@ +/* mbed Microcontroller Library + * 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. + */ + +#include +#include "hal/pinmap.h" +#include "platform/mbed_toolchain.h" +#include "platform/mbed_assert.h" +#include "device.h" + +//*** Common form factors *** +#ifdef TARGET_FF_ARDUINO + +static const PinName ff_arduino_pins[] = { + D0, D1, D2, D3, D4, D5, D6, D7, + D8, D9, D10, D11, D12, D13, D14, D15, + A0, A1, A2, A3, A4, A5 +}; + +static const char *ff_arduino_names[] = { + "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", + "D8", "D9", "D10", "D11", "D12", "D13", "D14", "D15", + "A0", "A1", "A2", "A3", "A4", "A5" +}; + +static const PinList ff_arduino_list = { + sizeof(ff_arduino_pins) / sizeof(ff_arduino_pins[0]), + ff_arduino_pins +}; + +MBED_STATIC_ASSERT(sizeof(ff_arduino_pins) / sizeof(ff_arduino_pins[0]) == sizeof(ff_arduino_names) / sizeof(ff_arduino_names[0]), + "Arrays must have the same length"); + +const PinList *pinmap_ff_arduino_pins() +{ + return &ff_arduino_list; +} + +const char *pinmap_ff_arduino_pin_to_string(PinName pin) +{ + if (pin == NC) { + return "NC"; + } + for (size_t i = 0; i < ff_arduino_list.count; i++) { + if (ff_arduino_list.pins[i] == pin) { + return ff_arduino_names[i]; + } + } + return "Unknown"; +} + +#endif + +//*** Default restricted pins *** +MBED_WEAK const PinList *pinmap_restricted_pins() +{ + static const PinName pins[] = { + USBTX, USBRX + }; + static const PinList pin_list = { + sizeof(pins) / sizeof(pins[0]), + pins + }; + return &pin_list; +} + diff --git a/hal/pinmap.h b/hal/pinmap.h index d94892a7c68..b61183a169e 100644 --- a/hal/pinmap.h +++ b/hal/pinmap.h @@ -21,6 +21,7 @@ #define MBED_PINMAP_H #include "PinNames.h" +#include #ifdef __cplusplus extern "C" { @@ -32,6 +33,11 @@ typedef struct { int function; } PinMap; +typedef struct { + uint32_t count; + const PinName *pins; +} PinList; + void pin_function(PinName pin, int function); void pin_mode(PinName pin, PinMode mode); @@ -42,6 +48,153 @@ void pinmap_pinout(PinName pin, const PinMap *map); uint32_t pinmap_find_peripheral(PinName pin, const PinMap *map); uint32_t pinmap_find_function(PinName pin, const PinMap *map); +/** + * Find a combination of pins suitable for use given the constraints + * + * This function finds pins which meet these specific properties: + * - The pin is part of the form factor + * - The pin is not in the restricted list + * - The pin is contained within the respective pinmap + * - The pin belongs to the given peripheral + * - Each pin found is distinct; in the example below + * mosi and miso will never be assigned the same pin + * + * Example: + * @code + * #include "mbed.h" + * #include "pinmap.h" + * + * int main() + * { + * int per = spi_master_cs_pinmap()->peripheral; + * const PinList *pins_ff = pinmap_ff_default_pins(); + * const PinList *pins_avoid = pinmap_restricted_pins(); + * PinName mosi = NC; + * PinName miso = NC; + * PinName sclk = NC; + * PinName ssel = NC; + * const PinMap *maps[] = { + * spi_master_mosi_pinmap(), + * spi_master_miso_pinmap(), + * spi_master_clk_pinmap(), + * spi_master_cs_pinmap() + * }; + * PinName *pins[] = { + * &mosi, + * &miso, + * &sclk, + * &ssel + * }; + * if (pinmap_find_peripheral_pins(pins_ff, pins_avoid, per, maps, pins, sizeof(maps) / sizeof(maps[0]))) { + * printf("Found SPI pins to test instance %i with:\n" + * " mosi=%s\n" + * " miso=%s\n" + * " sclk=%s\n" + * " ssel=%s\n", per, + * pinmap_ff_default_pin_to_string(mosi), + * pinmap_ff_default_pin_to_string(miso), + * pinmap_ff_default_pin_to_string(sclk), + * pinmap_ff_default_pin_to_string(ssel)); + * } else { + * printf("Could not find SPI combination to test %i\n", per); + * } + * return 0; + * } + * @endcode + * + * @param whitelist List of pins to choose from + * @param blacklist List of pins which cannot be used + * @param per Peripheral to which the pins belong + * @param maps An array of pin maps to select from + * @param pins An array of pins to find. Pins already set to a value will be + * left unchanged. Only pins initialized to NC will be updated by this function + * @param count The size of maps and pins + * @return true if a suitable combination of pins was found and + * written to the pins array, otherwise false + */ +bool pinmap_find_peripheral_pins(const PinList *whitelist, const PinList *blacklist, int per, const PinMap *const *maps, PinName **pins, uint32_t count); + +/** + * Check if the pin is in the list + * + * @param list pin list to check + * @param pin pin to check for in the list + * @return true if the pin is in the list, false otherwise + */ +bool pinmap_list_has_pin(const PinList *list, PinName pin); + +/** + * Get the pin list of pins to avoid during testing + * + * The restricted pin list is used to indicate to testing + * that a pin should be skipped due to some caveat about it. + * For example, using USBRX and USBTX during tests will interfere + * with the test runner and should be avoided. + * + * Targets should override the weak implementation of this + * function if they have additional pins which should be + * skipped during testing. + * + * @return Pointer to a pin list of pins to avoid + */ +const PinList *pinmap_restricted_pins(void); + +#ifdef TARGET_FF_ARDUINO + +/** + * Get the pin list of the Arduino form factor + * + * @return Pointer to the Arduino pin list + */ +const PinList *pinmap_ff_arduino_pins(void); + +/** + * Get the string representation of a form factor pin + * + * @param pin Pin to get a string for + * @return String representing the form factor pin + */ +const char *pinmap_ff_arduino_pin_to_string(PinName pin); + +/* Default to arduino form factor if unspecified */ +#ifndef MBED_CONF_TARGET_DEFAULT_FORM_FACTOR +#define MBED_CONF_TARGET_DEFAULT_FORM_FACTOR arduino +#endif + +#endif + +#ifdef MBED_CONF_TARGET_DEFAULT_FORM_FACTOR + +#define PINMAP_DEFAULT_PINS_(name) pinmap_ff_ ## name ## _pins +#define PINMAP_DEFAULT_PIN_TO_STRING_(name) pinmap_ff_ ## name ## _pin_to_string +#define PINMAP_DEFAULT_PINS(name) PINMAP_DEFAULT_PINS_(name) +#define PINMAP_DEFAULT_PIN_TO_STRING(name) PINMAP_DEFAULT_PIN_TO_STRING_(name) +#define pinmap_ff_default_pins PINMAP_DEFAULT_PINS(MBED_CONF_TARGET_DEFAULT_FORM_FACTOR) +#define pinmap_ff_default_pin_to_string PINMAP_DEFAULT_PIN_TO_STRING(MBED_CONF_TARGET_DEFAULT_FORM_FACTOR) + +/** + * Get the pin list of the default form factor + * + * This is an alias to whichever form factor is set + * to be the default. + * + * @return Pointer to the default pin list + */ +const PinList *pinmap_ff_default_pins(void); + +/** + * Get the string representation of a form factor pin + * + * This is an alias to whichever form factor is set + * to be the default. + * + * @param pin Pin to get a string for + * @return String representing the form factor pin + */ +const char *pinmap_ff_default_pin_to_string(PinName pin); + +#endif + #ifdef __cplusplus } #endif diff --git a/hal/pwmout_api.h b/hal/pwmout_api.h index 5ede26df1cd..62d5d7098c7 100644 --- a/hal/pwmout_api.h +++ b/hal/pwmout_api.h @@ -21,6 +21,7 @@ #define MBED_PWMOUT_API_H #include "device.h" +#include "pinmap.h" #if DEVICE_PWMOUT @@ -108,6 +109,15 @@ void pwmout_pulsewidth_ms(pwmout_t *obj, int ms); */ void pwmout_pulsewidth_us(pwmout_t *obj, int us); +/** Get the pins that support PWM + * + * Return a PinMap array of pins that support PWM. + * The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *pwmout_pinmap(void); + /**@}*/ #ifdef __cplusplus diff --git a/hal/qspi_api.h b/hal/qspi_api.h index 561e0afb5cf..8464c2d6b2c 100644 --- a/hal/qspi_api.h +++ b/hal/qspi_api.h @@ -21,6 +21,7 @@ #define MBED_QSPI_API_H #include "device.h" +#include "pinmap.h" #include #if DEVICE_QSPI @@ -182,6 +183,60 @@ qspi_status_t qspi_command_transfer(qspi_t *obj, const qspi_command_t *command, */ qspi_status_t qspi_read(qspi_t *obj, const qspi_command_t *command, void *data, size_t *length); +/** Get the pins that support QSPI SCLK + * + * Return a PinMap array of pins that support QSPI SCLK in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *qspi_master_sclk_pinmap(void); + +/** Get the pins that support QSPI SSEL + * + * Return a PinMap array of pins that support QSPI SSEL in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *qspi_master_ssel_pinmap(void); + +/** Get the pins that support QSPI DATA0 + * + * Return a PinMap array of pins that support QSPI DATA0 in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *qspi_master_data0_pinmap(void); + +/** Get the pins that support QSPI DATA1 + * + * Return a PinMap array of pins that support QSPI DATA1 in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *qspi_master_data1_pinmap(void); + +/** Get the pins that support QSPI DATA2 + * + * Return a PinMap array of pins that support QSPI DATA2 in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *qspi_master_data2_pinmap(void); + +/** Get the pins that support QSPI DATA3 + * + * Return a PinMap array of pins that support QSPI DATA3 in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *qspi_master_data3_pinmap(void); + /**@}*/ #ifdef __cplusplus diff --git a/hal/reset_reason_api.h b/hal/reset_reason_api.h new file mode 100644 index 00000000000..b43b2fbcabc --- /dev/null +++ b/hal/reset_reason_api.h @@ -0,0 +1,110 @@ +/** \addtogroup hal */ +/** @{*/ +/* mbed Microcontroller Library + * Copyright (c) 2017 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_RESET_REASON_API_H +#define MBED_RESET_REASON_API_H + +#if DEVICE_RESET_REASON + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \defgroup hal_reset_reason Reset Reason HAL API + * @{ + */ + +/** Definitions of different reset reasons + */ +typedef enum { + RESET_REASON_POWER_ON, /**< Set when power is initially applied to the board. The power-on-reset circuit causes a POWER_ON reset when this occurs */ + RESET_REASON_PIN_RESET, /**< Set when a reset is triggered by the hardware pin on the board */ + RESET_REASON_BROWN_OUT, /**< Triggered when the voltage drops below the low voltage detect (LVD) threshold the system will be held in a reset until the voltage rises above the threshold */ + RESET_REASON_SOFTWARE, /**< Set during software reset, typically triggered by writing the SYSRESETREQ bit in the Application Interrupt and Reset Control register */ + RESET_REASON_WATCHDOG, /**< Set when a running watchdog timer fails to be refreshed */ + RESET_REASON_LOCKUP, /**< Set when the core is locked because of an unrecoverable exception */ + RESET_REASON_WAKE_LOW_POWER, /**< Set when waking from deep sleep mode */ + RESET_REASON_ACCESS_ERROR, /**< Umbrella value that encompasses any access related reset */ + RESET_REASON_BOOT_ERROR, /**< Umbrella value that encompasses any boot related reset */ + RESET_REASON_MULTIPLE, /**< Set if multiple reset reasons are set within the board. Occurs when the reset reason registers aren't cleared between resets */ + RESET_REASON_PLATFORM, /**< Platform specific reset reason not captured in this enum */ + RESET_REASON_UNKNOWN /**< Unknown or unreadable reset reason **/ +} reset_reason_t; + +/** Fetch the reset reason for the last system reset + * + * This function must return the contents of the system reset reason registers + * cast to an appropriate platform independent reset reason. If multiple reset + * reasons are set this function should return RESET_REASON_MULTIPLE. If the + * reset reason does not match any existing platform independent value this + * function should return RESET_REASON_PLATFORM. If no reset reason can be + * determined this function should return RESET_REASON_UNKNOWN. + * + * This function is not idempotent, there is no guarantee that the system + * reset reason will not be cleared between calls to this function altering the + * return value between calls. + * + * Note: Some platforms contain reset reason registers that persist through + * system resets. If the registers haven't been cleared before calling this + * function multiple reasons may be set within the registers. If multiple reset + * reasons are detected this function will return RESET_REASON_MULTIPLE. + * + * @return enum containing the last reset reason for the board. + */ +reset_reason_t hal_reset_reason_get(void); + + +/** Fetch the raw platform specific reset reason register value + * + * This function must return the raw contents of the system reset reason + * registers cast to a uint32_t value. If the platform contains reset reasons + * that span multiple registers/addresses the value should be concatenated into + * the return type. + * + * This function is not idempotent, there is no guarantee that the system + * reset reason will not be cleared between calls to this function altering the + * return value between calls. + * + * @return value containing the reset reason register for the given platform. + * If the platform contains reset reasons across multiple registers they + * will be concatenated here. + */ +uint32_t hal_reset_reason_get_raw(void); + +/** Clear the reset reason from registers + * + * Reset the value of the reset status registers, the reset reason will persist + * between system resets on certain platforms so the registers should be cleared + * before the system resets. Failing to do so may make it difficult to determine + * the cause of any subsequent system resets. + */ +void hal_reset_reason_clear(void); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif // DEVICE_RESET_REASON + +#endif // MBED_RESET_REASON_API_H + +/** @}*/ diff --git a/hal/serial_api.h b/hal/serial_api.h index 1da952a6c71..68ed74a139d 100644 --- a/hal/serial_api.h +++ b/hal/serial_api.h @@ -21,6 +21,7 @@ #define MBED_SERIAL_API_H #include "device.h" +#include "pinmap.h" #include "hal/buffer.h" #include "hal/dma_api.h" @@ -220,6 +221,42 @@ void serial_pinout_tx(PinName tx); */ void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, PinName txflow); +/** Get the pins that support Serial TX + * + * Return a PinMap array of pins that support Serial TX. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *serial_tx_pinmap(void); + +/** Get the pins that support Serial RX + * + * Return a PinMap array of pins that support Serial RX. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *serial_rx_pinmap(void); + +/** Get the pins that support Serial CTS + * + * Return a PinMap array of pins that support Serial CTS. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *serial_cts_pinmap(void); + +/** Get the pins that support Serial RTS + * + * Return a PinMap array of pins that support Serial RTS. The + * array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *serial_rts_pinmap(void); + #if DEVICE_SERIAL_ASYNCH /**@}*/ diff --git a/hal/spi_api.h b/hal/spi_api.h index 423f113c782..5811f71d7bd 100644 --- a/hal/spi_api.h +++ b/hal/spi_api.h @@ -21,6 +21,7 @@ #define MBED_SPI_API_H #include "device.h" +#include "pinmap.h" #include "hal/dma_api.h" #include "hal/buffer.h" @@ -173,6 +174,78 @@ int spi_busy(spi_t *obj); */ uint8_t spi_get_module(spi_t *obj); +/** Get the pins that support SPI MOSI + * + * Return a PinMap array of pins that support SPI MOSI in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *spi_master_mosi_pinmap(void); + +/** Get the pins that support SPI MISO + * + * Return a PinMap array of pins that support SPI MISO in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *spi_master_miso_pinmap(void); + +/** Get the pins that support SPI CLK + * + * Return a PinMap array of pins that support SPI CLK in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *spi_master_clk_pinmap(void); + +/** Get the pins that support SPI CS + * + * Return a PinMap array of pins that support SPI CS in + * master mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *spi_master_cs_pinmap(void); + +/** Get the pins that support SPI MOSI + * + * Return a PinMap array of pins that support SPI MOSI in + * slave mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *spi_slave_mosi_pinmap(void); + +/** Get the pins that support SPI MISO + * + * Return a PinMap array of pins that support SPI MISO in + * slave mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *spi_slave_miso_pinmap(void); + +/** Get the pins that support SPI CLK + * + * Return a PinMap array of pins that support SPI CLK in + * slave mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *spi_slave_clk_pinmap(void); + +/** Get the pins that support SPI CS + * + * Return a PinMap array of pins that support SPI CS in + * slave mode. The array is terminated with {NC, NC, 0}. + * + * @return PinMap array + */ +const PinMap *spi_slave_cs_pinmap(void); + /**@}*/ #if DEVICE_SPI_ASYNCH diff --git a/hal/watchdog_api.h b/hal/watchdog_api.h new file mode 100644 index 00000000000..b0fd057d156 --- /dev/null +++ b/hal/watchdog_api.h @@ -0,0 +1,150 @@ +/** \addtogroup hal */ +/** @{*/ +/* mbed Microcontroller Library + * Copyright (c) 2017 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_WATCHDOG_API_H +#define MBED_WATCHDOG_API_H + +#if DEVICE_WATCHDOG + +#include +#include + +/** + * \defgroup hal_watchdog Watchdog HAL API + * @{ + */ + +/** \file watchdog_api.h + * + * This module provides platform independent access to the system watchdog timer + * which is an embedded peripheral that will reset the system in the case of + * system failures or malfunctions. + * + * The watchdog timer initialises a system timer with a time period specified in + * the configuration. This timer counts down and triggers a system reset when it + * wraps. To prevent the system reset the timer must be continually + * kicked/refreshed by calling hal_watchdog_kick which will reset the countdown + * to the user specified reset value. +<<<<<<< HEAD + * + * The Watchdog timer must continue to operate in low power modes. It + * must count down and trigger a reset from within both sleep and deep sleep + * modes unless the chip is woken to refresh the timer. + */ + +typedef struct { + /** + * Refresh value for the watchdog in milliseconds. The maximum value of this + * setting is platform dependent, to find the maximum value for the current + * platform call hal_watchdog_get_features() and check the timeout value + * member. The minimum valid value for this setting is 1, attempting to + * initialise the watchdog with a timeout of 0ms will return + * WATCHDOG_STATUS_INVALID_ARGUMENT. + */ + uint32_t timeout_ms; +} watchdog_config_t; + + +typedef struct { + /** + * Maximum timeout value for the watchdog in milliseconds. + */ + uint32_t max_timeout; + /** + * Watchdog configuration can be updated after the watchdog has been started + */ + bool update_config; + /** + * Watchdog can be stopped after it is started without a reset + */ + bool disable_watchdog; +} watchdog_features_t; + + +typedef enum { + WATCHDOG_STATUS_OK, + WATCHDOG_STATUS_NOT_SUPPORTED, + WATCHDOG_STATUS_INVALID_ARGUMENT +} watchdog_status_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/** Initialise and start a watchdog timer with the given configuration. + * + * If the watchdog timer is configured and started successfully this + * function will return WATCHDOG_STATUS_OK. + * + * If the timeout specified is outside the range supported by the platform + * it will return WATCHDOG_STATUS_INVALID_ARGUMENT. + * + * @param[in] config Configuration settings for the watchdog timer + * + * @return WATCHDOG_STATUS_OK if the watchdog is configured correctly and + * has started. Otherwise a status indicating the fault. + */ +watchdog_status_t hal_watchdog_init(const watchdog_config_t *config); + +/** Refreshes the watchdog timer. + * + * This function should be called periodically before the watchdog times out. + * Otherwise, the system is reset. + * + * If a watchdog is not currently running this function does nothing + */ +void hal_watchdog_kick(void); + +/** Stops the watchdog timer + * + * Calling this function will attempt to disable any currently running watchdog + * timers if supported by the current platform + * + * @return Returns WATCHDOG_STATUS_OK if the watchdog timer was succesfully + * stopped, or if the timer was never started. Returns + * WATCHDOG_STATUS_NOT_SUPPORTED if the watchdog cannot be disabled on + * the current platform. + */ +watchdog_status_t hal_watchdog_stop(void); + +/** Get the watchdog timer refresh value + * + * This function returns the configured refresh timeout of the watchdog timer. + * + * @return Reload value for the watchdog timer in milliseconds. + */ +uint32_t hal_watchdog_get_reload_value(void); + +/** Get information on the current platforms supported watchdog functionality + * + * @return watchdog_feature_t indicating supported watchdog features on the + * current platform + */ +watchdog_features_t hal_watchdog_get_platform_features(void); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif // DEVICE_WATCHDOG + +#endif // MBED_WATCHDOG_API_H + +/** @}*/ diff --git a/mbed.h b/mbed.h index e247e1dfd33..0fd7822a4be 100644 --- a/mbed.h +++ b/mbed.h @@ -76,6 +76,8 @@ #include "drivers/QSPI.h" // mbed Internal components +#include "drivers/ResetReason.h" +#include "platform/mbed_watchdog_mgr.h" #include "drivers/Timer.h" #include "drivers/Ticker.h" #include "drivers/Timeout.h" diff --git a/platform/Callback.h b/platform/Callback.h index 52f6732c71d..d021998b72f 100644 --- a/platform/Callback.h +++ b/platform/Callback.h @@ -94,6 +94,7 @@ class Callback { */ Callback(const Callback &func) { + memset(this, 0, sizeof(Callback)); if (func._ops) { func._ops->move(this, &func); } @@ -718,6 +719,7 @@ class Callback { */ Callback(const Callback &func) { + memset(this, 0, sizeof(Callback)); if (func._ops) { func._ops->move(this, &func); } @@ -1343,6 +1345,7 @@ class Callback { */ Callback(const Callback &func) { + memset(this, 0, sizeof(Callback)); if (func._ops) { func._ops->move(this, &func); } @@ -1969,6 +1972,7 @@ class Callback { */ Callback(const Callback &func) { + memset(this, 0, sizeof(Callback)); if (func._ops) { func._ops->move(this, &func); } @@ -2596,6 +2600,7 @@ class Callback { */ Callback(const Callback &func) { + memset(this, 0, sizeof(Callback)); if (func._ops) { func._ops->move(this, &func); } @@ -3224,6 +3229,7 @@ class Callback { */ Callback(const Callback &func) { + memset(this, 0, sizeof(Callback)); if (func._ops) { func._ops->move(this, &func); } diff --git a/platform/SharedPtr.h b/platform/SharedPtr.h index 0663b2147d3..0a78931eda3 100644 --- a/platform/SharedPtr.h +++ b/platform/SharedPtr.h @@ -145,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; } } @@ -177,10 +180,7 @@ class SharedPtr { uint32_t use_count() const { if (_ptr != NULL) { - core_util_critical_section_enter(); - uint32_t current_counter = *_counter; - core_util_critical_section_exit(); - return current_counter; + return core_util_atomic_load_u32(_counter); } else { return 0; } @@ -226,16 +226,15 @@ 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() { if (_ptr != NULL) { - uint32_t new_value = core_util_atomic_decr_u32(_counter, 1); - if (new_value == 0) { + if (core_util_atomic_decr_u32(_counter, 1) == 0) { delete _counter; - _counter = NULL; delete _ptr; - _ptr = NULL; } } } diff --git a/platform/SingletonPtr.h b/platform/SingletonPtr.h index 82b7bcf50a8..5cb109ea49d 100644 --- a/platform/SingletonPtr.h +++ b/platform/SingletonPtr.h @@ -28,6 +28,7 @@ #include #include #include "platform/mbed_assert.h" +#include "platform/mbed_critical.h" #ifdef MBED_CONF_RTOS_PRESENT #include "cmsis_os2.h" #endif @@ -92,17 +93,20 @@ struct SingletonPtr { */ T *get() const { - if (NULL == _ptr) { + T *p = static_cast(core_util_atomic_load_ptr(&_ptr)); + if (p == NULL) { singleton_lock(); - if (NULL == _ptr) { - _ptr = new (_data) T(); + p = static_cast(_ptr); + if (p == NULL) { + p = new (_data) T(); + core_util_atomic_store_ptr(&_ptr, p); } singleton_unlock(); } // _ptr was not zero initialized or was // corrupted if this assert is hit - MBED_ASSERT(_ptr == (T *)&_data); - return _ptr; + MBED_ASSERT(p == reinterpret_cast(&_data)); + return p; } /** Get a pointer to the underlying singleton @@ -126,7 +130,7 @@ struct SingletonPtr { } // This is zero initialized when in global scope - mutable T *_ptr; + mutable void *_ptr; #if __cplusplus >= 201103L // Align data appropriately alignas(T) mutable char _data[sizeof(T)]; diff --git a/platform/mbed_application.c b/platform/mbed_application.c index c23520b0b3d..070c1013840 100644 --- a/platform/mbed_application.c +++ b/platform/mbed_application.c @@ -89,16 +89,19 @@ void mbed_start_application(uintptr_t address) static void powerdown_nvic() { - int isr_groups_32; int i; int j; + int isr_groups_32; #if defined(__CORTEX_M23) // M23 doesn't support ICTR and supports up to 240 external interrupts. isr_groups_32 = 8; +#elif defined(__CORTEX_M0PLUS) + isr_groups_32 = 1; #else isr_groups_32 = ((SCnSCB->ICTR & SCnSCB_ICTR_INTLINESNUM_Msk) >> SCnSCB_ICTR_INTLINESNUM_Pos) + 1; #endif + for (i = 0; i < isr_groups_32; i++) { NVIC->ICER[i] = 0xFFFFFFFF; NVIC->ICPR[i] = 0xFFFFFFFF; @@ -122,21 +125,21 @@ static void powerdown_scb(uint32_t vtor) SCB->AIRCR = 0x05FA | 0x0000; SCB->SCR = 0x00000000; // SCB->CCR - Implementation defined value -#if defined(__CORTEX_M23) - for (i = 0; i < 2; i++) { - SCB->SHPR[i] = 0x00; - } + int num_pri_reg; // Number of priority registers +#if defined(__CORTEX_M0PLUS) || defined(__CORTEX_M23) + num_pri_reg = 2; #else - for (i = 0; i < 12; i++) { -#if defined(__CORTEX_M7) + num_pri_reg = 12; +#endif + for (i = 0; i < num_pri_reg; i++) { +#if defined(__CORTEX_M7) || defined(__CORTEX_M23) SCB->SHPR[i] = 0x00; #else SCB->SHP[i] = 0x00; #endif } -#endif SCB->SHCSR = 0x00000000; -#if defined(__CORTEX_M23) +#if defined(__CORTEX_M23) || defined(__CORTEX_M0PLUS) #else SCB->CFSR = 0xFFFFFFFF; SCB->HFSR = SCB_HFSR_DEBUGEVT_Msk | SCB_HFSR_FORCED_Msk | SCB_HFSR_VECTTBL_Msk; @@ -158,7 +161,7 @@ static void powerdown_scb(uint32_t vtor) __asm static void start_new_application(void *sp, void *pc) { - MOV R2, #0 + MOVS R2, #0 MSR CONTROL, R2 // Switch to main stack MOV SP, R0 MSR PRIMASK, R2 // Enable interrupts @@ -170,9 +173,7 @@ __asm static void start_new_application(void *sp, void *pc) void start_new_application(void *sp, void *pc) { __asm volatile( - "movw r2, #0 \n" // Fail to compile "mov r2, #0" with ARMC6. Replace with MOVW. - // We needn't "movt r2, #0" immediately following because MOVW - // will zero-extend the 16-bit immediate. + "movs r2, #0 \n" "msr control, r2 \n" // Switch to main stack "mov sp, %0 \n" "msr primask, r2 \n" // Enable interrupts diff --git a/platform/mbed_application.h b/platform/mbed_application.h index 1cccfb83bc7..9ae72a94b5b 100644 --- a/platform/mbed_application.h +++ b/platform/mbed_application.h @@ -20,7 +20,7 @@ #include -#if defined(__CORTEX_M3) || defined(__CORTEX_M4) || defined(__CORTEX_M7)\ +#if defined(__CORTEX_M0PLUS) || defined(__CORTEX_M3) || defined(__CORTEX_M4) || defined(__CORTEX_M7)\ || defined(__CORTEX_M23) || defined(__CORTEX_A9) #define MBED_APPLICATION_SUPPORT 1 #else diff --git a/platform/mbed_board.c b/platform/mbed_board.c index 4b3844e2a4d..9982182940e 100644 --- a/platform/mbed_board.c +++ b/platform/mbed_board.c @@ -15,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" diff --git a/platform/mbed_critical.c b/platform/mbed_critical.c index 4b4a4f224a4..8b847730c67 100644 --- a/platform/mbed_critical.c +++ b/platform/mbed_critical.c @@ -100,6 +100,9 @@ void core_util_critical_section_exit(void) } } +/* Inline bool implementations in the header use uint8_t versions to manipulate the bool */ +MBED_STATIC_ASSERT(sizeof(bool) == sizeof(uint8_t), "Surely bool is a byte"); + #if MBED_EXCLUSIVE_ACCESS /* Supress __ldrex and __strex deprecated warnings - "#3731-D: intrinsic is deprecated" */ @@ -109,8 +112,8 @@ void core_util_critical_section_exit(void) bool core_util_atomic_flag_test_and_set(volatile core_util_atomic_flag *flagPtr) { - uint8_t currentValue; MBED_BARRIER(); + uint8_t currentValue; do { currentValue = __LDREXB(&flagPtr->_flag); } while (__STREXB(true, &flagPtr->_flag)); @@ -164,6 +167,39 @@ bool core_util_atomic_cas_u32(volatile uint32_t *ptr, uint32_t *expectedCurrentV return true; } +uint8_t core_util_atomic_exchange_u8(volatile uint8_t *valuePtr, uint8_t desiredValue) +{ + MBED_BARRIER(); + uint8_t currentValue; + do { + currentValue = __LDREXB(valuePtr); + } while (__STREXB(desiredValue, valuePtr)); + MBED_BARRIER(); + return currentValue; +} + +uint16_t core_util_atomic_exchange_u16(volatile uint16_t *valuePtr, uint16_t desiredValue) +{ + MBED_BARRIER(); + uint16_t currentValue; + do { + currentValue = __LDREXH(valuePtr); + } while (__STREXH(desiredValue, valuePtr)); + MBED_BARRIER(); + return currentValue; +} + +uint32_t core_util_atomic_exchange_u32(volatile uint32_t *valuePtr, uint32_t desiredValue) +{ + MBED_BARRIER(); + uint32_t currentValue; + do { + currentValue = __LDREXW(valuePtr); + } while (__STREXW(desiredValue, valuePtr)); + MBED_BARRIER(); + return currentValue; +} + uint8_t core_util_atomic_incr_u8(volatile uint8_t *valuePtr, uint8_t delta) { MBED_BARRIER(); @@ -188,8 +224,8 @@ uint16_t core_util_atomic_incr_u16(volatile uint16_t *valuePtr, uint16_t delta) uint32_t core_util_atomic_incr_u32(volatile uint32_t *valuePtr, uint32_t delta) { - uint32_t newValue; MBED_BARRIER(); + uint32_t newValue; do { newValue = __LDREXW(valuePtr) + delta; } while (__STREXW(newValue, valuePtr)); @@ -200,8 +236,8 @@ uint32_t core_util_atomic_incr_u32(volatile uint32_t *valuePtr, uint32_t delta) uint8_t core_util_atomic_decr_u8(volatile uint8_t *valuePtr, uint8_t delta) { - uint8_t newValue; MBED_BARRIER(); + uint8_t newValue; do { newValue = __LDREXB(valuePtr) - delta; } while (__STREXB(newValue, valuePtr)); @@ -211,8 +247,8 @@ uint8_t core_util_atomic_decr_u8(volatile uint8_t *valuePtr, uint8_t delta) uint16_t core_util_atomic_decr_u16(volatile uint16_t *valuePtr, uint16_t delta) { - uint16_t newValue; MBED_BARRIER(); + uint16_t newValue; do { newValue = __LDREXH(valuePtr) - delta; } while (__STREXH(newValue, valuePtr)); @@ -222,8 +258,8 @@ uint16_t core_util_atomic_decr_u16(volatile uint16_t *valuePtr, uint16_t delta) uint32_t core_util_atomic_decr_u32(volatile uint32_t *valuePtr, uint32_t delta) { - uint32_t newValue; MBED_BARRIER(); + uint32_t newValue; do { newValue = __LDREXW(valuePtr) - delta; } while (__STREXW(newValue, valuePtr)); @@ -295,6 +331,34 @@ bool core_util_atomic_cas_u32(volatile uint32_t *ptr, uint32_t *expectedCurrentV } +uint8_t core_util_atomic_exchange_u8(volatile uint8_t *ptr, uint8_t desiredValue) +{ + core_util_critical_section_enter(); + uint8_t currentValue = *ptr; + *ptr = desiredValue; + core_util_critical_section_exit(); + return currentValue; +} + +uint16_t core_util_atomic_exchange_u16(volatile uint16_t *ptr, uint16_t desiredValue) +{ + core_util_critical_section_enter(); + uint16_t currentValue = *ptr; + *ptr = desiredValue; + core_util_critical_section_exit(); + return currentValue; +} + +uint32_t core_util_atomic_exchange_u32(volatile uint32_t *ptr, uint32_t desiredValue) +{ + core_util_critical_section_enter(); + uint32_t currentValue = *ptr; + *ptr = desiredValue; + core_util_critical_section_exit(); + return currentValue; +} + + uint8_t core_util_atomic_incr_u8(volatile uint8_t *valuePtr, uint8_t delta) { uint8_t newValue; @@ -358,6 +422,69 @@ uint32_t core_util_atomic_decr_u32(volatile uint32_t *valuePtr, uint32_t delta) #endif +/* No architecture we support has LDREXD/STREXD, so must always disable IRQs for 64-bit operations */ +uint64_t core_util_atomic_load_u64(const volatile uint64_t *valuePtr) +{ + core_util_critical_section_enter(); + uint64_t currentValue = *valuePtr; + core_util_critical_section_exit(); + return currentValue; +} + +void core_util_atomic_store_u64(volatile uint64_t *valuePtr, uint64_t desiredValue) +{ + core_util_critical_section_enter(); + *valuePtr = desiredValue; + core_util_critical_section_exit(); +} + +uint64_t core_util_atomic_exchange_u64(volatile uint64_t *valuePtr, uint64_t desiredValue) +{ + core_util_critical_section_enter(); + uint64_t currentValue = *valuePtr; + *valuePtr = desiredValue; + core_util_critical_section_exit(); + return currentValue; +} + +bool core_util_atomic_cas_u64(volatile uint64_t *ptr, uint64_t *expectedCurrentValue, uint64_t desiredValue) +{ + bool success; + uint64_t currentValue; + core_util_critical_section_enter(); + currentValue = *ptr; + if (currentValue == *expectedCurrentValue) { + *ptr = desiredValue; + success = true; + } else { + *expectedCurrentValue = currentValue; + success = false; + } + core_util_critical_section_exit(); + return success; +} + +uint64_t core_util_atomic_incr_u64(volatile uint64_t *valuePtr, uint64_t delta) +{ + uint64_t newValue; + core_util_critical_section_enter(); + newValue = *valuePtr + delta; + *valuePtr = newValue; + core_util_critical_section_exit(); + return newValue; +} + +uint64_t core_util_atomic_decr_u64(volatile uint64_t *valuePtr, uint64_t delta) +{ + uint64_t newValue; + core_util_critical_section_enter(); + newValue = *valuePtr - delta; + *valuePtr = newValue; + core_util_critical_section_exit(); + return newValue; +} + +MBED_STATIC_ASSERT(sizeof(void *) == sizeof(uint32_t), "Alas, pointers must be 32-bit"); bool core_util_atomic_cas_ptr(void *volatile *ptr, void **expectedCurrentValue, void *desiredValue) { @@ -367,6 +494,11 @@ bool core_util_atomic_cas_ptr(void *volatile *ptr, void **expectedCurrentValue, (uint32_t)desiredValue); } +void *core_util_atomic_exchange_ptr(void *volatile *valuePtr, void *desiredValue) +{ + return (void *)core_util_atomic_exchange_u32((volatile uint32_t *)valuePtr, (uint32_t)desiredValue); +} + void *core_util_atomic_incr_ptr(void *volatile *valuePtr, ptrdiff_t delta) { return (void *)core_util_atomic_incr_u32((volatile uint32_t *)valuePtr, (uint32_t)delta); diff --git a/platform/mbed_critical.h b/platform/mbed_critical.h index e2545342413..5de8de85dbe 100644 --- a/platform/mbed_critical.h +++ b/platform/mbed_critical.h @@ -202,175 +202,45 @@ MBED_FORCEINLINE void core_util_atomic_flag_clear(volatile core_util_atomic_flag */ bool core_util_atomic_cas_u8(volatile uint8_t *ptr, uint8_t *expectedCurrentValue, uint8_t desiredValue); -/** - * Atomic compare and set. It compares the contents of a memory location to a - * given value and, only if they are the same, modifies the contents of that - * memory location to a given new value. This is done as a single atomic - * operation. The atomicity guarantees that the new value is calculated based on - * up-to-date information; if the value had been updated by another thread in - * the meantime, the write would fail due to a mismatched expectedCurrentValue. - * - * Refer to https://en.wikipedia.org/wiki/Compare-and-set [which may redirect - * you to the article on compare-and swap]. - * - * @param ptr The target memory location. - * @param[in,out] expectedCurrentValue A pointer to some location holding the - * expected current value of the data being set atomically. - * The computed 'desiredValue' should be a function of this current value. - * @note: This is an in-out parameter. In the - * failure case of atomic_cas (where the - * destination isn't set), the pointee of expectedCurrentValue is - * updated with the current value. - * @param[in] desiredValue The new value computed based on '*expectedCurrentValue'. - * - * @return true if the memory location was atomically - * updated with the desired value (after verifying - * that it contained the expectedCurrentValue), - * false otherwise. In the failure case, - * exepctedCurrentValue is updated with the new - * value of the target memory location. - * - * pseudocode: - * function cas(p : pointer to int, old : pointer to int, new : int) returns bool { - * if *p != *old { - * *old = *p - * return false - * } - * *p = new - * return true - * } - * - * @note: In the failure case (where the destination isn't set), the value - * pointed to by expectedCurrentValue is instead updated with the current value. - * This property helps writing concise code for the following incr: - * - * function incr(p : pointer to int, a : int) returns int { - * done = false - * value = *p // This fetch operation need not be atomic. - * while not done { - * done = atomic_cas(p, &value, value + a) // *value gets updated automatically until success - * } - * return value + a - * } - * - * @note: This corresponds to the C11 "atomic_compare_exchange_strong" - it - * always succeeds if the current value is expected, as per the pseudocode - * above; it will not spuriously fail as "atomic_compare_exchange_weak" may. - */ +/** \copydoc core_util_atomic_cas_u8 */ bool core_util_atomic_cas_u16(volatile uint16_t *ptr, uint16_t *expectedCurrentValue, uint16_t desiredValue); -/** - * Atomic compare and set. It compares the contents of a memory location to a - * given value and, only if they are the same, modifies the contents of that - * memory location to a given new value. This is done as a single atomic - * operation. The atomicity guarantees that the new value is calculated based on - * up-to-date information; if the value had been updated by another thread in - * the meantime, the write would fail due to a mismatched expectedCurrentValue. - * - * Refer to https://en.wikipedia.org/wiki/Compare-and-set [which may redirect - * you to the article on compare-and swap]. - * - * @param ptr The target memory location. - * @param[in,out] expectedCurrentValue A pointer to some location holding the - * expected current value of the data being set atomically. - * The computed 'desiredValue' should be a function of this current value. - * @note: This is an in-out parameter. In the - * failure case of atomic_cas (where the - * destination isn't set), the pointee of expectedCurrentValue is - * updated with the current value. - * @param[in] desiredValue The new value computed based on '*expectedCurrentValue'. - * - * @return true if the memory location was atomically - * updated with the desired value (after verifying - * that it contained the expectedCurrentValue), - * false otherwise. In the failure case, - * exepctedCurrentValue is updated with the new - * value of the target memory location. - * - * pseudocode: - * function cas(p : pointer to int, old : pointer to int, new : int) returns bool { - * if *p != *old { - * *old = *p - * return false - * } - * *p = new - * return true - * } - * - * @note: In the failure case (where the destination isn't set), the value - * pointed to by expectedCurrentValue is instead updated with the current value. - * This property helps writing concise code for the following incr: - * - * function incr(p : pointer to int, a : int) returns int { - * done = false - * value = *p // This fetch operation need not be atomic. - * while not done { - * done = atomic_cas(p, &value, value + a) // *value gets updated automatically until success - * } - * return value + a - * - * @note: This corresponds to the C11 "atomic_compare_exchange_strong" - it - * always succeeds if the current value is expected, as per the pseudocode - * above; it will not spuriously fail as "atomic_compare_exchange_weak" may. - * } - */ +/** \copydoc core_util_atomic_cas_u8 */ bool core_util_atomic_cas_u32(volatile uint32_t *ptr, uint32_t *expectedCurrentValue, uint32_t desiredValue); -/** - * Atomic compare and set. It compares the contents of a memory location to a - * given value and, only if they are the same, modifies the contents of that - * memory location to a given new value. This is done as a single atomic - * operation. The atomicity guarantees that the new value is calculated based on - * up-to-date information; if the value had been updated by another thread in - * the meantime, the write would fail due to a mismatched expectedCurrentValue. - * - * Refer to https://en.wikipedia.org/wiki/Compare-and-set [which may redirect - * you to the article on compare-and swap]. - * - * @param ptr The target memory location. - * @param[in,out] expectedCurrentValue A pointer to some location holding the - * expected current value of the data being set atomically. - * The computed 'desiredValue' should be a function of this current value. - * @note: This is an in-out parameter. In the - * failure case of atomic_cas (where the - * destination isn't set), the pointee of expectedCurrentValue is - * updated with the current value. - * @param[in] desiredValue The new value computed based on '*expectedCurrentValue'. - * - * @return true if the memory location was atomically - * updated with the desired value (after verifying - * that it contained the expectedCurrentValue), - * false otherwise. In the failure case, - * exepctedCurrentValue is updated with the new - * value of the target memory location. - * - * pseudocode: - * function cas(p : pointer to int, old : pointer to int, new : int) returns bool { - * if *p != *old { - * *old = *p - * return false - * } - * *p = new - * return true - * } - * - * @note: In the failure case (where the destination isn't set), the value - * pointed to by expectedCurrentValue is instead updated with the current value. - * This property helps writing concise code for the following incr: - * - * function incr(p : pointer to int, a : int) returns int { - * done = false - * value = *p // This fetch operation need not be atomic. - * while not done { - * done = atomic_cas(p, &value, value + a) // *value gets updated automatically until success - * } - * return value + a - * } - * - * @note: This corresponds to the C11 "atomic_compare_exchange_strong" - it - * always succeeds if the current value is expected, as per the pseudocode - * above; it will not spuriously fail as "atomic_compare_exchange_weak" may. - */ +/** \copydoc core_util_atomic_cas_u8 */ +bool core_util_atomic_cas_u64(volatile uint64_t *ptr, uint64_t *expectedCurrentValue, uint64_t desiredValue); + +/** \copydoc core_util_atomic_cas_u8 */ +MBED_FORCEINLINE int8_t core_util_atomic_cas_s8(volatile int8_t *ptr, int8_t *expectedCurrentValue, int8_t desiredValue) +{ + return (int8_t)core_util_atomic_cas_u8((volatile uint8_t *)ptr, (uint8_t *)expectedCurrentValue, (uint8_t)desiredValue); +} + +/** \copydoc core_util_atomic_cas_u8 */ +MBED_FORCEINLINE int16_t core_util_atomic_cas_s16(volatile int16_t *ptr, int16_t *expectedCurrentValue, int16_t desiredValue) +{ + return (int16_t)core_util_atomic_cas_u16((volatile uint16_t *)ptr, (uint16_t *)expectedCurrentValue, (uint16_t)desiredValue); +} +/** \copydoc core_util_atomic_cas_u8 */ +MBED_FORCEINLINE int32_t core_util_atomic_cas_s32(volatile int32_t *ptr, int32_t *expectedCurrentValue, int32_t desiredValue) +{ + return (int32_t)core_util_atomic_cas_u32((volatile uint32_t *)ptr, (uint32_t *)expectedCurrentValue, (uint32_t)desiredValue); +} + +/** \copydoc core_util_atomic_cas_u8 */ +MBED_FORCEINLINE int64_t core_util_atomic_cas_s64(volatile int64_t *ptr, int64_t *expectedCurrentValue, int64_t desiredValue) +{ + return (int64_t)core_util_atomic_cas_u64((volatile uint64_t *)ptr, (uint64_t *)expectedCurrentValue, (uint64_t)desiredValue); +} + +/** \copydoc core_util_atomic_cas_u8 */ +MBED_FORCEINLINE bool core_util_atomic_cas_bool(volatile bool *ptr, bool *expectedCurrentValue, bool desiredValue) +{ + return (bool)core_util_atomic_cas_u8((volatile uint8_t *)ptr, (uint8_t *)expectedCurrentValue, desiredValue); +} + +/** \copydoc core_util_atomic_cas_u8 */ bool core_util_atomic_cas_ptr(void *volatile *ptr, void **expectedCurrentValue, void *desiredValue); /** @@ -409,6 +279,71 @@ MBED_FORCEINLINE uint32_t core_util_atomic_load_u32(const volatile uint32_t *val return value; } +/** + * Atomic load. + * @param valuePtr Target memory location. + * @return The loaded value. + */ +uint64_t core_util_atomic_load_u64(const volatile uint64_t *valuePtr); + +/** + * Atomic load. + * @param valuePtr Target memory location. + * @return The loaded value. + */ +MBED_FORCEINLINE int8_t core_util_atomic_load_s8(const volatile int8_t *valuePtr) +{ + int8_t value = *valuePtr; + MBED_BARRIER(); + return value; +} + +/** + * Atomic load. + * @param valuePtr Target memory location. + * @return The loaded value. + */ +MBED_FORCEINLINE int16_t core_util_atomic_load_s16(const volatile int16_t *valuePtr) +{ + int16_t value = *valuePtr; + MBED_BARRIER(); + return value; +} + +/** + * Atomic load. + * @param valuePtr Target memory location. + * @return The loaded value. + */ +MBED_FORCEINLINE int32_t core_util_atomic_load_s32(const volatile int32_t *valuePtr) +{ + int32_t value = *valuePtr; + MBED_BARRIER(); + return value; +} + +/** + * Atomic load. + * @param valuePtr Target memory location. + * @return The loaded value. + */ +MBED_FORCEINLINE int64_t core_util_atomic_load_s64(const volatile int64_t *valuePtr) +{ + return (int64_t)core_util_atomic_load_u64((const volatile uint64_t *)valuePtr); +} + +/** + * Atomic load. + * @param valuePtr Target memory location. + * @return The loaded value. + */ +MBED_FORCEINLINE bool core_util_atomic_load_bool(const volatile bool *valuePtr) +{ + bool value = *valuePtr; + MBED_BARRIER(); + return value; +} + /** * Atomic load. * @param valuePtr Target memory location. @@ -457,6 +392,71 @@ MBED_FORCEINLINE void core_util_atomic_store_u32(volatile uint32_t *valuePtr, ui MBED_BARRIER(); } +/** + * Atomic store. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + */ +void core_util_atomic_store_u64(volatile uint64_t *valuePtr, uint64_t desiredValue); + +/** + * Atomic store. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + */ +MBED_FORCEINLINE void core_util_atomic_store_s8(volatile int8_t *valuePtr, int8_t desiredValue) +{ + MBED_BARRIER(); + *valuePtr = desiredValue; + MBED_BARRIER(); +} + +/** + * Atomic store. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + */ +MBED_FORCEINLINE void core_util_atomic_store_s16(volatile int16_t *valuePtr, int16_t desiredValue) +{ + MBED_BARRIER(); + *valuePtr = desiredValue; + MBED_BARRIER(); +} + +/** + * Atomic store. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + */ +MBED_FORCEINLINE void core_util_atomic_store_s32(volatile int32_t *valuePtr, int32_t desiredValue) +{ + MBED_BARRIER(); + *valuePtr = desiredValue; + MBED_BARRIER(); +} + +/** + * Atomic store. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + */ +MBED_FORCEINLINE void core_util_atomic_store_s64(volatile int64_t *valuePtr, int64_t desiredValue) +{ + core_util_atomic_store_u64((volatile uint64_t *)valuePtr, (uint64_t)desiredValue); +} + +/** + * Atomic store. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + */ +MBED_FORCEINLINE void core_util_atomic_store_bool(volatile bool *valuePtr, bool desiredValue) +{ + MBED_BARRIER(); + *valuePtr = desiredValue; + MBED_BARRIER(); +} + /** * Atomic store. * @param valuePtr Target memory location. @@ -469,6 +469,101 @@ MBED_FORCEINLINE void core_util_atomic_store_ptr(void *volatile *valuePtr, void MBED_BARRIER(); } +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +uint8_t core_util_atomic_exchange_u8(volatile uint8_t *valuePtr, uint8_t desiredValue); + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +uint16_t core_util_atomic_exchange_u16(volatile uint16_t *valuePtr, uint16_t desiredValue); + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +uint32_t core_util_atomic_exchange_u32(volatile uint32_t *valuePtr, uint32_t desiredValue); + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +uint64_t core_util_atomic_exchange_u64(volatile uint64_t *valuePtr, uint64_t desiredValue); + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +MBED_FORCEINLINE int8_t core_util_atomic_exchange_s8(volatile int8_t *valuePtr, int8_t desiredValue) +{ + return (int8_t)core_util_atomic_exchange_u8((volatile uint8_t *)valuePtr, (uint8_t)desiredValue); +} + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +MBED_FORCEINLINE int16_t core_util_atomic_exchange_s16(volatile int16_t *valuePtr, int16_t desiredValue) +{ + return (int16_t)core_util_atomic_exchange_u16((volatile uint16_t *)valuePtr, (uint16_t)desiredValue); +} + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +MBED_FORCEINLINE int32_t core_util_atomic_exchange_s32(volatile int32_t *valuePtr, int32_t desiredValue) +{ + return (int32_t)core_util_atomic_exchange_u32((volatile uint32_t *)valuePtr, (uint32_t)desiredValue); +} + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +MBED_FORCEINLINE int64_t core_util_atomic_exchange_s64(volatile int64_t *valuePtr, int64_t desiredValue) +{ + return (int64_t)core_util_atomic_exchange_u64((volatile uint64_t *)valuePtr, (uint64_t)desiredValue); +} + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +MBED_FORCEINLINE bool core_util_atomic_exchange_bool(volatile bool *valuePtr, bool desiredValue) +{ + return (bool)core_util_atomic_exchange_u8((volatile uint8_t *)valuePtr, desiredValue); +} + +/** + * Atomic exchange. + * @param valuePtr Target memory location. + * @param desiredValue The value to store. + * @return The previous value. + */ +void *core_util_atomic_exchange_ptr(void *volatile *valuePtr, void *desiredValue); + /** * Atomic increment. * @param valuePtr Target memory location being incremented. @@ -493,6 +588,58 @@ uint16_t core_util_atomic_incr_u16(volatile uint16_t *valuePtr, uint16_t delta); */ uint32_t core_util_atomic_incr_u32(volatile uint32_t *valuePtr, uint32_t delta); +/** + * Atomic increment. + * @param valuePtr Target memory location being incremented. + * @param delta The amount being incremented. + * @return The new incremented value. + */ +uint64_t core_util_atomic_incr_u64(volatile uint64_t *valuePtr, uint64_t delta); + +/** + * Atomic increment. + * @param valuePtr Target memory location being incremented. + * @param delta The amount being incremented. + * @return The new incremented value. + */ +MBED_FORCEINLINE int8_t core_util_atomic_incr_s8(volatile int8_t *valuePtr, int8_t delta) +{ + return (int8_t)core_util_atomic_incr_u8((volatile uint8_t *)valuePtr, (uint8_t)delta); +} + +/** + * Atomic increment. + * @param valuePtr Target memory location being incremented. + * @param delta The amount being incremented. + * @return The new incremented value. + */ +MBED_FORCEINLINE int16_t core_util_atomic_incr_s16(volatile int16_t *valuePtr, int16_t delta) +{ + return (int16_t)core_util_atomic_incr_u16((volatile uint16_t *)valuePtr, (uint16_t)delta); +} + +/** + * Atomic increment. + * @param valuePtr Target memory location being incremented. + * @param delta The amount being incremented. + * @return The new incremented value. + */ +MBED_FORCEINLINE int32_t core_util_atomic_incr_s32(volatile int32_t *valuePtr, int32_t delta) +{ + return (int32_t)core_util_atomic_incr_u32((volatile uint32_t *)valuePtr, (uint32_t)delta); +} + +/** + * Atomic increment. + * @param valuePtr Target memory location being incremented. + * @param delta The amount being incremented. + * @return The new incremented value. + */ +MBED_FORCEINLINE int64_t core_util_atomic_incr_s64(volatile int64_t *valuePtr, int64_t delta) +{ + return (int64_t)core_util_atomic_incr_u64((volatile uint64_t *)valuePtr, (uint64_t)delta); +} + /** * Atomic increment. * @param valuePtr Target memory location being incremented. @@ -528,6 +675,58 @@ uint16_t core_util_atomic_decr_u16(volatile uint16_t *valuePtr, uint16_t delta); */ uint32_t core_util_atomic_decr_u32(volatile uint32_t *valuePtr, uint32_t delta); +/** + * Atomic decrement. + * @param valuePtr Target memory location being decremented. + * @param delta The amount being decremented. + * @return The new decremented value. + */ +uint64_t core_util_atomic_decr_u64(volatile uint64_t *valuePtr, uint64_t delta); + +/** + * Atomic decrement. + * @param valuePtr Target memory location being decremented. + * @param delta The amount being decremented. + * @return The new decremented value. + */ +MBED_FORCEINLINE int8_t core_util_atomic_decr_s8(volatile int8_t *valuePtr, int8_t delta) +{ + return (int8_t)core_util_atomic_decr_u8((volatile uint8_t *)valuePtr, (uint8_t)delta); +} + +/** + * Atomic decrement. + * @param valuePtr Target memory location being decremented. + * @param delta The amount being decremented. + * @return The new decremented value. + */ +MBED_FORCEINLINE int16_t core_util_atomic_decr_s16(volatile int16_t *valuePtr, int16_t delta) +{ + return (int16_t)core_util_atomic_decr_u16((volatile uint16_t *)valuePtr, (uint16_t)delta); +} + +/** + * Atomic decrement. + * @param valuePtr Target memory location being decremented. + * @param delta The amount being decremented. + * @return The new decremented value. + */ +MBED_FORCEINLINE int32_t core_util_atomic_decr_s32(volatile int32_t *valuePtr, int32_t delta) +{ + return (int32_t)core_util_atomic_decr_u32((volatile uint32_t *)valuePtr, (uint32_t)delta); +} + +/** + * Atomic decrement. + * @param valuePtr Target memory location being decremented. + * @param delta The amount being decremented. + * @return The new decremented value. + */ +MBED_FORCEINLINE int64_t core_util_atomic_decr_s64(volatile int64_t *valuePtr, int64_t delta) +{ + return (int64_t)core_util_atomic_decr_u64((volatile uint64_t *)valuePtr, (uint64_t)delta); +} + /** * Atomic decrement. * @param valuePtr Target memory location being decremented. diff --git a/platform/mbed_error.c b/platform/mbed_error.c index 13f148f240e..b2533bfbc4e 100644 --- a/platform/mbed_error.c +++ b/platform/mbed_error.c @@ -50,15 +50,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 @@ -89,6 +88,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) diff --git a/platform/mbed_retarget.cpp b/platform/mbed_retarget.cpp index 2a23757b8bd..d2d39bbd7b7 100644 --- a/platform/mbed_retarget.cpp +++ b/platform/mbed_retarget.cpp @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + #include #include "platform/platform.h" #include "platform/FilePath.h" @@ -904,6 +905,9 @@ extern "C" long PREFIX(_flen)(FILEHANDLE fh) return size; } +// Do not compile this code for TFM secure target +#if !defined(COMPONENT_SPE) || !defined(TARGET_TFM) + extern "C" char Image$$RW_IRAM1$$ZI$$Limit[]; extern "C" MBED_WEAK __value_in_regs struct __initial_stackheap _mbed_user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) @@ -924,6 +928,8 @@ extern "C" __value_in_regs struct __initial_stackheap __user_setup_stackheap(uin return _mbed_user_setup_stackheap(R0, R1, R2, R3); } +#endif // !defined(COMPONENT_SPE) || !defined(TARGET_TFM) + #endif @@ -1203,9 +1209,9 @@ extern "C" WEAK void __cxa_pure_virtual(void) // Provide implementation of _sbrk (low-level dynamic memory allocation // routine) for GCC_ARM which compares new heap pointer with MSP instead of // SP. This make it compatible with RTX RTOS thread stacks. -#if defined(TOOLCHAIN_GCC_ARM) || defined(TOOLCHAIN_GCC_CR) +#if defined(TOOLCHAIN_GCC_ARM) -#if defined(TARGET_CORTEX_A) +#if defined(TARGET_CORTEX_A) || (defined(TARGET_TFM) && defined(COMPONENT_SPE)) extern "C" uint32_t __HeapLimit; #endif @@ -1234,7 +1240,7 @@ extern "C" WEAK caddr_t _sbrk(int incr) unsigned char *prev_heap = heap; unsigned char *new_heap = heap + incr; -#if defined(TARGET_CORTEX_A) +#if defined(TARGET_CORTEX_A) || (defined(TARGET_TFM) && defined(COMPONENT_SPE)) if (new_heap >= (unsigned char *)&__HeapLimit) { /* __HeapLimit is end of heap section */ #else if (new_heap >= (unsigned char *)__get_MSP()) { @@ -1255,7 +1261,7 @@ extern "C" WEAK caddr_t _sbrk(int incr) #endif #endif -#if defined(TOOLCHAIN_GCC_ARM) || defined(TOOLCHAIN_GCC_CR) +#if defined(TOOLCHAIN_GCC_ARM) extern "C" void _exit(int return_code) { #else @@ -1285,7 +1291,7 @@ extern "C" void exit(int return_code) while (1); } -#if !defined(TOOLCHAIN_GCC_ARM) && !defined(TOOLCHAIN_GCC_CR) +#if !defined(TOOLCHAIN_GCC_ARM) } //namespace std #endif @@ -1417,7 +1423,7 @@ extern "C" void __env_unlock(struct _reent *_r) #endif -#if defined (__GNUC__) || defined(__CC_ARM) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) +#if defined (__GNUC__) || defined (__ARMCC_VERSION) #define CXA_GUARD_INIT_DONE (1 << 0) #define CXA_GUARD_INIT_IN_PROGRESS (1 << 1) @@ -1426,38 +1432,41 @@ extern "C" void __env_unlock(struct _reent *_r) extern "C" int __cxa_guard_acquire(int *guard_object_p) { uint8_t *guard_object = (uint8_t *)guard_object_p; - if (CXA_GUARD_INIT_DONE == (*guard_object & CXA_GUARD_MASK)) { + if ((core_util_atomic_load_u8(guard_object) & CXA_GUARD_MASK) == CXA_GUARD_INIT_DONE) { return 0; } singleton_lock(); - if (CXA_GUARD_INIT_DONE == (*guard_object & CXA_GUARD_MASK)) { + uint8_t guard = *guard_object; + if ((guard & CXA_GUARD_MASK) == CXA_GUARD_INIT_DONE) { singleton_unlock(); return 0; } - MBED_ASSERT(0 == (*guard_object & CXA_GUARD_MASK)); - *guard_object = *guard_object | CXA_GUARD_INIT_IN_PROGRESS; + MBED_ASSERT((guard & CXA_GUARD_MASK) == 0); + core_util_atomic_store_u8(guard_object, guard | CXA_GUARD_INIT_IN_PROGRESS); return 1; } extern "C" void __cxa_guard_release(int *guard_object_p) { uint8_t *guard_object = (uint8_t *)guard_object_p; - MBED_ASSERT(CXA_GUARD_INIT_IN_PROGRESS == (*guard_object & CXA_GUARD_MASK)); - *guard_object = (*guard_object & ~CXA_GUARD_MASK) | CXA_GUARD_INIT_DONE; + uint8_t guard = *guard_object; + MBED_ASSERT((guard & CXA_GUARD_MASK) == CXA_GUARD_INIT_IN_PROGRESS); + core_util_atomic_store_u8(guard_object, (guard & ~CXA_GUARD_MASK) | CXA_GUARD_INIT_DONE); singleton_unlock(); } extern "C" void __cxa_guard_abort(int *guard_object_p) { uint8_t *guard_object = (uint8_t *)guard_object_p; - MBED_ASSERT(CXA_GUARD_INIT_IN_PROGRESS == (*guard_object & CXA_GUARD_MASK)); - *guard_object = *guard_object & ~CXA_GUARD_INIT_IN_PROGRESS; + uint8_t guard = *guard_object; + MBED_ASSERT((guard & CXA_GUARD_MASK) == CXA_GUARD_INIT_IN_PROGRESS); + core_util_atomic_store_u8(guard_object, guard & ~CXA_GUARD_INIT_IN_PROGRESS); singleton_unlock(); } #endif -#if defined(MBED_MEM_TRACING_ENABLED) && (defined(__CC_ARM) || defined(__ICCARM__) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))) +#if defined(MBED_MEM_TRACING_ENABLED) && (defined(__ARMCC_VERSION) || defined(__ICCARM__)) // If the memory tracing is enabled, the wrappers in mbed_alloc_wrappers.cpp // provide the implementation for these. Note: this needs to use the wrappers diff --git a/platform/mbed_sleep_manager.c b/platform/mbed_sleep_manager.c index c1d4c9b5103..c792c783def 100644 --- a/platform/mbed_sleep_manager.c +++ b/platform/mbed_sleep_manager.c @@ -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,9 +104,15 @@ 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]; } @@ -117,7 +131,7 @@ static void sleep_tracker_print_stats(void) continue; } - if (sleep_stats[i].identifier == NULL) { + if (sleep_stats[i].identifier[0] == '\0') { return; } diff --git a/platform/mbed_stats.c b/platform/mbed_stats.c index ffc464c6de2..c46f344b367 100644 --- a/platform/mbed_stats.c +++ b/platform/mbed_stats.c @@ -170,7 +170,7 @@ void mbed_stats_sys_get(mbed_stats_sys_t *stats) #if defined(__IAR_SYSTEMS_ICC__) stats->compiler_id = IAR; stats->compiler_version = __VER__; -#elif defined(__CC_ARM) +#elif defined(__ARMCC_VERSION) stats->compiler_id = ARM; stats->compiler_version = __ARMCC_VERSION; #elif defined(__GNUC__) diff --git a/platform/mbed_watchdog_mgr.cpp b/platform/mbed_watchdog_mgr.cpp new file mode 100644 index 00000000000..2a5de742625 --- /dev/null +++ b/platform/mbed_watchdog_mgr.cpp @@ -0,0 +1,113 @@ + +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 DEVICE_WATCHDOG + +#include "mbed_watchdog_mgr.h" + +static bool is_watchdog_started = false; //boolean to control watchdog start and stop +#define MS_TO_US(x) ((x) * 1000) //macro to convert millisecond to microsecond +static uint32_t elapsed_ms = (HW_WATCHDOG_TIMEOUT / 2); +MBED_STATIC_ASSERT((HW_WATCHDOG_TIMEOUT > 0), "Timeout must be greater than zero"); + +/** mbed watchdog manager creates watchdog class instance with zero timeout + * as mbed watchdog manager is not going to register(not going to call "start" method of Watchdog class) + * its only going to call process to verify all registered users/threads in alive state + * + */ +Watchdog watchdog(0, "Platform Watchdog"); + +/** Create singleton instance of LowPowerTicker for watchdog periodic call back of kick. + */ +static LowPowerTicker *get_ticker() +{ + static LowPowerTicker ticker; + return &ticker; +} + +/** Refreshes the watchdog timer. + * + * This function should be called periodically before the watchdog times out. + * Otherwise, the system is reset. + * + * If the watchdog timer is not currently running this function does nothing + */ +static void mbed_wdog_manager_kick() +{ + core_util_critical_section_enter(); + hal_watchdog_kick(); + watchdog.process(((elapsed_ms <= 0) ? 1 : elapsed_ms)); + core_util_critical_section_exit(); +} + +uint32_t mbed_wdog_manager_get_max_timeout() +{ + const watchdog_features_t features = hal_watchdog_get_platform_features(); + return features.max_timeout; +} + +bool mbed_wdog_manager_start() +{ + watchdog_status_t sts; + MBED_ASSERT(HW_WATCHDOG_TIMEOUT < mbed_wdog_manager_get_max_timeout()); + core_util_critical_section_enter(); + if (is_watchdog_started) { + core_util_critical_section_exit(); + return false; + } + watchdog_config_t config; + config.timeout_ms = HW_WATCHDOG_TIMEOUT; + sts = hal_watchdog_init(&config); + if (sts == WATCHDOG_STATUS_OK) { + is_watchdog_started = true; + } + core_util_critical_section_exit(); + if (is_watchdog_started){ + us_timestamp_t timeout = (MS_TO_US(((elapsed_ms <= 0) ? 1 : elapsed_ms))); + get_ticker()->attach_us(callback(&mbed_wdog_manager_kick), timeout); + } + return is_watchdog_started; +} + +bool mbed_wdog_manager_stop() +{ + watchdog_status_t sts; + bool msts = true; + core_util_critical_section_enter(); + if (is_watchdog_started) { + sts = hal_watchdog_stop(); + if (sts != WATCHDOG_STATUS_OK) { + msts = false; + } else { + get_ticker()->detach(); + is_watchdog_started = false; + } + + } else { + msts = false; + } + core_util_critical_section_exit(); + return msts; +} + +uint32_t mbed_wdog_manager_get_timeout() +{ + return hal_watchdog_get_reload_value(); +} + + +#endif // DEVICE_WATCHDOG diff --git a/platform/mbed_watchdog_mgr.h b/platform/mbed_watchdog_mgr.h new file mode 100644 index 00000000000..e42f4455b72 --- /dev/null +++ b/platform/mbed_watchdog_mgr.h @@ -0,0 +1,92 @@ +/* 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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_WATCHDOG_MGR_H +#define MBED_WATCHDOG_MGR_H + +#ifdef DEVICE_WATCHDOG + +#include "watchdog_api.h" +#include "mbed_error.h" +#include "mbed.h" +#include "platform/mbed_critical.h" +#include "LowPowerTicker.h" +#include "Watchdog.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \addtogroup platform */ +/** A system timer that will reset the system in the case of system failures or + * malfunctions. + * + * Example: + * @code + * + * mbed_wdog_manager_start(); + * + * while (true) { + * wait(0.3); + * + * } + * @endcode + * @ingroup platform + */ + +/** Start an independent watchdog timer + * + * + * @return status true if the watchdog timer was started + * successfully. assert if one of the input parameters is out of range for the current platform. + * false if watchdog timer was not started + */ +bool mbed_wdog_manager_start(); + +/** Stops the watchdog timer + * + * Calling this function will attempt to disable any currently running + * watchdog timers if supported by the current platform. + * + * @return Returns true if the watchdog timer was succesfully + * stopped, Returns false if the watchdog cannot be disabled + * on the current platform or if the timer was never started. + */ +bool mbed_wdog_manager_stop(); + + +/** Get the watchdog timer refresh value + * + * This function returns the refresh timeout of the watchdog timer. + * + * @return Reload value for the watchdog timer in milliseconds. + */ +uint32_t mbed_wdog_manager_get_timeout(); + + +/** Get the maximum refresh value for the current platform in milliseconds + * + * @return Maximum refresh value supported by the watchdog for the current + * platform in milliseconds + */ +uint32_t mbed_wdog_manager_get_max_timeout(); + +#ifdef __cplusplus +} +#endif +#endif // DEVICE_WATCHDOG +#endif // MBED_WATCHDOG_H diff --git a/requirements.txt b/requirements.txt index f6459351c04..dc534118a69 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ pyyaml==4.2b1 jsonschema==2.6.0 future==0.16.0 six==1.11.0 -mbed-cloud-sdk==2.0.1 +mbed-cloud-sdk==2.0.4 requests>=2.20,<2.21 idna>=2,<2.8 pyserial>=3,<=3.4 @@ -20,5 +20,5 @@ beautifulsoup4>=4,<=4.6.3 fuzzywuzzy>=0.11,<=0.17 pyelftools>=0.24,<=0.25 git+https://github.com/armmbed/manifest-tool.git@v1.4.6 -pyocd>=0.14,<0.15 -icetea>=1.0.2,<1.1 +icetea>=1.2.1,<1.3 +pycryptodome>=3.7.2,<=3.7.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/mbed_rtos_rtx.c b/rtos/TARGET_CORTEX/mbed_rtos_rtx.c index 87dba802d55..d36ceffa147 100644 --- a/rtos/TARGET_CORTEX/mbed_rtos_rtx.c +++ b/rtos/TARGET_CORTEX/mbed_rtos_rtx.c @@ -24,11 +24,13 @@ #include "mbed_critical.h" #include "mbed_boot.h" -#if defined(TARGET_PSA) +#if defined(TARGET_MBED_SPM) #include "spm_init.h" #include "spm_api.h" #endif - +#if defined(TARGET_TFM) && defined(COMPONENT_NSPE) +#include "TARGET_TFM/interface/include/tfm_ns_lock.h" +#endif #if defined(COMPONENT_NSPE) && defined(COMPONENT_SPM_MAILBOX) @@ -85,6 +87,8 @@ MBED_NORETURN void mbed_rtos_start() spm_ipc_mailbox_init(); #endif // defined(COMPONENT_SPM_MAILBOX) +#if defined(TARGET_MBED_SPM) + #if defined(COMPONENT_SPE) // At this point, the mailbox is already initialized spm_hal_start_nspe(); @@ -97,6 +101,11 @@ MBED_NORETURN void mbed_rtos_start() MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_INITIALIZATION_FAILED), "Dispatcher thread not created", &psa_spm_dispatcher_th_attr); } #endif // defined(COMPONENT_NSPE) && defined(COMPONENT_SPM_MAILBOX) +#endif // defined(TARGET_MBED_SPM) + +#if defined(TARGET_TFM) && defined(COMPONENT_NSPE) + tfm_ns_lock_init(); +#endif // defined(TARGET_TFM) && defined(COMPONENT_NSPE) singleton_mutex_id = osMutexNew(&singleton_mutex_attr); osThreadId_t result = osThreadNew((osThreadFunc_t)mbed_start, NULL, &_main_thread_attr); diff --git a/rtos/ThisThread.h b/rtos/ThisThread.h index 33a2036e0b9..d566fb5397d 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/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/analogin_api.c b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/analogin_api.c index 7b9ca99862d..3399138b0f9 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/analogin_api.c +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/analogin_api.c @@ -112,3 +112,7 @@ uint16_t analogin_read_u16(analogin_t *obj) return 0; } +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} 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 b8a68c0878d..8fb4e7a0752 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/i2c_api.c +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/i2c_api.c @@ -587,3 +587,23 @@ int i2c_byte_write(i2c_t *obj, int data) { return 0; } + +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_I2C_SCL; +} diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/serial_api.c b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/serial_api.c index c2bf2d31314..567fcd22ad7 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/serial_api.c +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/serial_api.c @@ -382,3 +382,34 @@ void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, Pi { } +const PinMap *serial_tx_pinmap() +{ + return PinMap_UART_TX; +} + +const PinMap *serial_rx_pinmap() +{ + return PinMap_UART_RX; +} + +const PinMap *serial_cts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_CTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_CTS; +} + +const PinMap *serial_rts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_RTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_RTS; +} diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/spi_api.c b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/spi_api.c index debe4605016..e63d395d06d 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/spi_api.c +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/spi_api.c @@ -331,3 +331,43 @@ int spi_busy(spi_t *obj) { return ssp_busy(obj); } + +const PinMap *spi_master_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_master_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_master_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_master_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + +const PinMap *spi_slave_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_slave_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_slave_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_slave_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/PeripheralNames.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/PeripheralNames.h deleted file mode 100644 index 87d311f19d9..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/PeripheralNames.h +++ /dev/null @@ -1,82 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" -#include "i2c_def.h" -#include "spi_def.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)CMSDK_UART0_BASE, - UART_1 = (int)CMSDK_UART1_BASE -} UARTName; - -typedef enum { - I2C_0 = (int)I2C0_BASE, - I2C_1 = (int)I2C1_BASE - -} I2CName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5 -} ADCName; - -typedef enum { - SPI_0 = (int)SPI0_BASE, - SPI_1 = (int)SPI1_BASE -} SPIName; - -typedef enum { - PWM_1 = 0, - PWM_2, - PWM_3, - PWM_4, - PWM_5, - PWM_6, - PWM_7, - PWM_8, - PWM_9, - PWM_10, - PWM_11 -} PWMName; - -#define STDIO_UART_TX UART_TX1 -#define STDIO_UART_RX UART_RX1 -#define STDIO_UART UART_1 - -#define MBED_UART0 UART_TX0, UART_RX0 -#define MBED_UART1 UART_TX1, UART_RX1 -#define MBED_UARTUSB UART_TX1, UART_RX1 - -//USB UART -#define USBTX UART_TX1 -#define USBRX UART_RX1 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/PinNames.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/PinNames.h deleted file mode 100644 index 00d006de615..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/PinNames.h +++ /dev/null @@ -1,161 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { -/* BEETLE Pin Names */ -/* GPIO0 */ - P0_0 = 0, - P0_1 = 1, - P0_2 = 2, - P0_3 = 3, - P0_4 = 4, - P0_5 = 5, - P0_6 = 6, - P0_7 = 7, - P0_8 = 8, - P0_9 = 9, - P0_10 = 10, - P0_11 = 11, - P0_12 = 12, - P0_13 = 13, - P0_14 = 14, - P0_15 = 15, - -/* GPIO1 */ - P1_0 = 16, - P1_1 = 17, - P1_2 = 18, - P1_3 = 19, - P1_4 = 20, - P1_5 = 21, - P1_6 = 22, - P1_7 = 23, - P1_8 = 24, - P1_9 = 25, - P1_10 = 26, - P1_11 = 27, - P1_12 = 28, - P1_13 = 29, - P1_14 = 30, - P1_15 = 31, - -/* Arduino Connector Namings */ - A0 = 600, - A1 = 601, - A2 = 602, - A3 = 603, - A4 = 604, - A5 = 605, - D0 = P0_0, - D1 = P0_1, - D2 = P0_2, - D3 = P0_3, - D4 = P0_4, - D5 = P0_5, - D6 = P0_6, - D7 = P0_7, - D8 = P0_8, - D9 = P0_9, - D10 = P0_10, - D11 = P0_11, - D12 = P0_12, - D13 = P0_13, - D14 = P0_14, - D15 = P0_15, - -/* TRACE Ports */ - TRACECLK = P0_2, - TRACED0 = P0_6, - TRACED1 = P0_7, - TRACED2 = P0_8, - TRACED3 = P0_9, - -/* Other BEETLE Pin Names */ - - //Shield SPI - SHIELD_SPI_SCK = 320, - SHIELD_SPI_MOSI = 321, - SHIELD_SPI_MISO = 322, - SHIELD_SPI_nCS = 323, - - //ADC SPI - ADC_SPI_MOSI = 650, - ADC_SPI_MISO = 651, - ADC_SPI_SCK = 652, - ADC_SPI_nCS = 653, - - //Uart - UART_TX0 = 400, - UART_RX0 = 401, - UART_TX1 = 402, - UART_RX1 = 403, - - //Shield I2C - SHIELD_SDA = 504, - SHIELD_SCL = 505, - - // Internal I2C for temperature and acceleromter sensor - SENSOR_SDA = 506, - SENSOR_SCL = 507, - - // Emulated LEDS - /* - * Beetle board is built to optimize power consumption therefore does not - * provide on-board LEDs. The configuration below is provided only for - * compatibility purposes with MBED test suite. - * The LEDs [1:4] are emulated and trapped in our GPIO driver. - * For more details on how to use a Led on an external PIN via GPIO - * configuration please refer to the connected community page below: - * https://community.arm.com/docs/DOC-11713 - */ - LED1 = 1001, - LED2 = 1002, - LED3 = 1003, - LED4 = 1004, - - // Not connected - NC = (int)0xFFFFFFFF, -} PinName; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - Repeater = 3, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/PortNames.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/PortNames.h deleted file mode 100644 index c7751a5559e..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/PortNames.h +++ /dev/null @@ -1,32 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif - diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/.gitattributes b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/.gitattributes deleted file mode 100644 index 52a7451dfcd..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -*.o binary -*.lib binary -*.a binary -*.ar binary \ No newline at end of file diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/LICENSE-permissive-binary-license-1.0.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/LICENSE-permissive-binary-license-1.0.txt deleted file mode 100644 index d648fd563a7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/LICENSE-permissive-binary-license-1.0.txt +++ /dev/null @@ -1,49 +0,0 @@ -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_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/LICENSE.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/LICENSE.txt deleted file mode 100644 index 232fb6c35c3..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/LICENSE.txt +++ /dev/null @@ -1,2 +0,0 @@ -The binary files (cordio.0.0.1.ar and cordio_platform.0.0.1.ar) in this directory are licensed under the -Permissive Binary License1.0 (PBL-1.0) as can be found in: LICENSE-permissive-binary-license-1.0.txt \ No newline at end of file diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/libcordio.0.0.2.ar b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/libcordio.0.0.2.ar deleted file mode 100644 index 0a4e82ed4b4..00000000000 Binary files a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/libcordio.0.0.2.ar and /dev/null differ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/libcordio_platform.0.0.2.ar b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/libcordio_platform.0.0.2.ar deleted file mode 100644 index 03c36fa0f4c..00000000000 Binary files a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_ARM_STD/libcordio_platform.0.0.2.ar and /dev/null differ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/.gitattributes b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/.gitattributes deleted file mode 100644 index 52a7451dfcd..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -*.o binary -*.lib binary -*.a binary -*.ar binary \ No newline at end of file diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/LICENSE-permissive-binary-license-1.0.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/LICENSE-permissive-binary-license-1.0.txt deleted file mode 100644 index d648fd563a7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/LICENSE-permissive-binary-license-1.0.txt +++ /dev/null @@ -1,49 +0,0 @@ -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_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/LICENSE.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/LICENSE.txt deleted file mode 100644 index 0fc5a8148a7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/LICENSE.txt +++ /dev/null @@ -1,2 +0,0 @@ -The binary files (libcordio.0.0.1.a and libcordio_platform.0.0.1.a) in this directory are licensed under the -Permissive Binary License1.0 (PBL-1.0) as can be found in: LICENSE-permissive-binary-license-1.0.txt \ No newline at end of file diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/libcordio.0.0.2.a b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/libcordio.0.0.2.a deleted file mode 100644 index 2e1c4928f7c..00000000000 Binary files a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/libcordio.0.0.2.a and /dev/null differ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/libcordio_platform.0.0.2.a b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/libcordio_platform.0.0.2.a deleted file mode 100644 index 7542059cbb4..00000000000 Binary files a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_GCC_ARM/libcordio_platform.0.0.2.a and /dev/null differ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/.gitattributes b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/.gitattributes deleted file mode 100644 index 52a7451dfcd..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -*.o binary -*.lib binary -*.a binary -*.ar binary \ No newline at end of file diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/LICENSE-permissive-binary-license-1.0.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/LICENSE-permissive-binary-license-1.0.txt deleted file mode 100644 index d648fd563a7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/LICENSE-permissive-binary-license-1.0.txt +++ /dev/null @@ -1,49 +0,0 @@ -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_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/LICENSE.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/LICENSE.txt deleted file mode 100644 index 0fc5a8148a7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/LICENSE.txt +++ /dev/null @@ -1,2 +0,0 @@ -The binary files (libcordio.0.0.1.a and libcordio_platform.0.0.1.a) in this directory are licensed under the -Permissive Binary License1.0 (PBL-1.0) as can be found in: LICENSE-permissive-binary-license-1.0.txt \ No newline at end of file diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/libcordio.0.0.2.a b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/libcordio.0.0.2.a deleted file mode 100644 index a44846dc805..00000000000 Binary files a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/libcordio.0.0.2.a and /dev/null differ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/libcordio_platform.0.0.2.a b/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/libcordio_platform.0.0.2.a deleted file mode 100644 index c7367ac01c9..00000000000 Binary files a/targets/TARGET_ARM_SSG/TARGET_BEETLE/TOOLCHAIN_IAR/libcordio_platform.0.0.2.a and /dev/null differ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/analogin_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/analogin_api.c deleted file mode 100644 index af20c9564e0..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/analogin_api.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ -#include "cmsis.h" -#include "mbed_assert.h" -#include "mbed_wait_api.h" -#include "analogin_api.h" -#include "gpio_api.h" -#include "spi_api.h" -#include "pinmap.h" - -#if DEVICE_ANALOGIN - -/* - * Channel Address for the next acquisition: - * XXAAAXXX XXXXXXXX - */ -#define ADC_SPI_ADDRESS 11 - -/* ADC Resolution */ -#define ADC_RESOLUTION 0xFFF - -/* ADC Voltage Divider */ -#define ADC_DIV 819.0 - -/* PinMap structure for ADC IN */ -static const PinMap PinMap_ADC[] = { - {A0, ADC0_0, 0}, - {A1, ADC0_1, 0}, - {A2, ADC0_2, 0}, - {A3, ADC0_3, 0}, - {A4, ADC0_4, 0}, - {A5, ADC0_5, 0}, - {NC, NC, 0} -}; - -/* ADC SPI Private Data */ -typedef struct { - /* ADC SPI */ - spi_t analogin_spi; - /* ADC SPI CS */ - gpio_t adc_spi_cs_gpio; - /* ADC SPI State */ - uint32_t analog_spi_inited; -} analogin_spi_t; -/* ADC SPI Device */ -static analogin_spi_t analogin_spi_dev; - -/* - * ADC SPI CS - */ -#define ADC_SPI_CS P1_2 - -/* - * Initialize the analogin peripheral - * Configures the pin used by analogin. - * obj: The analogin object to initialize - * pin: The analogin pin name - */ -void analogin_init(analogin_t *obj, PinName pin) -{ - /* Initialize ADC Pin */ - obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC); - /* Verify if pin is valid */ - MBED_ASSERT(obj->adc != (ADCName)NC); - - /* Initialize the ADC SPI */ - if(analogin_spi_dev.analog_spi_inited == 0){ - /* Initialize SPI for ADC */ - spi_init(&(analogin_spi_dev.analogin_spi), ADC_SPI_MOSI, - ADC_SPI_MISO, ADC_SPI_SCK, ADC_SPI_nCS); - spi_format(&(analogin_spi_dev.analogin_spi), 16, 3, 0); - /* Set SPI to MAX Freq */ - spi_frequency(&(analogin_spi_dev.analogin_spi), 0); - - /* Initialize CS GPIO */ - gpio_init_out(&(analogin_spi_dev.adc_spi_cs_gpio), ADC_SPI_CS); - - analogin_spi_dev.analog_spi_inited = 1; - } - - /* If pin is valid assign it to the ADC data structure */ - obj->pin = pin; - obj->pin_number = pin-600; - obj->address = (0x0000 | (pin-600)); - - /* Configure the pinout */ - pinmap_pinout(pin, PinMap_ADC); -} - -/* - * Read the value from analogin pin, represented as an unsigned 16bit value - * obj: The analogin object - * @return: An unsigned 16bit value representing the current input voltage - */ -uint16_t analogin_read_u16(analogin_t *obj) -{ - uint16_t result = 0; - - /* - * The ADC SPI hw is 8 bit format, 16 bit emulation is required - * in the SPI driver. - */ - /* CS = 1 */ - gpio_write(&(analogin_spi_dev.adc_spi_cs_gpio), 1); - /* Do the first read */ - (void)spi_master_write(&(analogin_spi_dev.analogin_spi), - ((obj->pin_number) << ADC_SPI_ADDRESS)); - /* CS = 0 */ - gpio_write(&(analogin_spi_dev.adc_spi_cs_gpio), 0); - /* Wait 50 us */ - wait_us(50); - /* CS = 1 */ - gpio_write(&(analogin_spi_dev.adc_spi_cs_gpio), 1); - /* The second read provides the result */ - result = spi_master_write(&(analogin_spi_dev.analogin_spi), - ((obj->pin_number) << ADC_SPI_ADDRESS)); - /* CS = 0 */ - gpio_write(&(analogin_spi_dev.adc_spi_cs_gpio), 0); - - return result; -} - -/* - * Read the input voltage, represented as a float in the range [0.0, 1.0] - * obj: The analogin object - * @return: A floating value representing the current input voltage - */ -float analogin_read(analogin_t *obj) -{ - uint16_t result = analogin_read_u16(obj); - return (float)((result & ADC_RESOLUTION) * 1.0f) / ADC_DIV; -} - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/LICENSE-permissive-binary-license-1.0.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/LICENSE-permissive-binary-license-1.0.txt deleted file mode 100644 index d648fd563a7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/LICENSE-permissive-binary-license-1.0.txt +++ /dev/null @@ -1,49 +0,0 @@ -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_ARM_SSG/TARGET_BEETLE/cordio/firmware/.gitattributes b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/.gitattributes deleted file mode 100644 index 52a7451dfcd..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -*.o binary -*.lib binary -*.a binary -*.ar binary \ No newline at end of file diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/CORDIO_RO_2.1.o b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/CORDIO_RO_2.1.o deleted file mode 100644 index 45f433de635..00000000000 Binary files a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/CORDIO_RO_2.1.o and /dev/null differ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/LICENSE-permissive-binary-license-1.0.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/LICENSE-permissive-binary-license-1.0.txt deleted file mode 100644 index d648fd563a7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/LICENSE-permissive-binary-license-1.0.txt +++ /dev/null @@ -1,49 +0,0 @@ -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_ARM_SSG/TARGET_BEETLE/cordio/firmware/LICENSE.txt b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/LICENSE.txt deleted file mode 100644 index d10317a1a52..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/LICENSE.txt +++ /dev/null @@ -1,2 +0,0 @@ -The binary files (CORDIO_RO_2.1.o and TRIM_2.1.o) in this directory are licensed under the -Permissive Binary License1.0 (PBL-1.0) as can be found in: LICENSE-permissive-binary-license-1.0.txt \ No newline at end of file diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/TRIM_2.1.o b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/TRIM_2.1.o deleted file mode 100644 index 642f7180cc9..00000000000 Binary files a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/firmware/TRIM_2.1.o and /dev/null differ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/board/board.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/board/board.h deleted file mode 100644 index dc5756e22fe..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/board/board.h +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file board.h - * - * \brief Board-specific include file for BT4 module board. - * - * Copyright (c) 2015-2016 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef BOARD_H -#define BOARD_H - - - -/*************************************************************************************************** -** DEVICE -***************************************************************************************************/ - -/* install defines and installs for device ARM_BEETLE_SOC */ -#define ARM_BEETLE_SOC (1U) - -/*************************************************************************************************** -** UART & CONSOLE -***************************************************************************************************/ -#include -extern const struct drv_uart Drv_UART0; -#define BOARD_HAS_UART0 - -#include -extern const struct drv_console Drv_Console0; - -#define BOARD_UART Drv_UART0 -#define BOARD_CONSOLE Drv_Console0 -#define BOARD_CONSOLE_NUM 0 -#define BOARD_CONSOLE_BAUD 9600u - -#define BOARD_HCIPASSTHRU_CONSOLE Drv_Console0 -#define BOARD_HCIPASSTHRU_NUM 0 -#define BOARD_HCIPASSTHRU_BAUD 9600u - -#if BOARD_CONSOLE_NUM == BOARD_HCIPASSTHRU_NUM -# if BOARD_CONSOLE_BAUD != BOARD_HCIPASSTHRU_BAUD -# error CONSOLE and HCIPASSTHRU use the same UART, but the bauds are configured different -# endif -#endif - -#define BOARD_TERMINAL_CONSOLE Drv_Console0 -#define BOARD_TERMINAL_NUM 0 -#define BOARD_TERMINAL_BAUD 9600u - -/*************************************************************************************************** -** GPIO -***************************************************************************************************/ -#define BOARD_GPIO_OUTPUT_QUANTITY 1u -#define BOARD_GPIO_OUTPUT_0 GPIO_GPIO3 -#define BOARD_GPIO_OUTPUTS {BOARD_GPIO_OUTPUT_0} -#define BOARD_GPIO_OUTPUTS_MASK (BOARD_GPIO_OUTPUT_0) - -/* gpio inputs */ -#define BOARD_HAS_WAKEUP - -/*************************************************************************************************** -** SPI -***************************************************************************************************/ -#ifndef ARM_BEETLE_SOC - -#define BOARD_SPIFLASH_MAIN_IMAGE_OFFSET 0u -#define BOARD_SPIFLASH_MAIN_IMAGE_LIMIT (BOARD_SPIFLASH_NVDATA_OFFSET - 1u) -#define BOARD_SPIFLASH_NVDATA_LEN (4u * 1024u) -#define BOARD_SPIFLASH_NVDATA_OFFSET (1020u * 1024u) -#define BOARD_SPIFLASH_NVDATA_LIMIT (BOARD_SPIFLASH_NVDATA_OFFSET + BOARD_SPIFLASH_NVDATA_LEN - 1u) - -#else -/* USING ON CHIP FLASH FROM UPPER UPPER BANK, LINKED THROUGH *.o and SCATTER */ -extern unsigned char _binary_ASIC_2_1_img_start; -extern unsigned char _binary_ASIC_2_1_img_end; -extern unsigned char _binary_ASIC_2_1_img_size; - -#define BOARD_HAS_FLASH_STORAGE - -#define FLASH_ELF_HDR_JMP_OFFSET (52U) -#define BOARD_FLASH_STORAGE_MAIN_IMAGE_OFFSET (0U) //jump over the ELF HEADER OF OBJECT -#define BOARD_FLASH_STORAGE_MAIN_IMAGE_LIMIT (((74U) * (1024U)) - 1u) //64K FLASH STORAGE BLOCK - -#define BOARD_FLASH_STORAGE_NVDATA_OFFSET (0U) -#define BOARD_FLASH_STORAGE_NVDATA_LEN ((4U) * (1024U)) //4K NVM BLOCK SIZE -#define BOARD_FLASH_STORAGE_NVDATA_LIMIT (BOARD_FLASH_STORAGE_NVDATA_OFFSET + BOARD_FLASH_STORAGE_NVDATA_LEN - 1u) - -#define BOARD_FLASH_STORAGE_DATA_LEN_MASK (0xFFFU); //Length mask of 4K - -#endif - - - -/*************************************************************************************************** -** LLCC -***************************************************************************************************/ - -#include -extern const struct drv_llcc Drv_LLCC; - -/*************************************************************************************************** -** IDs -***************************************************************************************************/ - -#define BOARD_MANUFACTURER "ARM, Ltd." -#define BOARD_NAME "BEETLE" -#define BOARD_NAME_SHORT "BT4" -#define BOARD_HW_REVISION "B" -#define BOARD_COMPANY_ID 0x01AFu - -#endif /* BOARD_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/board/main_board.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/board/main_board.h deleted file mode 100644 index 9570ad491b3..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/board/main_board.h +++ /dev/null @@ -1,358 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file main_board.h - * - * \brief Board services. - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef __MAIN_BOARD_H -#define __MAIN_BOARD_H - -/*************************************************************************************************** -** INCLUDES -***************************************************************************************************/ - -#include "chip.h" -#include "board.h" - -#include "wsf_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************************************************************************** -** TYPES -***************************************************************************************************/ - -/*-------------------------------------------------------------------------------------------------- -** enum main_board_mode -** -** DESCRIPTION: Mode of application on board, if detectable at run-time. ---------------------------------------------------------------------------------------------------*/ -enum main_board_mode { - MAIN_BOARD_MODE_DTM = 0, - MAIN_BOARD_MODE_BEACON = 1, - MAIN_BOARD_MODE_SENSOR = 2, - MAIN_BOARD_MODE_BEACON_NONCONNECTABLE = 3 -}; - -/*-------------------------------------------------------------------------------------------------- -** enum main_board_settings -** -** DESCRIPTION: Settings for board, stored in NV data. These values should not be changed once -** used. ---------------------------------------------------------------------------------------------------*/ -enum main_board_settings { - /* Major number (for beacon) [2 bytes] */ - MAIN_BOARD_SETTING_MAJOR = 0, - /* Minor number (for beacon) [2 bytes] */ - MAIN_BOARD_SETTING_MINOR = 1, - /* RSSI reference (for beacon) [2 bytes] */ - MAIN_BOARD_SETTING_RSSI_REFERENCE = 2, - /* HCI logging level [1 byte] */ - MAIN_BOARD_SETTING_HCI_LOGGING_LEVEL = 3, - /* Lock state (for UriBeacon) [1 byte] */ - MAIN_BOARD_SETTING_LOCK_STATE = 4, - /* URI data (for UriBeacon) [18 bytes] */ - MAIN_BOARD_SETTING_URI_DATA = 5, - /* URI flags (for UriBeacon) [1 byte] */ - MAIN_BOARD_SETTING_URI_FLAGS = 6, - /* Advertised tx power levels (for UriBeacon) [4 bytes] */ - MAIN_BOARD_SETTING_ADVERTISED_TX_POWER_LEVELS = 7, - /* Tx power mode (for UriBeacon) [1 byte] */ - MAIN_BOARD_SETTING_TX_POWER_MODE = 8, - /* Beacon period (for beacon) [2 bytes] */ - MAIN_BOARD_SETTING_BEACON_PERIOD = 9, - /* Lock [16 bytes] */ - MAIN_BOARD_SETTING_LOCK = 10, - /* PIN [3 bytes] */ - MAIN_BOARD_SETTING_PIN = 11, - /* Beacon type [1 byte] */ - MAIN_BOARD_SETTING_BEACON_TYPE = 12, -}; - -/*-------------------------------------------------------------------------------------------------- -** enum main_board_muxmode -** -** DESCRIPTION: Settings for MUX mode of MCU. ---------------------------------------------------------------------------------------------------*/ -enum main_board_muxmode { - MAIN_BOARD_MUXMODE_NORMAL = 0, - MAIN_BOARD_MUXMODE_DIGITAL_TEST = 1, -}; - -/*************************************************************************************************** -** FUNCTIONS -***************************************************************************************************/ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardInit() -** -** DESCRIPTION: Initialize board. ---------------------------------------------------------------------------------------------------*/ -void Main_BoardInit(void); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardI2cInit() -** -** DESCRIPTION: Initialize I2C devices on board. ---------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_I2C -void Main_BoardI2cInit(void); -#endif - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardGetMode() -** -** DESCRIPTION: Get board mode. -** -** RETURNS: Board mode. ---------------------------------------------------------------------------------------------------*/ -enum main_board_mode Main_BoardGetMode(void); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardNvGetSize() -** -** DESCRIPTION: Called to get size of NV memory. -** -** RETURNS: Size of NV memory -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_SPIFLASH -size_t Main_BoardNvGetSize(void); -#endif /* BOARD_HAS_SPIFLASH */ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardNvRead() -** -** DESCRIPTION: Called to read NV data. -** -** PARAMETERS: addr Address from which to read -** buf Pointer to buffer to receive data -** length Number of bytes to read -** -** RETURNS: Number of bytes read -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_SPIFLASH -size_t Main_BoardNvRead(size_t addr, uint8_t *buf, size_t length); -#endif /* BOARD_HAS_SPIFLASH */ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardNvWrite() -** -** DESCRIPTION: Called to write NV data. -** -** PARAMETERS: addr Address at which to write -** buf Pointer to buffer with data to write -** length Number of bytes to write -** -** RETURNS: Number of bytes written -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_SPIFLASH -size_t Main_BoardNvWrite(size_t addr, const uint8_t *buf, size_t length); -#endif /* BOARD_HAS_SPIFLASH */ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardNvErase() -** -** DESCRIPTION: Called to erase NV data. -** -** RETURNS: 0 or error (if not 0) -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_SPIFLASH -int32_t Main_BoardNvErase(void); -#endif /* BOARD_HAS_SPIFLASH */ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardSettingsInit() -** -** DESCRIPTION: Initialize settings stored in a host blob in the NV data. -** -** RETURNS: 0 or error (if not 0) -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_SPIFLASH -int32_t Main_BoardSettingsInit(void); -#endif /* BOARD_HAS_SPIFLASH */ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardSettingsClear() -** -** DESCRIPTION: Clear settings stored in a host blob in the NV data. -** -** RETURNS: 0 or error (if not 0) -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_SPIFLASH -int32_t Main_BoardSettingsClear(void); -#endif /* BOARD_HAS_SPIFLASH */ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardSettingRead() -** -** DESCRIPTION: Read a setting stored in a host blob in the NV data. -** -** PARAMETERS: id ID of the setting -** buf Pointer to buffer that will receive setting value -** length Length of the buffer; if setting is longer, only this many bytes will be -** stored -** -** RETURNS: length of the setting or error (if less than or equal to zero) -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_SPIFLASH -int32_t Main_BoardSettingRead(uint8_t id, uint8_t *buf, uint8_t length); -#endif /* BOARD_HAS_SPIFLASH */ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardSettingWrite() -** -** DESCRIPTION: Write a setting stored in a host blob in the NV data. -** -** PARAMETERS: id ID of the setting -** buf Pointer to buffer with setting value -** length Length of the buffer; if setting is longer, only this many bytes will be -** read -** -** RETURNS: length of the setting or error (if less than or equal to zero) -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_SPIFLASH -int32_t Main_BoardSettingWrite(uint8_t id, const uint8_t *buf, uint8_t length); -#endif /* BOARD_HAS_SPIFLASH */ - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardSetPmuFeature() -** -** DESCRIPTION: Set PMU feature of MCU. -** -** PARAMETERS: req Requested feature(s). -**------------------------------------------------------------------------------------------------*/ -void Main_BoardSetPmuFeature(uint8_t req); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardGetPmuFeature() -** -** DESCRIPTION: Get PMU feature of MCU. -** -** RETURNS: Requested feature(s). -**------------------------------------------------------------------------------------------------*/ -uint8_t Main_BoardGetPmuFeature(void); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardSetMuxMode() -** -** DESCRIPTION: Set MUX mode of MCU. -** -** PARAMETERS: mode Mode to set -**------------------------------------------------------------------------------------------------*/ -void Main_BoardSetMuxMode(uint8_t mode); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardWakeLockInc() -** -** DESCRIPTION: Increment counter to keep MCU from entering deep sleep. -**------------------------------------------------------------------------------------------------*/ -void Main_BoardWakeLockInc(void); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardWakeLockDec() -** -** DESCRIPTION: Decrement counter to allow MCU to enter deep sleep. -**------------------------------------------------------------------------------------------------*/ -void Main_BoardWakeLockDec(void); - -/*-------------------------------------------------------------------------------------------------- -** Main_Board32kTimerSleep() -** -** DESCRIPTION: Deep sleep for a certain number of ticks of the 32k timer. -** -** PARAMETERS: ticks Number of ticks to sleep; 0 to sleep forever -** deep TRUE if sleep should be deep sleep -**------------------------------------------------------------------------------------------------*/ -void Main_Board32kTimerSleep(uint32_t ticks, bool_t deep); - -/*-------------------------------------------------------------------------------------------------- -** Main_Board32kTimerRead() -** -** DESCRIPTION: Read the 32k timer. -** -** Returns: The timer value -**------------------------------------------------------------------------------------------------*/ -uint32_t Main_Board32kTimerRead(void); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardSetWakeupCallback() -** -** DESCRIPTION: Set callback for wakeup interrupt. -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_WAKEUP -void Main_BoardSetWakeupCback(void (*wakeupCback)(void)); -#endif - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardWatchdogTimeout() -** -** DESCRIPTION: Set watchdog to expire in certain number of milliseconds, after which the processor -** will reset. -** -** PARAMETERS: to_ms Milliseconds before timeout; 0 to timeout immediately -**------------------------------------------------------------------------------------------------*/ -void Main_BoardWatchdogTimeout(uint16_t to_ms); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardWatchdogCancel() -** -** DESCRIPTION: Cancel watchdog timeout, so that the processor will not reset if it expires. -**------------------------------------------------------------------------------------------------*/ -void Main_BoardWatchdogCancel(void); - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardGpioSet() -** -** DESCRIPTION: Set GPIO output. -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_GPIO_OUTPUTS -void Main_BoardGpioSet(uint8_t num); -#endif - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardGpioClr() -** -** DESCRIPTION: Clear GPIO output. -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_GPIO_OUTPUTS -void Main_BoardGpioClr(uint8_t num); -#endif - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardGpioToggle() -** -** DESCRIPTION: Toggle GPIO output. -**------------------------------------------------------------------------------------------------*/ -#ifdef BOARD_HAS_GPIO_OUTPUTS -void Main_BoardGpioToggle(uint8_t num); -#endif - -/*-------------------------------------------------------------------------------------------------- -** Main_BoardDelayUsec() -** -** DESCRIPTION: Delay for a certain time, in microseconds. -** -** PARAMETERS: delay_us Microseconds to delay. -**------------------------------------------------------------------------------------------------*/ -void Main_BoardDelayUsec(uint32_t delay_us); - -#ifdef __cplusplus -} -#endif - -#endif /* __MAIN_BOARD_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/chip/chip.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/chip/chip.h deleted file mode 100644 index a1d4aaf2226..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/chip/chip.h +++ /dev/null @@ -1,35 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file chip.h - * - * \brief Include file for SMD TC2. - * - * Copyright (c) 2015-2016 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef CHIP_H -#define CHIP_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#include "chip_hw.h" - -#ifdef __cplusplus -} -#endif - -#endif /* CHIP_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/chip/chip_hw.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/chip/chip_hw.h deleted file mode 100644 index 278f7b88eef..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/beetle/chip/chip_hw.h +++ /dev/null @@ -1,38 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file chip_hw.h - * - * \brief Low-level chip defines for SMD TC2. - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef CHIP_HW_H -#define CHIP_HW_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define MCU_SRAM_BASE (0x20000000) -#define MCU_SRAM_SIZE (128*1024) -#define MCU_STACK_SIZE (1024) -#define MCU_MIN_HEAP (1024) -#define MCU_ROM_BASE (0x00000000) -#define MCU_ROM_SIZE (8*1024) - -#ifdef __cplusplus -} -#endif - -#endif /* CHIP_HW_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/ble_init.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/ble_init.h deleted file mode 100644 index 35ef4e38009..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/ble_init.h +++ /dev/null @@ -1,42 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file ble_init.c - * - * \brief BLE initialization. - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef BLE_INIT_H -#define BLE_INIT_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************************************************************************/ -/*! - * \fn BleInitStart - * - * \brief Set BLE initialization. - * - * \return None. - */ -/*************************************************************************************************/ -void BleInitStart(void); - -#ifdef __cplusplus -} -#endif - -#endif /* BLE_INIT_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/cordio_bt4_defs.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/cordio_bt4_defs.h deleted file mode 100644 index 67f5d043aa9..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/cordio_bt4_defs.h +++ /dev/null @@ -1,79 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file cordio_tc2_defs.h - * - * \brief Cordio TC2 defines. - * - * $Date: 2015-09-28 16:07:14 -0400 (Mon, 28 Sep 2015) $ - * $Revision: 4037 $ - * - * Copyright (c) 2013 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef CORDIO_TC2_DEFS_H -#define CORDIO_TC2_DEFS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! \brief Expected cookie value for TC2 images. */ -#define CORDIO_TC2_HEADER_COOKIE 0x30444D53 - -/*! \brief Length of header. */ -#define CORDIO_TC2_HEADER_LEN 24 - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! \brief Header for images sought by ROM bootloader. */ -typedef struct -{ - uint32_t cookie; /*!< Cookie value. */ - uint8_t hdrLen; /*!< Header length, in octets (must be 24). */ - uint8_t type; /*!< Type of image. */ - uint8_t revMajor; /*!< Major image revision. */ - uint8_t revMinor; /*!< Minor image revision. */ - uint32_t dataLen; /*!< Length of data, with image flags. */ - uint32_t offset; /*!< Offset to which image should be copied. */ - uint32_t entry; /*!< Entry point. */ - uint32_t crc; /*!< Checksum over header and data. */ -} CordioTc2ImgHdr_t; - -/*! \brief Image types. */ -enum -{ - CORDIO_TC2_IMG_TYPE_HOST_FW = 0, /*!< Host firmware. */ - CORDIO_TC2_IMG_TYPE_BT4_FW = 1, /*!< BT4 firmware. */ - CORDIO_TC2_IMG_TYPE_BT4_PATCH = 2, /*!< BT4 patch. */ - CORDIO_TC2_IMG_TYPE_BT4_TRIM = 3, /*!< BT4 trim. */ - CORDIO_TC2_IMG_TYPE_HOST_CFG = 4 /*!< Host configuration. */ -}; - -/*! \brief Data length bits and fields. */ -enum -{ - CORDIO_TC2_DATA_LEN_MASK = 0x00FFFFFF, /*!< Data length mask. */ - CORDIO_TC2_DATA_LEN_FLAG_ENCRYPTED = (1 << 30) /*!< Data encrypted flag. */ -}; - -#ifdef __cplusplus -} -#endif - -#endif /* CORDIO_TC2_DEFS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/cordio_sdk_version.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/cordio_sdk_version.h deleted file mode 100644 index 7ebc8c9caf4..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/cordio_sdk_version.h +++ /dev/null @@ -1,43 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file cordio_sdk_version.h - * - * \brief Cordio SDK version. - * - * $Date: 2015-10-22 18:45:26 -0400 (Thu, 22 Oct 2015) $ - * $Revision: 4273 $ - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef CORDIO_SDK_VERSION_H -#define CORDIO_SDK_VERSION_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*! \brief Cordio SDK version string. */ -#define CORDIO_SDK_VERSION "20160509-r7043" - -/*! \brief Cordio SDK major version. */ -#define CORDIO_SDK_VERSION_MAJOR 1 - -/*! \brief Cordio SDK minor version. */ -#define CORDIO_SDK_VERSION_MINOR 1.4 - -#ifdef __cplusplus -} -#endif - -#endif /* CORDIO_SDK_VERSION_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_console.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_console.h deleted file mode 100644 index 4312873cda2..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_console.h +++ /dev/null @@ -1,186 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file drv_console.h - * - * \brief Upper-layer UART driver. - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef __DRV_CONSOLE_H -#define __DRV_CONSOLE_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************************************************************************** -** INCLUDES -***************************************************************************************************/ - -#include "chip.h" -#include "board.h" - -/*************************************************************************************************** -** DEFINES -***************************************************************************************************/ - -/*-------------------------------------------------------------------------------------------------- -** ENABLE/DISABLE, ON/OFF DEFINES -** -** DESCRIPTION: For clarity in enable parameters. ---------------------------------------------------------------------------------------------------*/ - -#ifndef DRV_ENABLE -#define DRV_ENABLE 1 -#endif - -#ifndef DRV_DISABLE -#define DRV_DISABLE 0 -#endif - -#ifndef DRV_ON -#define DRV_ON 1 -#endif - -#ifndef DRV_OFF -#define DRV_OFF 0 -#endif - -/*-------------------------------------------------------------------------------------------------- -** TX/RX DEFINES -** -** DESCRIPTION: For tx/rx argument of driver functions. ---------------------------------------------------------------------------------------------------*/ - -#define DRV_CONSOLE_TX (1u << 0) -#define DRV_CONSOLE_RX (1u << 1) - -/*-------------------------------------------------------------------------------------------------- -** DRV_CONSOLE_BUF_LEN -** -** DESCRIPTION: The maximum length of printed strings. -**------------------------------------------------------------------------------------------------*/ -#define DRV_CONSOLE_BUF_LEN 128u - -/*************************************************************************************************** -** TYPES -***************************************************************************************************/ - -/*---------------------------------------------------------------------------------------------- -** DRV_CONSOLE_RX_CALLBACK_t() -** -** DESCRIPTION: Callback for received byte. -** -** PARAMETERS: c Received byte -**--------------------------------------------------------------------------------------------*/ - -typedef void (*DRV_CONSOLE_RX_CALLBACK_t)(uint8_t c); - -/*---------------------------------------------------------------------------------------------- -** DRV_CONSOLE_TX_COMPLETE_CALLBACK_t() -** -** DESCRIPTION: Callback for transmission completion. -** -** PARAMETERS: buf Pointer to buffer that was transmitted -**--------------------------------------------------------------------------------------------*/ - -typedef void (*DRV_CONSOLE_TX_COMPLETE_CALLBACK_t)(const uint8_t *buf); - -/*-------------------------------------------------------------------------------------------------- -** struct drv_console -** -** DESCRIPTION: Access structure of driver. ---------------------------------------------------------------------------------------------------*/ - -struct drv_console { - /*---------------------------------------------------------------------------------------------- - ** Initialize() - ** - ** DESCRIPTION: Initialize console. - ** - ** PARAMETERS: baud Baud rate - ** rx_tx Indicates allowed modes of driver (DRV_CONSOLE_RX &/| DRV_CONSOLE_TX). - **--------------------------------------------------------------------------------------------*/ - void (*Initialize)(uint32_t baud, uint32_t rx_tx); - - /*---------------------------------------------------------------------------------------------- - ** Receive() - ** - ** DESCRIPTION: Receive data. - ** - ** PARAMETERS: buf Pointer to buffer that will receive data - ** len Number of data bytes to data - ** - ** RETURNS: Number of bytes received - **--------------------------------------------------------------------------------------------*/ - int32_t (*Receive)(uint8_t *buf, uint32_t len); - - /*---------------------------------------------------------------------------------------------- - ** ReceiveAsyncStart() - ** - ** DESCRIPTION: Start receiving data asynchronously. - ** - ** PARAMETERS: cb Callback for receive events - ** - ** RETURNS: 0 or error (if not zero) - **--------------------------------------------------------------------------------------------*/ - int32_t (*ReceiveAsyncStart)(DRV_UART_RX_CALLBACK_t cb); - - /*---------------------------------------------------------------------------------------------- - ** ReceiveAsyncStart() - ** - ** DESCRIPTION: Stop receiving data asynchronously. - **--------------------------------------------------------------------------------------------*/ - void (*ReceiveAsyncStop)(void); - - /*---------------------------------------------------------------------------------------------- - ** Transmit() - ** - ** DESCRIPTION: Transmit buffer synchronously, waiting for any active transmission to finish. - ** - ** PARAMETERS: buf Pointer to buffer of data to transmit - ** len Number of data bytes to transmit - ** - ** RETURNS: Number of bytes transmitted - **--------------------------------------------------------------------------------------------*/ - int32_t (*Transmit)(const uint8_t *buf, uint32_t len); - - /*---------------------------------------------------------------------------------------------- - ** TransmitAsync() - ** - ** DESCRIPTION: Transmit buffer asynchronously, waiting for any active transmission to finish. - ** - ** PARAMETERS: buf Pointer to buffer of data to transmit - ** len Number of data bytes to transmit - ** cb Pointer to completion callback - ** - ** RETURNS: 0 or error (if not zero) - **--------------------------------------------------------------------------------------------*/ - int32_t (*TransmitAsync)(const uint8_t *buf, uint32_t len, DRV_CONSOLE_TX_COMPLETE_CALLBACK_t cb); - - /*---------------------------------------------------------------------------------------------- - ** GetUART() - ** - ** DESCRIPTION: Get UART associated with this console. - ** - ** RETURNS: Pointer to UART - **--------------------------------------------------------------------------------------------*/ - const struct drv_uart *(*GetUART)(void); -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_CONSOLE_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_llcc.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_llcc.h deleted file mode 100644 index 5f6a5416054..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_llcc.h +++ /dev/null @@ -1,132 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file drv_llcc.h - * - * \brief LLCC driver. - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef __DRV_LLCC_H -#define __DRV_LLCC_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************************************************************************** -** INCLUDES -***************************************************************************************************/ - -#include "chip.h" -#include "board.h" - -/*************************************************************************************************** -** CONSTANTS -***************************************************************************************************/ - -/*-------------------------------------------------------------------------------------------------- -** ENABLE/DISABLE, ON/OFF DEFINES -** -** DESCRIPTION: For clarity in enable parameters. ---------------------------------------------------------------------------------------------------*/ - -#ifndef DRV_ENABLE -#define DRV_ENABLE 1 -#endif - -#ifndef DRV_DISABLE -#define DRV_DISABLE 0 -#endif - -#ifndef DRV_ON -#define DRV_ON 1 -#endif - -#ifndef DRV_OFF -#define DRV_OFF 0 -#endif - -/*************************************************************************************************** -** TYPES -***************************************************************************************************/ - -typedef void (*DRV_LLCC_WD_CALLBACK_t) (uint8_t type, uint8_t *pData, void *pContext, int32_t error); -typedef void (*DRV_LLCC_RD_CALLBACK_t) (uint8_t type, uint8_t *pData, uint8_t align, uint16_t len); -typedef void * (*DRV_LLCC_ALLOC_CALLBACK_t) (uint16_t len); - -/*-------------------------------------------------------------------------------------------------- -** struct drv_llcc -** -** DESCRIPTION: Access structure of driver. ---------------------------------------------------------------------------------------------------*/ - -struct drv_llcc { - /*---------------------------------------------------------------------------------------------- - ** Initialize() - ** - ** DESCRIPTION: Initialize ESS IPCC interface - ** RETURNS: 0 or error (if not 0) - ---------------------------------------------------------------------------------------------*/ - int32_t (*Initialize)(void); - - /*---------------------------------------------------------------------------------------------- - ** Reset() - ** - ** DESCRIPTION: Take the ESS IPCC into or out of reset. - ** PARAMETERS: on If not 0, take the ESS IPCC out of reset - ---------------------------------------------------------------------------------------------*/ - void (*Reset)(int32_t on); - - /*---------------------------------------------------------------------------------------------- - ** SetTxHandler() - ** - ** DESCRIPTION: Set handler for transmit events - ** PARAMETERS: cb Pointer to callback; if NULL, the default handler is set - ---------------------------------------------------------------------------------------------*/ - void (*SetTxHandler)(DRV_LLCC_WD_CALLBACK_t cb); - - /*---------------------------------------------------------------------------------------------- - ** SetRxHandler() - ** - ** DESCRIPTION: Set handler for receive events - ** PARAMETERS: cb Pointer to callback; if NULL, the default handler is set - ---------------------------------------------------------------------------------------------*/ - void (*SetRxHandler)(DRV_LLCC_RD_CALLBACK_t cb); - - /*---------------------------------------------------------------------------------------------- - ** SetAllocHandler() - ** - ** DESCRIPTION: Set handler for allocate requests - ** PARAMETERS: cb Pointer to callback; if NULL, the default handler is set - ---------------------------------------------------------------------------------------------*/ - void (*SetAllocHandler)(DRV_LLCC_ALLOC_CALLBACK_t cb); - - /*---------------------------------------------------------------------------------------------- - ** Write() - ** - ** DESCRIPTION: Write to write channel - ** PARAMETERS: cmd Command to send - ** data Pointer to buffer with data to send - ** num Number of bytes to write - ** context Context associated with this write - ** RETURNS: Number of bytes written or error (if less than 0) - ---------------------------------------------------------------------------------------------*/ - int32_t (*Write)(uint32_t cmd, const uint8_t *data, uint16_t num, void *context); -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_LLCC_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_uart.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_uart.h deleted file mode 100644 index cbec98b8974..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/driver/drv_uart.h +++ /dev/null @@ -1,186 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file drv_uart.h - * - * \brief UART driver. - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef __DRV_UART_H -#define __DRV_UART_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************************************************************************** -** INCLUDES -***************************************************************************************************/ - -#include "chip.h" -#include "board.h" - -/*************************************************************************************************** -** DEFINES -***************************************************************************************************/ - -/*-------------------------------------------------------------------------------------------------- -** ENABLE/DISABLE, ON/OFF DEFINES -** -** DESCRIPTION: For clarity in enable parameters. ---------------------------------------------------------------------------------------------------*/ - -#ifndef DRV_ENABLE -#define DRV_ENABLE 1 -#endif - -#ifndef DRV_DISABLE -#define DRV_DISABLE 0 -#endif - -#ifndef DRV_ON -#define DRV_ON 1 -#endif - -#ifndef DRV_OFF -#define DRV_OFF 0 -#endif - -/*-------------------------------------------------------------------------------------------------- -** TX/RX DEFINES -** -** DESCRIPTION: For tx/rx argument of driver functions. ---------------------------------------------------------------------------------------------------*/ - -#define DRV_UART_TX (1u << 0) -#define DRV_UART_RX (1u << 1) - -/*************************************************************************************************** -** TYPES -***************************************************************************************************/ - -/*-------------------------------------------------------------------------------------------------- -** DRV_UART_RX_CALLBACK_t() -** -** DESCRIPTION: Callback for received byte. -** -** PARAMETERS: c Received byte -**------------------------------------------------------------------------------------------------*/ - -typedef void (*DRV_UART_RX_CALLBACK_t)(uint8_t c); - -/*-------------------------------------------------------------------------------------------------- -** DRV_UART_TX_COMPLETE_t() -** -** DESCRIPTION: Callback for transmit interrupt. -**------------------------------------------------------------------------------------------------*/ - -typedef void (*DRV_UART_TX_CALLBACK_t)(void); - - -/*-------------------------------------------------------------------------------------------------- -** DRV_UART_BUF_LEN -** -** DESCRIPTION: The maximum length of printed strings. -**------------------------------------------------------------------------------------------------*/ -#define DRV_UART_BUF_LEN 128u - -/*-------------------------------------------------------------------------------------------------- -** struct drv_console -** -** DESCRIPTION: Access structure of driver. ---------------------------------------------------------------------------------------------------*/ -struct drv_uart { - /*---------------------------------------------------------------------------------------------- - ** Initialize() - ** - ** DESCRIPTION: Initialize UART. - ** - ** PARAMETERS: baud Baud rate - ** rx_tx Indicates allowed modes of driver (DRV_UART_RX &/| DRV_UART_TX). - **--------------------------------------------------------------------------------------------*/ - void (*Initialize)(uint32_t baud, uint32_t rx_tx); - - /*---------------------------------------------------------------------------------------------- - ** Sleep() - ** - ** DESCRIPTION: Allow UART settings to be saved before processor enters deep sleep. - **--------------------------------------------------------------------------------------------*/ - void (*Sleep)(void); - - /*---------------------------------------------------------------------------------------------- - ** Wake() - ** - ** DESCRIPTION: Allow UART settings to be restored after processor exits deep sleep. - **--------------------------------------------------------------------------------------------*/ - void (*Wake)(void); - - /*---------------------------------------------------------------------------------------------- - ** Receive() - ** - ** DESCRIPTION: Receive data. - ** - ** PARAMETERS: buf Pointer to buffer that will receive data - ** len Number of data bytes to data - ** - ** RETURNS: Number of bytes receuved - **--------------------------------------------------------------------------------------------*/ - int32_t (*Receive)(uint8_t *buf, uint32_t len); - - /*---------------------------------------------------------------------------------------------- - ** Transmit() - ** - ** DESCRIPTION: Transmit data. - ** - ** PARAMETERS: buf Pointer to buffer of data to transmit - ** len Number of data bytes to transmit - ** - ** RETURNS: Number of bytes transmitted - **--------------------------------------------------------------------------------------------*/ - int32_t (*Transmit)(const uint8_t *buf, uint32_t len); - - /*---------------------------------------------------------------------------------------------- - ** SetReceiveHandler() - ** - ** DESCRIPTION: Set receive handler. - ** - ** PARAMETERS: cb Pointer to callbak - **--------------------------------------------------------------------------------------------*/ - void (*SetReceiveHandler)(DRV_UART_RX_CALLBACK_t cb); - - /*---------------------------------------------------------------------------------------------- - ** SetTransmitHandler() - ** - ** DESCRIPTION: Set transmit handler. - ** - ** PARAMETERS: cb Pointer to callbak - **--------------------------------------------------------------------------------------------*/ - void (*SetTransmitHandler)(DRV_UART_TX_CALLBACK_t cb); - - /*---------------------------------------------------------------------------------------------- - ** EnableInterrupt() - ** - ** DESCRIPTION: Enable or disable an interrupt. - ** - ** PARAMETERS: rx_tx Select between receive (DRV_UART_RX) or transmit (DRV_UART_TX) interrupt. - ** enable Indicates whether interrupt should be enable (not 0) or disabled (0). - **--------------------------------------------------------------------------------------------*/ - void (*EnableInterrupt)(uint32_t rx_tx, int32_t enable); -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_UART_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/dual_chip/hci_core_ps.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/dual_chip/hci_core_ps.h deleted file mode 100644 index 4880c89ef42..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/dual_chip/hci_core_ps.h +++ /dev/null @@ -1,42 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hci_core_ps.h - * - * \brief HCI core platform-specific interfaces for dual-chip. - * - * $Date: 2015-06-12 04:19:18 -0700 (Fri, 12 Jun 2015) $ - * $Revision: 3061 $ - * - * Copyright (c) 2013 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef HCI_CORE_PS_H -#define HCI_CORE_PS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -void hciCoreResetSequence(uint8_t *pMsg); -void hciCoreNumCmplPkts(uint8_t *pMsg); -void hciCoreRecv(uint8_t msgType, uint8_t *pCoreRecvMsg); -uint8_t hciCoreVsCmdCmplRcvd(uint16_t opcode, uint8_t *pMsg, uint8_t len); - -#ifdef __cplusplus -}; -#endif - -#endif /* HCI_CORE_PS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_core.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_core.h deleted file mode 100644 index 347bcd6354f..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_core.h +++ /dev/null @@ -1,112 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hci_core.h - * - * \brief HCI core interfaces. - * - * $Date: 2016-03-29 11:20:44 -0700 (Tue, 29 Mar 2016) $ - * $Revision: 6512 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef HCI_CORE_H -#define HCI_CORE_H - -#include "hci_core_ps.h" -#include "wsf_queue.h" -#include "wsf_os.h" -#include "hci_api.h" -#include "cfg_stack.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/* Per-connection structure for ACL packet accounting */ -typedef struct -{ - uint8_t *pTxAclPkt; /* Fragmenting TX ACL packet pointer */ - uint8_t *pNextTxFrag; /* Next TX ACL packet fragment */ - uint8_t *pRxAclPkt; /* RX ACL packet pointer */ - uint8_t *pNextRxFrag; /* Next RX ACL packet fragment */ - uint16_t handle; /* Connection handle */ - uint16_t txAclRemLen; /* Fragmenting TX ACL packet remaining length */ - uint16_t rxAclRemLen; /* Fragmented RX ACL packet remaining length */ - bool_t fragmenting; /* TRUE if fragmenting a TX ACL packet */ - bool_t flowDisabled; /* TRUE if data flow disabled */ - uint8_t queuedBufs; /* Queued ACL buffers on this connection */ - uint8_t outBufs; /* Outstanding ACL buffers sent to controller */ -} hciCoreConn_t; - -/* Main control block for dual-chip implementation */ -typedef struct -{ - hciCoreConn_t conn[DM_CONN_MAX]; /* Connection structures */ - uint8_t leStates[HCI_LE_STATES_LEN]; /* Controller LE supported states */ - bdAddr_t bdAddr; /* Bluetooth device address */ - wsfQueue_t aclQueue; /* HCI ACL TX queue */ - hciCoreConn_t *pConnRx; /* Connection struct for current transport RX packet */ - uint16_t maxRxAclLen; /* Maximum reassembled RX ACL packet length */ - uint16_t bufSize; /* Controller ACL data buffer size */ - uint8_t aclQueueHi; /* Disable flow when this many ACL buffers queued */ - uint8_t aclQueueLo; /* Enable flow when this many ACL buffers queued */ - uint8_t availBufs; /* Current avail ACL data buffers */ - uint8_t numBufs; /* Controller number of ACL data buffers */ - uint8_t whiteListSize; /* Controller white list size */ - uint8_t numCmdPkts; /* Controller command packed count */ - uint8_t leSupFeat; /* Controller LE supported features */ - int8_t advTxPwr; /* Controller advertising TX power */ - uint8_t resListSize; /* Controller resolving list size */ -} hciCoreCb_t; - -/************************************************************************************************** - Global Variables -**************************************************************************************************/ - -/* Control block */ -extern hciCoreCb_t hciCoreCb; - -/* LE event mask */ -extern const uint8_t hciLeEventMask[HCI_LE_EVT_MASK_LEN]; - -/* Event mask page 2 */ -extern const uint8_t hciEventMaskPage2[HCI_EVT_MASK_LEN]; - -/* LE supported features configuration mask */ -extern uint8_t hciLeSupFeatCfg; - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -void hciCoreInit(void); -void hciCoreResetStart(void); -void hciCoreConnOpen(uint16_t handle); -void hciCoreConnClose(uint16_t handle); -hciCoreConn_t *hciCoreConnByHandle(uint16_t handle); -void hciCoreSendAclData(hciCoreConn_t *pConn, uint8_t *pData); -void hciCoreTxReady(uint8_t bufs); -void hciCoreTxAclStart(hciCoreConn_t *pConn, uint16_t len, uint8_t *pData); -bool_t hciCoreTxAclContinue(hciCoreConn_t *pConn); -void hciCoreTxAclComplete(hciCoreConn_t *pConn, uint8_t *pData); -uint8_t *hciCoreAclReassembly(uint8_t *pData); - -#ifdef __cplusplus -}; -#endif - -#endif /* HCI_CORE_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_drv.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_drv.h deleted file mode 100644 index 3e19043995f..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_drv.h +++ /dev/null @@ -1,80 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hci_drv.h - * - * \brief HCI driver interface. - * - * $Date: 2013-01-02 22:19:17 -0800 (Wed, 02 Jan 2013) $ - * $Revision: 405 $ - * - * Copyright (c) 2012 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef HCI_DRV_H -#define HCI_DRV_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn hciDrvWrite - * - * \brief Write data the driver. - * - * \param type HCI packet type - * \param len Number of bytes to write. - * \param pData Byte array to write. - * - * \return Return actual number of data bytes written. - * - * \note The type parameter allows the driver layer to prepend the data with a header on the - * same write transaction. - */ -/*************************************************************************************************/ -uint16_t hciDrvWrite(uint8_t type, uint16_t len, uint8_t *pData); - -/*************************************************************************************************/ -/*! - * \fn hciDrvRead - * - * \brief Read data bytes from the driver. - * - * \param len Number of bytes to read. - * \param pData Byte array to store data. - * - * \return Return actual number of data bytes read. - */ -/*************************************************************************************************/ -uint16_t hciDrvRead(uint16_t len, uint8_t *pData); - -/*************************************************************************************************/ -/*! - * \fn hciDrvReadyToSleep - * - * \brief Returns TRUE if driver allows MCU to enter low power sleep mode. - * - * \return TRUE if ready to sleep, FALSE otherwise. - */ -/*************************************************************************************************/ -bool_t hciDrvReadyToSleep(void); - -#ifdef __cplusplus -}; -#endif - -#endif /* HCI_DRV_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_tr.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_tr.h deleted file mode 100644 index a09648e16ba..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hci/include/hci_tr.h +++ /dev/null @@ -1,42 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hci_tr.h - * - * \brief HCI transport interface. - * - * $Date: 2015-06-12 04:19:18 -0700 (Fri, 12 Jun 2015) $ - * $Revision: 3061 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef HCI_TR_H -#define HCI_TR_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -void hciTrSendAclData(void *pContext, uint8_t *pAclData); -void hciTrSendCmd(uint8_t *pCmdData); -bool_t hciTrInit(uint8_t port, uint32_t baudRate, bool_t flowControl); -void hciTrShutdown(void); - -#ifdef __cplusplus -}; -#endif - -#endif /* HCI_TR_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hpal/hpal_blep.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hpal/hpal_blep.h deleted file mode 100644 index 08982bf1880..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hpal/hpal_blep.h +++ /dev/null @@ -1,362 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hpal_blep.h - * - * \brief HPAL BLEP initialization. - * - * \internal - - * __LICENSE__ - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - - * \endinternal - * - * __USAGE NOTE__ - * - * main() will usually start Cordio initialization: - * - * \code - * - * int main() - * { - * wsfHandlerId_t handlerId; - * - * // ... initialize platform ... - * - * handlerId = WsfOsSetNextHandler(HpalBlepHandler); - * HpalBlepInit(handlerId); - * - * // ... add other handlers ... - * - * HpalBlepSetStartupCback(mainBlepStartCallback); - * HpalBlepStart(&myBlobCbacks, (void *)&myContext); - * - * // ... dispatcher loop ... - * - * } - * - * \endcode - * - * The startup callback will receive a pass/fail indication after startup complees. The application - * can then assign callbacks for the HCI interface and "take up" the HCI to begin sending commands - * and receiving events. - * - * \code - * - * static void mainBlepStartCallback(bool_t ok) - * { - * // ... start BLE stack initialization ... - * - * HpalHciSetCbacks(&myHciCbacks); - * HpalHciTakeUp(); - * - * // ... more BLE stack initialization ... - * - * // ... start using BLE ... - * } - * - * \endcode - * - * __STARTUP PROCESS__ - * - * Setup of the BLEP begins with a @ref STARTUP "VS_Startup event" sent from Cordio. - * The Startup_Flags parameter indicates whether the currently-executing firmware (here the - * bootloader) requires a firmware update to perform Bluetooth LE operations if bit 0x02 is set. - * - * If firmware must be updated, the firmware should be retrieved from storage, and a description - * provided to Cordio in a @ref FW_LOAD "VS_Firmware_Load command". The Status and Extended_Status - * should be checked in the Command_Complete event returned in response. The firmware data should - * then be supplied with a series of @ref FW_DATA "VS_Firmware_Data commands". Again, from each - * Command_Complete event returned in response, the Status and Extended_Status should be checked. - * After the Command_Complete event following the final VS_FW_Data command, Cordio will reset and - * the new firmware will begin executing. Another @ref STARTUP "VS_Startup event" will be sent - * from Cordio. - * - * The Startup_Flags parameter from the VS_Startup event will also indicate whether Cordio needs - * a trim update to operate if bit 0x01 is set. If trim must be updated, the trim should be - * retrieved from storage, and a description provided to Cordio in a @ref TRIM_LOAD "VS_Trim_Load command". - * The Status and Extended_Status should be checked in the Command_Complete event returned in - * response. The trim data should then be supplied with a series of @ref TRIM_DATA "VS_Trim_Data commands". - * Again, from each Command_Complete event returned in response, the Status and Extended_Status - * should be checked. Multiple trim blobs may be uploaded sequentially. - * - * After the firmware update and trim update (if necessary), Cordio should be ready to process - * standard Bluetooth LE commands. The Startup_Flags from the last VS_Startup event should - * confirm this by setting bit 0x04. - * - * \dot - * digraph G { - * node [shape="oval", color="darkorange", width=2, height=0.6, fixedsize=true]; - * edge [color="darkorange"]; - * - * WAIT_FOR_STARTUP [label="Wait for STARTUP\n from bootloader"]; - * START_FW_LOAD [label="Start firmware load"]; - * DO_FW_LOAD [label="Load firmware"]; - * WAIT_FOR_FW_STARTUP [label="Wait for STARTUP\n from firmware"]; - * START_TRIM_LOAD [label="Start trim load"]; - * DO_TRIM_LOAD [label="Load a trim blob"]; - * DONE_FAILURE [label="Done with error"]; - * DONE_SUCCESS [label="Done with success"]; - * - * WAIT_FOR_STARTUP -> START_FW_LOAD; - * - * START_FW_LOAD -> START_TRIM_LOAD [label="doesn't\n need fw"]; - * START_FW_LOAD -> DO_FW_LOAD; - * DO_FW_LOAD -> DO_FW_LOAD [label="more data"]; - * DO_FW_LOAD -> WAIT_FOR_FW_STARTUP [label="no more\n data"]; - * - * WAIT_FOR_FW_STARTUP -> START_TRIM_LOAD; - * - * START_TRIM_LOAD -> DONE_SUCCESS [label="doesn't\n need trim"]; - * START_TRIM_LOAD -> DO_TRIM_LOAD [label="another\n trim blob"]; - * START_TRIM_LOAD -> DONE_SUCCESS [label="no more\n trim blobs"]; - * DO_TRIM_LOAD -> DO_TRIM_LOAD [label="more data"]; - * DO_TRIM_LOAD -> START_TRIM_LOAD [label="no more\n data"]; - * - * WAIT_FOR_STARTUP -> DONE_FAILURE [label="timeout\n or error"]; - * START_FW_LOAD -> DONE_FAILURE [label="timeout\n or error"]; - * DO_FW_LOAD -> DONE_FAILURE [label="timeout\n or error"]; - * WAIT_FOR_FW_STARTUP -> DONE_FAILURE [label="timeout\n or error"]; - * START_TRIM_LOAD -> DONE_FAILURE [label="timeout\n or error"]; - * DO_TRIM_LOAD -> DONE_FAILURE [label="timeout\n or error"]; - * } - * \enddot - */ -/*************************************************************************************************/ - -#ifndef HPAL_BLEP_H -#define HPAL_BLEP_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "cordio_bt4_defs.h" - -#include "wsf_types.h" -#include "wsf_os.h" - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \brief Header preceding each blob of data. - */ -/*************************************************************************************************/ -typedef CordioTc2ImgHdr_t hpalBlepBlobHeader_t; - -/*************************************************************************************************/ -/*! - * \brief Callback for BLEP startup status. - */ -/*************************************************************************************************/ -typedef void (*hpalBlepStartupCback_t)(bool_t ok); - -/*************************************************************************************************/ -/*! - * \brief Storage callbacks invoked during startup to read patch and trim data. - */ -/*************************************************************************************************/ -typedef struct -{ - /***********************************************************************************************/ - /*! - * \brief Setup device for reading from beginning of blob storage. - * - * \param pContext Context given to HpalBlepStart() - * - * \return TRUE if successful - */ - /***********************************************************************************************/ - bool_t (*StartStorage)(void *pContext); - - /***********************************************************************************************/ - /*! - * \brief Storage device is no longer needed, so it can be powered down. - * - * \param pContext Context given to HpalBlepStart() - * - * \return TRUE if successful - */ - /***********************************************************************************************/ - bool_t (*EndStorage)(void *pContext); - - /***********************************************************************************************/ - /*! - * \brief Read next blob header from storage device. - * - * \param pContext Context given to HpalBlepStart() - * \param pHdr Pointer to structure that will receive header - * - * \return TRUE if successful - */ - /***********************************************************************************************/ - bool_t (*ReadNextBlobHeader)(void *pContext, hpalBlepBlobHeader_t *pHdr); - - /***********************************************************************************************/ - /*! - * \brief Read more data from current blob at current offset. Reading data advances the - * offset. - * - * \param pContext Context given to HpalBlep_Startup() - * \param pData Storage for data - * \param length Number of bytes to read - * - * \return TRUE if successful - */ - /***********************************************************************************************/ - bool_t (*ReadMoreBlobData)(void *pContext, uint8_t *pData, uint32_t length); - - /***********************************************************************************************/ - /*! - * \brief Advance the offset of the current blob. - * - * \param pContext Context given to HpalBlep_Startup() - * \param length Number of bytes to skip - * - * \return TRUE if successful - */ - /***********************************************************************************************/ - bool_t (*SkipBlobData)(void *pContext, uint32_t length); -} hpalBlepStorageCbacks_t; - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \brief Initialize the BLEP startup. - * - * \param handlerId Handler ID for HpalBlepHandler(). - * - * \return None. - */ -/*************************************************************************************************/ -void HpalBlepInit(wsfHandlerId_t handlerId); - -/*************************************************************************************************/ -/*! - * \brief Begin BLEP startup. - * - * \param pCbacks Storage callbacks. - * \param pCbackContext Storage callback context. - * - * \return None. - */ -/*************************************************************************************************/ -void HpalBlepStart(const hpalBlepStorageCbacks_t *pCbacks, void *pCbackContext); - -/*************************************************************************************************/ -/*! - * \brief Set callback that will indicate startup status. - * - * \param cback Application callback. - * - * \return None. - */ -/*************************************************************************************************/ -void HpalBlepSetStartupCback(hpalBlepStartupCback_t cback); - -/*************************************************************************************************/ -/*! - * \brief Handler for BLEP startup messages. - * - * \param event WSF event mask. - * \param pMsg WSF message. - * - * \return None. - */ -/*************************************************************************************************/ -void HpalBlepHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); - -/*************************************************************************************************/ -/*! - * @mainpage Host Software Architecture - * - * __OVERVIEW__ - * - * The architecture of a typical host's software can be divided into four basic components: the - * application, a host BLE stack, an RTOS or bare-metal event framework, and the CORDIO Host - * Peripheral Access Library (HPAL). - * - * The host BLE stack will provide some API, generally proprietary, for managing connections to - * devices (advertising, scanning, connecting, etc.) and organizing attributes into services and - * accessing the attribute values. - * - * The CORDIO HPAL provides to the stack an interface for writing to the standard Bluetooth Host - * Controller Interface (HCI) or receiving alerts when new messages have been received, as well as - * CORDIO-specific startup routines the application (perhaps through the stack) must call before - * HCI transactions begin. The provided HPAL implementation is independent of host MCU, BLE stack, - * and any (if any) RTOS. However, the provided startup code does submit and service messages on - * the WSF event-driven OS framework. - * - * \dot - * graph G { - * node [shape="polygon", sides=4 color="darkorange", width=2.5 fixedsize=true]; - * edge [color="darkorange"]; - * splines="ortho"; - * - * subgraph cluster0 { - * app -- host; - * host -- hpal [label="HCI messages", color="darkorange"]; - * hpal -- peripheral [label="LLCC Bus", color="darkorange"]; - * color=white; - * ratio=fill; - * edge [style="invis"]; - * } - * rtos -- wsf [constraint=false]; - * app -- wsf [constraint=false]; - * host -- wsf [constraint=false headport="s", tailport="e"]; - * hpal -- wsf [constraint=false headport="s", tailport="e"]; - * - * app [label="Application Profiles\n or Services"]; - * host [label="Host\n BLE Stack"]; - * hpal [label="CORDIO HPAL"]; - * peripheral [label="CORDIO Peripheral"]; - * - * rtos [label="RTOS or\n Bare-Metal\n Event Framework", width=1.5 height=1.0]; - * wsf [label="WSF", width=1.5, height=0.5]; - * } - * \enddot - * - * __CORDIO HPAL__ - * - * The CORDIO peripheral has two operational modes. It enters _statup mode_ after reset, when - * the host software must load firmware and trim patches. If that sequence is successful, the - * peripheral will enter _HCI mode_, during which the standard HCI interface expected by the host - * BLE stack will be alive. - * - * The passage from startup to HCI modes is guided by the module _hpal_blep_ and kicked off with - * a call of the API function \ref HpalBlepStart(). During this process, a series of - * vendor-specific HCI commands and events are exchanged across the LLCC bus. When startup has - * completed, the startup callback (set with \ref HpalBlepSetStartupCback()) will return - * a status indication; in the event of an error, the LLCC bus will be disabled and the HCI - * interface will be locked to prevent inadvertent access. - * - * After a successful startup, the HCI can be accessed directly with the functions in the module - * _hpal_hci_. Management functions can "take up" (\ref HpalHciTakeUp()) or "take down" (\ref - * HpalHciTakeDown()) the interface. Writes are performed directly (@\refHpalHci_Write()) and - * completed reads or writes indicated through callbacks (\ref HpalHciSetCbacks()). A basic - * logging facility will, optionally, dump packet information or contents to a console for - * debugging. - */ -/*************************************************************************************************/ - -#ifdef __cplusplus -}; -#endif - -#endif /* HPAL_BLEP_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hpal/hpal_hci.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hpal/hpal_hci.h deleted file mode 100644 index 45f38f97ed8..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/hpal/hpal_hci.h +++ /dev/null @@ -1,235 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hpal_hci.h - * - * \brief HPAL HCI abstraction. - * - * \internal - - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - * - * \endinternal - */ -/*************************************************************************************************/ - -#ifndef HPAL_HCI_H -#define HPAL_HCI_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "wsf_types.h" - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \struct hpalHciCbacks_t - * - * \brief Callbacks for allocating buffers and handling read and write completion. - */ -/*************************************************************************************************/ -typedef struct -{ - /*********************************************************************************************/ - /*! - * \brief Allocate a buffer for a received message. - * - * This function is called from an interrupt context. - * - * \param len Length of buffer - * - * \return Pointer to buffer or NULL if buffer could not be allocated - */ - /*********************************************************************************************/ - uint8_t *(*BufAlloc) (uint16_t len); - - /*********************************************************************************************/ - /*! - * \brief Free a buffer previously allocated with `BufAlloc()`. - * - * \param buf Pointer to buffer - */ - /*********************************************************************************************/ - void (*BufFree) (uint8_t *buf); - - /*********************************************************************************************/ - /*! - * \brief Handle read completion. - * - * This function is called from an interrupt context. - * - * \param type Packet type - * \param pData Packet data, which was allocated with `BufAlloc()`. The caller must free - * this buffer - * \param len Length of packet data, in bytes - * - * \return None. - */ - /*********************************************************************************************/ - void (*ReadDone) (uint8_t type, uint8_t *pData, uint16_t len); - - /*********************************************************************************************/ - /*! - * \brief Handle write completion. - * - * This function is called from an interrupt context. - * - * \parma type Packet type. - * \param pData Pointer to buffer that held written data, which was passed to - * `HpalHciWrite()` - * \param err Indicates success (0) or error (one of the `HPAL_HCI_ERROR_####` codes) - * \param pContext Context pointer passed to `HpalHciWrite()` - * - * \return None. - * - * \ref ERROR_CODES "error codes" - */ - /*********************************************************************************************/ - void (*WriteDone)(uint8_t type, uint8_t *pData, int32_t err, void *pContext); -} hpalHciCbacks_t; - -/*************************************************************************************************/ -/*! - * \name Logging levels - * \anchor LOGGING_LEVELS - * \brief Level of logging information printed about HCI packets received and transmitted. - */ -/*************************************************************************************************/ -/*! \{ */ -enum -{ - HPAL_HCI_LOGGING_LEVEL_OFF = 0, /*!< No information will be logged. */ - HPAL_HCI_LOGGING_LEVEL_INFO = 1, /*!< Basic details about packets will be interpreted. */ - HPAL_HCI_LOGGING_LEVEL_VERBOSE = 2 /*!< The full byte contents of packets will be logged. */ -}; -/*! \} */ - -/*! \brief The default log level. */ -#define HPAL_HCI_LOGGING_LEVEL_DEFAULT HPAL_HCI_LOGGING_LEVEL_OFF - -/*************************************************************************************************/ -/*! - * \name Error codes - * \anchor ERROR_CODES - * \brief An error code returned in the `WriteDone()` callback. - */ -/*************************************************************************************************/ -/*! \{ */ -enum -{ - HPAL_HCI_ERROR_OK = 0, /*!< No error; the operation succeeded. */ - HPAL_HCI_ERROR_BAD_ACK = -1, /*!< The write failed because a bad ACK was received. */ - HPAL_HCI_ERROR_ABORTED = -2, /*!< The write was aborted. */ - HPAL_HCI_ERROR_ALLOC = -3, /*!< Allocation failed. */ -}; -/*! \} */ - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \brief Initialize the HCI and prepare software for reading and writing. - * - * \return None. - * - * This function is called by `HpalBlepInit()` and generally should not be called by the - * application. - */ -/*************************************************************************************************/ -void HpalHciInit(void); - -/*************************************************************************************************/ -/*! - * \brief Set callbacks for HCI notifications and buffer allocations. - * - * \param pCbacks Pointer to callbacks. If NULL, the reference to the existing callbacks will be - * cleared. - * - * \return None. - */ -/*************************************************************************************************/ -void HpalHciSetCbacks(const hpalHciCbacks_t *pCbacks); - -/*************************************************************************************************/ -/*! - * \brief Take up the interface (i.e., start receiving messages and be able to transmit). - * - * \return None. - * - * HCI messages will be received and transmissions will be allowed. The HCI callbacks should have - * been set before the interface is taken up. - */ -/*************************************************************************************************/ -void HpalHciTakeUp(void); - -/*************************************************************************************************/ -/*! - * \brief Take down the interface (i.e., stop receiving messages and block transmissions). - * - * \return None. - * - * HCI messages will no longer be received and transmissions (i.e., calls to `HpalHciWrite()`) will - * be blocked. The HCI callbacks can only safely be cleared after the interface is taken down. - */ -/*************************************************************************************************/ -void HpalHciTakeDown(void); - -/*************************************************************************************************/ -/*! - * \brief Fully disable the interface. - * - * \return None. - * - * Disabling the interface may be necessary upon an unexpected event, such as a BLEP-specific - * command received after startup is complete. - */ -/*************************************************************************************************/ -void HpalHciDisable(void); - -/*************************************************************************************************/ -/*! - * \brief Enable or disable logging for HCI packets. - * - * \param level logging level - * - * \return None. - * - * \see \ref LOGGING_LEVELS "logging levels" - */ -/*************************************************************************************************/ -void HpalHciSetLoggingLevel(uint8_t level); - -/*************************************************************************************************/ -/*! - * \brief Write packet to HCI. - * - * \param type Packet type. - * \param pData Packet data. - * \param len Packet length, in bytes - * \param pContext Context pointer that will be returned in the `WriteDone()` callback - * - * \return None. - */ -/*************************************************************************************************/ -void HpalHciWrite(uint8_t type, const uint8_t *pData, uint16_t len, void *pContext); - -#ifdef __cplusplus -}; -#endif - -#endif /* HPAL_HCI_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/include/hci_defs.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/include/hci_defs.h deleted file mode 100644 index 38127e70cfa..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/include/hci_defs.h +++ /dev/null @@ -1,576 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hci_defs.h - * - * \brief HCI constants and definitions from the Bluetooth specification. - * - * $Date: 2016-04-18 22:05:04 -0700 (Mon, 18 Apr 2016) $ - * $Revision: 6857 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef HCI_DEFS_H -#define HCI_DEFS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*! Packet definitions */ -#define HCI_CMD_HDR_LEN 3 /*! Command packet header length */ -#define HCI_ACL_HDR_LEN 4 /*! ACL packet header length */ -#define HCI_EVT_HDR_LEN 2 /*! Event packet header length */ -#define HCI_EVT_PARAM_MAX_LEN 255 /*! Maximum length of event packet parameters */ -#define HCI_ACL_DEFAULT_LEN 27 /*! Default maximum ACL packet length */ -#define HCI_PB_FLAG_MASK 0x3000 /*! ACL packet boundary flag mask */ -#define HCI_PB_START_H2C 0x0000 /*! Packet boundary flag, start, host-to-controller */ -#define HCI_PB_CONTINUE 0x1000 /*! Packet boundary flag, continue */ -#define HCI_PB_START_C2H 0x2000 /*! Packet boundary flag, start, controller-to-host */ -#define HCI_HANDLE_MASK 0x0FFF /*! Mask for handle bits in ACL packet */ -#define HCI_HANDLE_NONE 0xFFFF /*! Value for invalid handle */ - -/*! Packet types */ -#define HCI_CMD_TYPE 1 /*! HCI command packet */ -#define HCI_ACL_TYPE 2 /*! HCI ACL data packet */ -#define HCI_EVT_TYPE 4 /*! HCI event packet */ - -/*! Error codes */ -#define HCI_SUCCESS 0x00 /*! Success */ -#define HCI_ERR_UNKNOWN_CMD 0x01 /*! Unknown HCI command */ -#define HCI_ERR_UNKNOWN_HANDLE 0x02 /*! Unknown connection identifier */ -#define HCI_ERR_HARDWARE_FAILURE 0x03 /*! Hardware failure */ -#define HCI_ERR_PAGE_TIMEOUT 0x04 /*! Page timeout */ -#define HCI_ERR_AUTH_FAILURE 0x05 /*! Authentication failure */ -#define HCI_ERR_KEY_MISSING 0x06 /*! PIN or key missing */ -#define HCI_ERR_MEMORY_EXCEEDED 0x07 /*! Memory capacity exceeded */ -#define HCI_ERR_CONN_TIMEOUT 0x08 /*! Connection timeout */ -#define HCI_ERR_CONN_LIMIT 0x09 /*! Connection limit exceeded */ -#define HCI_ERR_SYNCH_CONN_LIMIT 0x0A /*! Synchronous connection limit exceeded */ -#define HCI_ERR_ACL_CONN_EXISTS 0x0B /*! ACL connection already exists */ -#define HCI_ERR_CMD_DISALLOWED 0x0C /*! Command disallowed */ -#define HCI_ERR_REJ_RESOURCES 0x0D /*! Connection rejected limited resources */ -#define HCI_ERR_REJ_SECURITY 0x0E /*! Connection rejected security reasons */ -#define HCI_ERR_REJ_BD_ADDR 0x0F /*! Connection rejected unacceptable BD_ADDR */ -#define HCI_ERR_ACCEPT_TIMEOUT 0x10 /*! Connection accept timeout exceeded */ -#define HCI_ERR_UNSUP_FEAT 0x11 /*! Unsupported feature or parameter value */ -#define HCI_ERR_INVALID_PARAM 0x12 /*! Invalid HCI command parameters */ -#define HCI_ERR_REMOTE_TERMINATED 0x13 /*! Remote user terminated connection */ -#define HCI_ERR_REMOTE_RESOURCES 0x14 /*! Remote device low resources */ -#define HCI_ERR_REMOTE_POWER_OFF 0x15 /*! Remote device power off */ -#define HCI_ERR_LOCAL_TERMINATED 0x16 /*! Connection terminated by local host */ -#define HCI_ERR_REPEATED_ATTEMPTS 0x17 /*! Repeated attempts */ -#define HCI_ERR_PAIRING_NOT_ALLOWED 0x18 /*! Pairing not allowed */ -#define HCI_ERR_UNKNOWN_LMP_PDU 0x19 /*! Unknown LMP PDU */ -#define HCI_ERR_UNSUP_REMOTE_FEAT 0x1A /*! Unsupported remote feature */ -#define HCI_ERR_SCO_OFFSET 0x1B /*! SCO offset rejected */ -#define HCI_ERR_SCO_INTERVAL 0x1C /*! SCO interval rejected */ -#define HCI_ERR_SCO_MODE 0x1D /*! SCO air mode rejected */ -#define HCI_ERR_LMP_PARAM 0x1E /*! Invalid LMP parameters */ -#define HCI_ERR_UNSPECIFIED 0x1F /*! Unspecified error */ -#define HCI_ERR_UNSUP_LMP_PARAM 0x20 /*! Unsupported LMP parameter value */ -#define HCI_ERR_ROLE_CHANGE 0x21 /*! Role change not allowed */ -#define HCI_ERR_LL_RESP_TIMEOUT 0x22 /*! LL response timeout */ -#define HCI_ERR_LMP_COLLISION 0x23 /*! LMP error transaction collision */ -#define HCI_ERR_LMP_PDU 0x24 /*! LMP pdu not allowed */ -#define HCI_ERR_ENCRYPT_MODE 0x25 /*! Encryption mode not acceptable */ -#define HCI_ERR_LINK_KEY 0x26 /*! Link key can not be changed */ -#define HCI_ERR_UNSUP_QOS 0x27 /*! Requested qos not supported */ -#define HCI_ERR_INSTANT_PASSED 0x28 /*! Instant passed */ -#define HCI_ERR_UNSUP_UNIT_KEY 0x29 /*! Pairing with unit key not supported */ -#define HCI_ERR_TRANSACT_COLLISION 0x2A /*! Different transaction collision */ -#define HCI_ERR_CHANNEL_CLASS 0x2E /*! Channel classification not supported */ -#define HCI_ERR_MEMORY 0x2F /*! Insufficient security */ -#define HCI_ERR_PARAMETER_RANGE 0x30 /*! Parameter out of mandatory range */ -#define HCI_ERR_ROLE_SWITCH_PEND 0x32 /*! Role switch pending */ -#define HCI_ERR_RESERVED_SLOT 0x34 /*! Reserved slot violation */ -#define HCI_ERR_ROLE_SWITCH 0x35 /*! Role switch failed */ -#define HCI_ERR_INQ_TOO_LARGE 0x36 /*! Extended inquiry response too large */ -#define HCI_ERR_UNSUP_SSP 0x37 /*! Secure simple pairing not supported by host */ -#define HCI_ERR_HOST_BUSY_PAIRING 0x38 /*! Host busy - pairing */ -#define HCI_ERR_NO_CHANNEL 0x39 /*! Connection rejected no suitable channel */ -#define HCI_ERR_CONTROLLER_BUSY 0x3A /*! Controller busy */ -#define HCI_ERR_CONN_INTERVAL 0x3B /*! Unacceptable connection interval */ -#define HCI_ERR_ADV_TIMEOUT 0x3C /*! Directed advertising timeout */ -#define HCI_ERR_MIC_FAILURE 0x3D /*! Connection terminated due to MIC failure */ -#define HCI_ERR_CONN_FAIL 0x3E /*! Connection failed to be established */ -#define HCI_ERR_MAC_CONN_FAIL 0x3F /*! MAC connection failed */ - -/*! Command groups */ -#define HCI_OGF_NOP 0x00 /*! No operation */ -#define HCI_OGF_LINK_CONTROL 0x01 /*! Link control */ -#define HCI_OGF_LINK_POLICY 0x02 /*! Link policy */ -#define HCI_OGF_CONTROLLER 0x03 /*! Controller and baseband */ -#define HCI_OGF_INFORMATIONAL 0x04 /*! Informational parameters */ -#define HCI_OGF_STATUS 0x05 /*! Status parameters */ -#define HCI_OGF_TESTING 0x06 /*! Testing */ -#define HCI_OGF_LE_CONTROLLER 0x08 /*! LE controller */ -#define HCI_OGF_VENDOR_SPEC 0x3F /*! Vendor specific */ - -/*! NOP command */ -#define HCI_OCF_NOP 0x00 - -/*! Link control commands */ -#define HCI_OCF_DISCONNECT 0x06 -#define HCI_OCF_READ_REMOTE_VER_INFO 0x1D - -/*! Link policy commands (none used for LE) */ - -/*! Controller and baseband commands */ -#define HCI_OCF_SET_EVENT_MASK 0x01 -#define HCI_OCF_RESET 0x03 -#define HCI_OCF_READ_TX_PWR_LVL 0x2D -#define HCI_OCF_SET_CONTROLLER_TO_HOST_FC 0x31 -#define HCI_OCF_HOST_BUFFER_SIZE 0x33 -#define HCI_OCF_HOST_NUM_CMPL_PKTS 0x35 -#define HCI_OCF_SET_EVENT_MASK_PAGE2 0x63 -#define HCI_OCF_READ_AUTH_PAYLOAD_TO 0x7B -#define HCI_OCF_WRITE_AUTH_PAYLOAD_TO 0x7C - -/*! Informational commands */ -#define HCI_OCF_READ_LOCAL_VER_INFO 0x01 -#define HCI_OCF_READ_LOCAL_SUP_CMDS 0x02 -#define HCI_OCF_READ_LOCAL_SUP_FEAT 0x03 -#define HCI_OCF_READ_BUF_SIZE 0x05 -#define HCI_OCF_READ_BD_ADDR 0x09 - -/*! Status commands */ -#define HCI_OCF_READ_RSSI 0x05 - -/*! LE controller commands */ -#define HCI_OCF_LE_SET_EVENT_MASK 0x01 -#define HCI_OCF_LE_READ_BUF_SIZE 0x02 -#define HCI_OCF_LE_READ_LOCAL_SUP_FEAT 0x03 -#define HCI_OCF_LE_SET_RAND_ADDR 0x05 -#define HCI_OCF_LE_SET_ADV_PARAM 0x06 -#define HCI_OCF_LE_READ_ADV_TX_POWER 0x07 -#define HCI_OCF_LE_SET_ADV_DATA 0x08 -#define HCI_OCF_LE_SET_SCAN_RESP_DATA 0x09 -#define HCI_OCF_LE_SET_ADV_ENABLE 0x0A -#define HCI_OCF_LE_SET_SCAN_PARAM 0x0B -#define HCI_OCF_LE_SET_SCAN_ENABLE 0x0C -#define HCI_OCF_LE_CREATE_CONN 0x0D -#define HCI_OCF_LE_CREATE_CONN_CANCEL 0x0E -#define HCI_OCF_LE_READ_WHITE_LIST_SIZE 0x0F -#define HCI_OCF_LE_CLEAR_WHITE_LIST 0x10 -#define HCI_OCF_LE_ADD_DEV_WHITE_LIST 0x11 -#define HCI_OCF_LE_REMOVE_DEV_WHITE_LIST 0x12 -#define HCI_OCF_LE_CONN_UPDATE 0x13 -#define HCI_OCF_LE_SET_HOST_CHAN_CLASS 0x14 -#define HCI_OCF_LE_READ_CHAN_MAP 0x15 -#define HCI_OCF_LE_READ_REMOTE_FEAT 0x16 -#define HCI_OCF_LE_ENCRYPT 0x17 -#define HCI_OCF_LE_RAND 0x18 -#define HCI_OCF_LE_START_ENCRYPTION 0x19 -#define HCI_OCF_LE_LTK_REQ_REPL 0x1A -#define HCI_OCF_LE_LTK_REQ_NEG_REPL 0x1B -#define HCI_OCF_LE_READ_SUP_STATES 0x1C -#define HCI_OCF_LE_RECEIVER_TEST 0x1D -#define HCI_OCF_LE_TRANSMITTER_TEST 0x1E -#define HCI_OCF_LE_TEST_END 0x1F -/* New in version 4.1 */ -#define HCI_OCF_LE_REM_CONN_PARAM_REP 0x20 -#define HCI_OCF_LE_REM_CONN_PARAM_NEG_REP 0x21 -/* New in version 4.2 */ -#define HCI_OCF_LE_SET_DATA_LEN 0x22 -#define HCI_OCF_LE_READ_DEF_DATA_LEN 0x23 -#define HCI_OCF_LE_WRITE_DEF_DATA_LEN 0x24 -#define HCI_OCF_LE_READ_LOCAL_P256_PUB_KEY 0x25 -#define HCI_OCF_LE_GENERATE_DHKEY 0x26 -#define HCI_OCF_LE_ADD_DEV_RES_LIST 0x27 -#define HCI_OCF_LE_REMOVE_DEV_RES_LIST 0x28 -#define HCI_OCF_LE_CLEAR_RES_LIST 0x29 -#define HCI_OCF_LE_READ_RES_LIST_SIZE 0x2A -#define HCI_OCF_LE_READ_PEER_RES_ADDR 0x2B -#define HCI_OCF_LE_READ_LOCAL_RES_ADDR 0x2C -#define HCI_OCF_LE_SET_ADDR_RES_ENABLE 0x2D -#define HCI_OCF_LE_SET_RES_PRIV_ADDR_TO 0x2E -#define HCI_OCF_LE_READ_MAX_DATA_LEN 0x2F - -/*! Opcode manipulation macros */ -#define HCI_OPCODE(ogf, ocf) (((ogf) << 10) + (ocf)) -#define HCI_OGF(opcode) ((opcode) >> 10) -#define HCI_OCF(opcode) ((opcode) & 0x03FF) - -/*! Command opcodes */ -#define HCI_OPCODE_NOP HCI_OPCODE(HCI_OGF_NOP, HCI_OCF_NOP) - -#define HCI_OPCODE_DISCONNECT HCI_OPCODE(HCI_OGF_LINK_CONTROL, HCI_OCF_DISCONNECT) -#define HCI_OPCODE_READ_REMOTE_VER_INFO HCI_OPCODE(HCI_OGF_LINK_CONTROL, HCI_OCF_READ_REMOTE_VER_INFO) - -#define HCI_OPCODE_SET_EVENT_MASK HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_SET_EVENT_MASK) -#define HCI_OPCODE_RESET HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_RESET) -#define HCI_OPCODE_READ_TX_PWR_LVL HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_READ_TX_PWR_LVL) -#define HCI_OPCODE_SET_EVENT_MASK_PAGE2 HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_SET_EVENT_MASK_PAGE2) -#define HCI_OPCODE_READ_AUTH_PAYLOAD_TO HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_READ_AUTH_PAYLOAD_TO) -#define HCI_OPCODE_WRITE_AUTH_PAYLOAD_TO HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_WRITE_AUTH_PAYLOAD_TO) - -#define HCI_OPCODE_READ_LOCAL_VER_INFO HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_LOCAL_VER_INFO) -#define HCI_OPCODE_READ_LOCAL_SUP_CMDS HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_LOCAL_SUP_CMDS) -#define HCI_OPCODE_READ_LOCAL_SUP_FEAT HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_LOCAL_SUP_FEAT) -#define HCI_OPCODE_READ_BUF_SIZE HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_BUF_SIZE) -#define HCI_OPCODE_READ_BD_ADDR HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_BD_ADDR) - -#define HCI_OPCODE_READ_RSSI HCI_OPCODE(HCI_OGF_STATUS, HCI_OCF_READ_RSSI) - -#define HCI_OPCODE_LE_SET_EVENT_MASK HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_EVENT_MASK) -#define HCI_OPCODE_LE_READ_BUF_SIZE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_BUF_SIZE) -#define HCI_OPCODE_LE_READ_LOCAL_SUP_FEAT HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_LOCAL_SUP_FEAT) -#define HCI_OPCODE_LE_SET_RAND_ADDR HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_RAND_ADDR) -#define HCI_OPCODE_LE_SET_ADV_PARAM HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_ADV_PARAM) -#define HCI_OPCODE_LE_READ_ADV_TX_POWER HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_ADV_TX_POWER) -#define HCI_OPCODE_LE_SET_ADV_DATA HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_ADV_DATA) -#define HCI_OPCODE_LE_SET_SCAN_RESP_DATA HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_SCAN_RESP_DATA) -#define HCI_OPCODE_LE_SET_ADV_ENABLE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_ADV_ENABLE) -#define HCI_OPCODE_LE_SET_SCAN_PARAM HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_SCAN_PARAM) -#define HCI_OPCODE_LE_SET_SCAN_ENABLE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_SCAN_ENABLE) -#define HCI_OPCODE_LE_CREATE_CONN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CREATE_CONN) -#define HCI_OPCODE_LE_CREATE_CONN_CANCEL HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CREATE_CONN_CANCEL) -#define HCI_OPCODE_LE_READ_WHITE_LIST_SIZE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_WHITE_LIST_SIZE) -#define HCI_OPCODE_LE_CLEAR_WHITE_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CLEAR_WHITE_LIST) -#define HCI_OPCODE_LE_ADD_DEV_WHITE_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_ADD_DEV_WHITE_LIST) -#define HCI_OPCODE_LE_REMOVE_DEV_WHITE_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_REMOVE_DEV_WHITE_LIST) -#define HCI_OPCODE_LE_CONN_UPDATE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CONN_UPDATE) -#define HCI_OPCODE_LE_SET_HOST_CHAN_CLASS HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_HOST_CHAN_CLASS) -#define HCI_OPCODE_LE_READ_CHAN_MAP HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_CHAN_MAP) -#define HCI_OPCODE_LE_READ_REMOTE_FEAT HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_REMOTE_FEAT) -#define HCI_OPCODE_LE_ENCRYPT HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_ENCRYPT) -#define HCI_OPCODE_LE_RAND HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_RAND) -#define HCI_OPCODE_LE_START_ENCRYPTION HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_START_ENCRYPTION) -#define HCI_OPCODE_LE_LTK_REQ_REPL HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_LTK_REQ_REPL) -#define HCI_OPCODE_LE_LTK_REQ_NEG_REPL HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_LTK_REQ_NEG_REPL) -#define HCI_OPCODE_LE_READ_SUP_STATES HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_SUP_STATES) -#define HCI_OPCODE_LE_RECEIVER_TEST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_RECEIVER_TEST) -#define HCI_OPCODE_LE_TRANSMITTER_TEST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_TRANSMITTER_TEST) -#define HCI_OPCODE_LE_TEST_END HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_TEST_END) -#define HCI_OPCODE_LE_REM_CONN_PARAM_REP HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_REM_CONN_PARAM_REP) -#define HCI_OPCODE_LE_REM_CONN_PARAM_NEG_REP HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_REM_CONN_PARAM_NEG_REP) -#define HCI_OPCODE_LE_SET_DATA_LEN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_DATA_LEN) -#define HCI_OPCODE_LE_READ_DEF_DATA_LEN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_DEF_DATA_LEN) -#define HCI_OPCODE_LE_WRITE_DEF_DATA_LEN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_WRITE_DEF_DATA_LEN) -#define HCI_OPCODE_LE_READ_LOCAL_P256_PUB_KEY HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_LOCAL_P256_PUB_KEY) -#define HCI_OPCODE_LE_GENERATE_DHKEY HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_GENERATE_DHKEY) -#define HCI_OPCODE_LE_ADD_DEV_RES_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_ADD_DEV_RES_LIST) -#define HCI_OPCODE_LE_REMOVE_DEV_RES_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_REMOVE_DEV_RES_LIST) -#define HCI_OPCODE_LE_CLEAR_RES_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CLEAR_RES_LIST) -#define HCI_OPCODE_LE_READ_RES_LIST_SIZE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_RES_LIST_SIZE) -#define HCI_OPCODE_LE_READ_PEER_RES_ADDR HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_PEER_RES_ADDR) -#define HCI_OPCODE_LE_READ_LOCAL_RES_ADDR HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_LOCAL_RES_ADDR) -#define HCI_OPCODE_LE_SET_ADDR_RES_ENABLE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_ADDR_RES_ENABLE) -#define HCI_OPCODE_LE_SET_RES_PRIV_ADDR_TO HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_RES_PRIV_ADDR_TO) -#define HCI_OPCODE_LE_READ_MAX_DATA_LEN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_MAX_DATA_LEN) - - - -/*! Command parameter lengths */ -#define HCI_LEN_NOP 0 - -#define HCI_LEN_DISCONNECT 3 -#define HCI_LEN_READ_REMOTE_VER_INFO 2 - -#define HCI_LEN_SET_EVENT_MASK 8 -#define HCI_LEN_SET_EVENT_MASK_PAGE2 8 -#define HCI_LEN_RESET 0 -#define HCI_LEN_READ_TX_PWR_LVL 3 -#define HCI_LEN_SET_CONTROLLER_TO_HOST_FC 1 -#define HCI_LEN_HOST_BUFFER_SIZE 8 -#define HCI_LEN_HOST_NUM_CMPL_PKTS 1 - -#define HCI_LEN_READ_LOCAL_VER_INFO 0 -#define HCI_LEN_READ_LOCAL_SUP_CMDS 0 -#define HCI_LEN_READ_LOCAL_SUP_FEAT 0 -#define HCI_LEN_READ_BUF_SIZE 0 -#define HCI_LEN_READ_BD_ADDR 0 - -#define HCI_LEN_READ_RSSI 2 -#define HCI_LEN_READ_AUTH_PAYLOAD_TO 2 -#define HCI_LEN_WRITE_AUTH_PAYLOAD_TO 4 - -#define HCI_LEN_LE_SET_EVENT_MASK 8 -#define HCI_LEN_LE_READ_BUF_SIZE 0 -#define HCI_LEN_LE_READ_LOCAL_SUP_FEAT 0 -#define HCI_LEN_LE_SET_RAND_ADDR 6 -#define HCI_LEN_LE_SET_ADV_PARAM 15 -#define HCI_LEN_LE_READ_ADV_TX_POWER 0 -#define HCI_LEN_LE_SET_ADV_DATA 32 -#define HCI_LEN_LE_SET_SCAN_RESP_DATA 32 -#define HCI_LEN_LE_SET_ADV_ENABLE 1 -#define HCI_LEN_LE_SET_SCAN_PARAM 7 -#define HCI_LEN_LE_SET_SCAN_ENABLE 2 -#define HCI_LEN_LE_CREATE_CONN 25 -#define HCI_LEN_LE_CREATE_CONN_CANCEL 0 -#define HCI_LEN_LE_READ_WHITE_LIST_SIZE 0 -#define HCI_LEN_LE_CLEAR_WHITE_LIST 0 -#define HCI_LEN_LE_ADD_DEV_WHITE_LIST 7 -#define HCI_LEN_LE_REMOVE_DEV_WHITE_LIST 7 -#define HCI_LEN_LE_CONN_UPDATE 14 -#define HCI_LEN_LE_SET_HOST_CHAN_CLASS 5 -#define HCI_LEN_LE_READ_CHAN_MAP 2 -#define HCI_LEN_LE_READ_REMOTE_FEAT 2 -#define HCI_LEN_LE_ENCRYPT 32 -#define HCI_LEN_LE_RAND 0 -#define HCI_LEN_LE_START_ENCRYPTION 28 -#define HCI_LEN_LE_LTK_REQ_REPL 18 -#define HCI_LEN_LE_LTK_REQ_NEG_REPL 2 -#define HCI_LEN_LE_READ_SUP_STATES 0 -#define HCI_LEN_LE_RECEIVER_TEST 1 -#define HCI_LEN_LE_TRANSMITTER_TEST 3 -#define HCI_LEN_LE_TEST_END 0 -#define HCI_LEN_LE_READ_LOCAL_P256_PUB_KEY 0 -#define HCI_LEN_LE_GENERATE_MAX_DATA 64 -#define HCI_LEN_LE_ADD_DEV_RES_LIST 39 -#define HCI_LEN_LE_REMOVE_DEV_RES_LIST 7 -#define HCI_LEN_LE_CLEAR_RES_LIST 0 -#define HCI_LEN_LE_READ_RES_LIST_SIZE 0 -#define HCI_LEN_LE_READ_PEER_RES_ADDR 7 -#define HCI_LEN_LE_READ_LOCAL_RES_ADDR 7 -#define HCI_LEN_LE_SET_ADDR_RES_ENABLE 1 -#define HCI_LEN_LE_SET_RES_PRIV_ADDR_TO 2 -#define HCI_LEN_LE_REM_CONN_PARAM_REP 14 -#define HCI_LEN_LE_REM_CONN_PARAM_NEG_REP 3 -#define HCI_LEN_LE_SET_DATA_LEN 6 -#define HCI_LEN_LE_READ_DEF_DATA_LEN 0 -#define HCI_LEN_LE_WRITE_DEF_DATA_LEN 4 -#define HCI_LEN_LE_READ_LOCAL_P256_PUB_KEY 0 -#define HCI_LEN_LE_GENERATE_DHKEY 64 -#define HCI_LEN_LE_READ_MAX_DATA_LEN 0 - -/*! Events */ -#define HCI_DISCONNECT_CMPL_EVT 0x05 -#define HCI_ENC_CHANGE_EVT 0x08 -#define HCI_READ_REMOTE_VER_INFO_CMPL_EVT 0x0C -#define HCI_CMD_CMPL_EVT 0x0E -#define HCI_CMD_STATUS_EVT 0x0F -#define HCI_HW_ERROR_EVT 0x10 -#define HCI_NUM_CMPL_PKTS_EVT 0x13 -#define HCI_DATA_BUF_OVERFLOW_EVT 0x1A -#define HCI_ENC_KEY_REFRESH_CMPL_EVT 0x30 -#define HCI_LE_META_EVT 0x3E -#define HCI_AUTH_PAYLOAD_TIMEOUT_EVT 0x57 -#define HCI_VENDOR_SPEC_EVT 0xFF - -/*! LE Subevents */ -#define HCI_LE_CONN_CMPL_EVT 0x01 -#define HCI_LE_ADV_REPORT_EVT 0x02 -#define HCI_LE_CONN_UPDATE_CMPL_EVT 0x03 -#define HCI_LE_READ_REMOTE_FEAT_CMPL_EVT 0x04 -#define HCI_LE_LTK_REQ_EVT 0x05 -/* New in version 4.1 */ -#define HCI_LE_REM_CONN_PARAM_REQ_EVT 0x06 -/* New in version 4.2 */ -#define HCI_LE_DATA_LEN_CHANGE_EVT 0x07 -#define HCI_LE_READ_LOCAL_P256_PUB_KEY_CMPL_EVT 0x08 -#define HCI_LE_GENERATE_DHKEY_CMPL_EVT 0x09 -#define HCI_LE_ENHANCED_CONN_CMPL_EVT 0x0A -#define HCI_LE_DIRECT_ADV_REPORT_EVT 0x0B - -/*! Event parameter lengths */ -#define HCI_LEN_DISCONNECT_CMPL 4 -#define HCI_LEN_CMD_CMPL 3 -#define HCI_LEN_CMD_STATUS 4 -#define HCI_LEN_HW_ERR 1 -#define HCI_LEN_ENC_CHANGE 4 -#define HCI_LEN_LE_CONN_CMPL 19 -#define HCI_LEN_LE_CONN_UPDATE_CMPL 9 -#define HCI_LEN_LE_READ_REMOTE_FEAT_CMPL 12 -#define HCI_LEN_LE_LTK_REQ 13 - -/*! Supported commands */ -#define HCI_SUP_DISCONNECT 0x20 /*! Byte 0 */ -#define HCI_SUP_READ_REMOTE_VER_INFO 0x80 /*! Byte 2 */ -#define HCI_SUP_SET_EVENT_MASK 0x40 /*! Byte 5 */ -#define HCI_SUP_RESET 0x80 /*! Byte 5 */ -#define HCI_SUP_READ_TX_PWR_LVL 0x04 /*! Byte 10 */ -#define HCI_SUP_READ_LOCAL_VER_INFO 0x08 /*! Byte 14 */ -#define HCI_SUP_READ_LOCAL_SUP_FEAT 0x20 /*! Byte 14 */ -#define HCI_SUP_READ_BD_ADDR 0x02 /*! Byte 15 */ -#define HCI_SUP_READ_RSSI 0x20 /*! Byte 15 */ -#define HCI_SUP_SET_EVENT_MASK_PAGE2 0x04 /*! Byte 22 */ -#define HCI_SUP_LE_SET_EVENT_MASK 0x01 /*! Byte 25 */ -#define HCI_SUP_LE_READ_BUF_SIZE 0x02 /*! Byte 25 */ -#define HCI_SUP_LE_READ_LOCAL_SUP_FEAT 0x04 /*! Byte 25 */ -#define HCI_SUP_LE_SET_RAND_ADDR 0x10 /*! Byte 25 */ -#define HCI_SUP_LE_SET_ADV_PARAM 0x20 /*! Byte 25 */ -#define HCI_SUP_LE_READ_ADV_TX_POWER 0x40 /*! Byte 25 */ -#define HCI_SUP_LE_SET_ADV_DATA 0x80 /*! Byte 25 */ -#define HCI_SUP_LE_SET_SCAN_RESP_DATA 0x01 /*! Byte 26 */ -#define HCI_SUP_LE_SET_ADV_ENABLE 0x02 /*! Byte 26 */ -#define HCI_SUP_LE_SET_SCAN_PARAM 0x04 /*! Byte 26 */ -#define HCI_SUP_LE_SET_SCAN_ENABLE 0x08 /*! Byte 26 */ -#define HCI_SUP_LE_CREATE_CONN 0x10 /*! Byte 26 */ -#define HCI_SUP_LE_CREATE_CONN_CANCEL 0x20 /*! Byte 26 */ -#define HCI_SUP_LE_READ_WHITE_LIST_SIZE 0x40 /*! Byte 26 */ -#define HCI_SUP_LE_CLEAR_WHITE_LIST 0x80 /*! Byte 26 */ -#define HCI_SUP_LE_ADD_DEV_WHITE_LIST 0x01 /*! Byte 27 */ -#define HCI_SUP_LE_REMOVE_DEV_WHITE_LIST 0x02 /*! Byte 27 */ -#define HCI_SUP_LE_CONN_UPDATE 0x04 /*! Byte 27 */ -#define HCI_SUP_LE_SET_HOST_CHAN_CLASS 0x08 /*! Byte 27 */ -#define HCI_SUP_LE_READ_CHAN_MAP 0x10 /*! Byte 27 */ -#define HCI_SUP_LE_READ_REMOTE_FEAT 0x20 /*! Byte 27 */ -#define HCI_SUP_LE_ENCRYPT 0x40 /*! Byte 27 */ -#define HCI_SUP_LE_RAND 0x80 /*! Byte 27 */ -#define HCI_SUP_LE_START_ENCRYPTION 0x01 /*! Byte 28 */ -#define HCI_SUP_LE_LTK_REQ_REPL 0x02 /*! Byte 28 */ -#define HCI_SUP_LE_LTK_REQ_NEG_REPL 0x04 /*! Byte 28 */ -#define HCI_SUP_LE_READ_SUP_STATES 0x08 /*! Byte 28 */ -#define HCI_SUP_LE_RECEIVER_TEST 0x10 /*! Byte 28 */ -#define HCI_SUP_LE_TRANSMITTER_TEST 0x20 /*! Byte 28 */ -#define HCI_SUP_LE_TEST_END 0x40 /*! Byte 28 */ -#define HCI_SUP_READ_AUTH_PAYLOAD_TO 0x10 /*! Byte 32 */ -#define HCI_SUP_WRITE_AUTH_PAYLOAD_TO 0x20 /*! Byte 32 */ -#define HCI_SUP_LE_REM_CONN_PARAM_REQ_REPL 0x10 /*! Byte 33 */ -#define HCI_SUP_LE_REM_CONN_PARAM_REQ_NEG_REPL 0x20 /*! Byte 33 */ -#define HCI_SUP_LE_SET_DATA_LEN 0x40 /*! Byte 33 */ -#define HCI_SUP_LE_READ_DEF_DATA_LEN 0x80 /*! Byte 33 */ -#define HCI_SUP_LE_WRITE_DEF_DATA_LEN 0x01 /*! Byte 34 */ -#define HCI_SUP_LE_READ_LOCAL_P256_PUB_KEY 0x02 /*! Byte 34 */ -#define HCI_SUP_LE_GENERATE_DHKEY 0x04 /*! Byte 34 */ -#define HCI_SUP_LE_ADD_DEV_RES_LIST_EVT 0x08 /*! Byte 34 */ -#define HCI_SUP_LE_REMOVE_DEV_RES_LIST 0x10 /*! Byte 34 */ -#define HCI_SUP_LE_CLEAR_RES_LIST 0x20 /*! Byte 34 */ -#define HCI_SUP_LE_READ_RES_LIST_SIZE 0x40 /*! Byte 34 */ -#define HCI_SUP_LE_READ_PEER_RES_ADDR 0x80 /*! Byte 34 */ -#define HCI_SUP_LE_READ_LOCAL_RES_ADDR 0x01 /*! Byte 35 */ -#define HCI_SUP_LE_SET_ADDR_RES_ENABLE 0x02 /*! Byte 35 */ -#define HCI_SUP_LE_SET_RES_PRIV_ADDR_TO 0x04 /*! Byte 35 */ -#define HCI_SUP_LE_READ_MAX_DATA_LEN 0x08 /*! Byte 35 */ - -/*! Event mask */ -#define HCI_EVT_MASK_DISCONNECT_CMPL 0x10 /*! Byte 0 */ -#define HCI_EVT_MASK_ENC_CHANGE 0x80 /*! Byte 0 */ -#define HCI_EVT_MASK_READ_REMOTE_VER_INFO_CMPL 0x08 /*! Byte 1 */ -#define HCI_EVT_MASK_HW_ERROR 0x80 /*! Byte 1 */ -#define HCI_EVT_MASK_DATA_BUF_OVERFLOW 0x02 /*! Byte 3 */ -#define HCI_EVT_MASK_ENC_KEY_REFRESH_CMPL 0x80 /*! Byte 5 */ -#define HCI_EVT_MASK_LE_META 0x20 /*! Byte 7 */ - -/*! Event mask page 2 */ -#define HCI_EVT_MASK_AUTH_PAYLOAD_TIMEOUT 0x80 /*! Byte 2 */ - -/*! LE event mask */ -#define HCI_EVT_MASK_LE_CONN_CMPL_EVT 0x01 /*! Byte 0 */ -#define HCI_EVT_MASK_LE_ADV_REPORT_EVT 0x02 /*! Byte 0 */ -#define HCI_EVT_MASK_LE_CONN_UPDATE_CMPL_EVT 0x04 /*! Byte 0 */ -#define HCI_EVT_MASK_LE_READ_REMOTE_FEAT_CMPL_EVT 0x08 /*! Byte 0 */ -#define HCI_EVT_MASK_LE_LTK_REQ_EVT 0x10 /*! Byte 0 */ -#define HCI_EVT_MASK_LE_REMOTE_CONN_PARAM_REQ_EVT 0x20 /*! Byte 0 */ -#define HCI_EVT_MASK_LE_DATA_LEN_CHANGE_EVT 0x40 /*! Byte 0 */ -#define HCI_EVT_MASK_LE_READ_LOCAL_P256_PUB_KEY_CMPL 0x80 /*! Byte 0 */ -#define HCI_EVT_MASK_LE_GENERATE_DHKEY_CMPL 0x01 /*! Byte 1 */ -#define HCI_EVT_MASK_LE_ENHANCED_CONN_CMPL_EVT 0x02 /*! Byte 1 */ -#define HCI_EVT_MASK_LE_DIRECT_ADV_REPORT_EVT 0x04 /*! Byte 1 */ - -/*! LE supported features */ -#define HCI_LE_SUP_FEAT_ENCRYPTION 0x01 /*! Encryption supported */ -#define HCI_LE_SUP_FEAT_CONN_PARAM_REQ_PROC 0x02 /*! Connection Parameters Request Procedure supported */ -#define HCI_LE_SUP_FEAT_EXT_REJECT_IND 0x04 /*! Extended Reject Indication supported */ -#define HCI_LE_SUP_FEAT_SLV_INIT_FEAT_EXCH 0x08 /*! Slave-Initiated Features Exchange supported */ -#define HCI_LE_SUP_FEAT_LE_PING 0x10 /*! LE Ping supported */ -#define HCI_LE_SUP_FEAT_DATA_LEN_EXT 0x20 /*! Data Length Extension supported */ -#define HCI_LE_SUP_FEAT_PRIVACY 0x40 /*! LL Privacy supported */ -#define HCI_LE_SUP_FEAT_EXT_SCAN_FILT_POLICY 0x80 /*! Extended Scan Filter Policy supported */ - -/*! Advertising command parameters */ -#define HCI_ADV_MIN_INTERVAL 0x0020 /*! Minimum advertising interval */ -#define HCI_ADV_NONCONN_MIN_INTERVAL 0x00A0 /*! Minimum nonconnectable adv. interval */ -#define HCI_ADV_MAX_INTERVAL 0x4000 /*! Maximum advertising interval */ -#define HCI_ADV_TYPE_CONN_UNDIRECT 0x00 /*! Connectable undirected advertising */ -#define HCI_ADV_TYPE_CONN_DIRECT 0x01 /*! Connectable directed high duty cycle advertising */ -#define HCI_ADV_TYPE_DISC_UNDIRECT 0x02 /*! Discoverable undirected advertising */ -#define HCI_ADV_TYPE_NONCONN_UNDIRECT 0x03 /*! Nonconnectable undirected advertising */ -#define HCI_ADV_TYPE_CONN_DIRECT_LO_DUTY 0x04 /*! Connectable directed low duty cycle advertising */ -#define HCI_ADV_CHAN_37 0x01 /*! Advertising channel 37 */ -#define HCI_ADV_CHAN_38 0x02 /*! Advertising channel 38 */ -#define HCI_ADV_CHAN_39 0x04 /*! Advertising channel 39 */ -#define HCI_ADV_FILT_NONE 0x00 /*! No scan request or connection filtering */ -#define HCI_ADV_FILT_SCAN 0x01 /*! White list filters scan requests */ -#define HCI_ADV_FILT_CONN 0x02 /*! White list filters connections */ -#define HCI_ADV_FILT_ALL 0x03 /*! White list filters scan req. and conn. */ - -/*! Scan command parameters */ -#define HCI_SCAN_TYPE_PASSIVE 0 /*! Passive scan */ -#define HCI_SCAN_TYPE_ACTIVE 1 /*! Active scan */ -#define HCI_SCAN_INTERVAL_MIN 0x0004 /*! Minimum scan interval */ -#define HCI_SCAN_INTERVAL_MAX 0x4000 /*! Maximum scan interval */ -#define HCI_SCAN_INTERVAL_DEFAULT 0x0010 /*! Default scan interval */ -#define HCI_SCAN_WINDOW_MIN 0x0004 /*! Minimum scan window */ -#define HCI_SCAN_WINDOW_MAX 0x4000 /*! Maximum scan window */ -#define HCI_SCAN_WINDOW_DEFAULT 0x0010 /*! Default scan window */ - -/*! Connection command parameters */ -#define HCI_CONN_INTERVAL_MIN 0x0006 /*! Minimum connection interval */ -#define HCI_CONN_INTERVAL_MAX 0x0C80 /*! Maximum connection interval */ -#define HCI_CONN_LATENCY_MAX 0x01F3 /*! Maximum connection latency */ -#define HCI_SUP_TIMEOUT_MIN 0x000A /*! Minimum supervision timeout */ -#define HCI_SUP_TIMEOUT_MAX 0x0C80 /*! Maximum supervision timeout */ - -/*! Connection event parameters */ -#define HCI_ROLE_MASTER 0 /*! Role is master */ -#define HCI_ROLE_SLAVE 1 /*! Role is slave */ -#define HCI_CLOCK_500PPM 0x00 /*! 500 ppm clock accuracy */ -#define HCI_CLOCK_250PPM 0x01 /*! 250 ppm clock accuracy */ -#define HCI_CLOCK_150PPM 0x02 /*! 150 ppm clock accuracy */ -#define HCI_CLOCK_100PPM 0x03 /*! 100 ppm clock accuracy */ -#define HCI_CLOCK_75PPM 0x04 /*! 75 ppm clock accuracy */ -#define HCI_CLOCK_50PPM 0x05 /*! 50 ppm clock accuracy */ -#define HCI_CLOCK_30PPM 0x06 /*! 30 ppm clock accuracy */ -#define HCI_CLOCK_20PPM 0x07 /*! 20 ppm clock accuracy */ - -/*! Advertising report event parameters */ -#define HCI_ADV_CONN_UNDIRECT 0x00 /*! Connectable undirected advertising */ -#define HCI_ADV_CONN_DIRECT 0x01 /*! Connectable directed advertising */ -#define HCI_ADV_DISC_UNDIRECT 0x02 /*! Discoverable undirected advertising */ -#define HCI_ADV_NONCONN_UNDIRECT 0x03 /*! Non-connectable undirected advertising */ -#define HCI_ADV_SCAN_RESPONSE 0x04 /*! Scan response */ - -/*! Misc command parameters */ -#define HCI_READ_TX_PWR_CURRENT 0 /*! Read current tx power */ -#define HCI_READ_TX_PWR_MAX 1 /*! Read maximum tx power */ -#define HCI_TX_PWR_MIN -30 /*! Minimum tx power dBm */ -#define HCI_TX_PWR_MAX 20 /*! Maximum tx power dBm */ -#define HCI_VERSION 6 /*! HCI specification version */ -#define HCI_RSSI_MIN -127 /*! Minimum RSSI dBm */ -#define HCI_RSSI_MAX 20 /*! Maximum RSSI dBm */ -#define HCI_ADDR_TYPE_PUBLIC 0 /*! Public device address */ -#define HCI_ADDR_TYPE_RANDOM 1 /*! Random device address */ -#define HCI_ADDR_TYPE_PUBLIC_IDENTITY 2 /*! Public identity address. */ -#define HCI_ADDR_TYPE_RANDOM_IDENTITY 3 /*! Random identity address. */ -#define HCI_FILT_NONE 0 /*! Accept all advertising packets */ -#define HCI_FILT_WHITE_LIST 1 /*! Accept from While List only */ -#define HCI_FILT_RES_INIT 2 /*! Accept directed advertisements with RPAs */ -#define HCI_FILT_WHITE_LIST_RES_INIT 3 /*! Accept from White List or directed advertisements with RPAs */ -#define HCI_ROLE_MASTER 0 /*! Role is master */ -#define HCI_ROLE_SLAVE 1 /*! Role is slave */ - -/*! Parameter lengths */ -#define HCI_EVT_MASK_LEN 8 /*! Length of event mask byte array */ -#define HCI_EVT_MASK_PAGE_2_LEN 8 /*! Length of event mask page 2 byte array */ -#define HCI_LE_EVT_MASK_LEN 8 /*! Length of LE event mask byte array */ -#define HCI_FEAT_LEN 8 /*! Length of features byte array */ -#define HCI_ADV_DATA_LEN 31 /*! Length of advertising data */ -#define HCI_SCAN_DATA_LEN 31 /*! Length of scan response data */ -#define HCI_CHAN_MAP_LEN 5 /*! Length of channel map byte array */ -#define HCI_KEY_LEN 16 /*! Length of encryption key */ -#define HCI_ENCRYPT_DATA_LEN 16 /*! Length of data used in encryption */ -#define HCI_RAND_LEN 8 /*! Length of random number */ -#define HCI_LE_STATES_LEN 8 /*! Length of LE states byte array */ -#define HCI_P256_KEY_LEN 64 /*! Length of P256 key */ -#define HCI_DH_KEY_LEN 32 /*! Length of DH Key */ - -/*! Wicentric company ID */ -#define HCI_ID_WICENTRIC 0x005F - -#ifdef __cplusplus -}; -#endif - -#endif /* HCI_DEFS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/cfg/cfg_stack.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/cfg/cfg_stack.h deleted file mode 100644 index 0e948599267..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/cfg/cfg_stack.h +++ /dev/null @@ -1,80 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file cfg_stack.h - * - * \brief Stack configuration. - * - * $Date: 2015-06-12 04:19:18 -0700 (Fri, 12 Jun 2015) $ - * $Revision: 3061 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef CFG_STACK_H -#define CFG_STACK_H - - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - HCI -**************************************************************************************************/ - -/*! Vendor specific targets */ -#define HCI_VS_GENERIC 0 -#define HCI_VS_EMM 1 - -/*! Vendor specific target configuration */ -#ifndef HCI_VS_TARGET -#define HCI_VS_TARGET HCI_VS_GENERIC -#endif - -/************************************************************************************************** - DM -**************************************************************************************************/ - -/*! Maximum number of connections */ -#ifndef DM_CONN_MAX -#define DM_CONN_MAX 3 -#endif - -/************************************************************************************************** - L2C -**************************************************************************************************/ - -/*! Maximum number of connection oriented channels */ -#ifndef L2C_COC_CHAN_MAX -#define L2C_COC_CHAN_MAX 8 -#endif - -/*! Maximum number of connection oriented channel registered clients */ -#ifndef L2C_COC_REG_MAX -#define L2C_COC_REG_MAX 4 -#endif - -/************************************************************************************************** - ATT -**************************************************************************************************/ - -/************************************************************************************************** - SMP -**************************************************************************************************/ - - - -#ifdef __cplusplus -}; -#endif - -#endif /* CFG_STACK_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_api.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_api.h deleted file mode 100644 index 9fcfbbf6d62..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_api.h +++ /dev/null @@ -1,942 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file att_api.h - * - * \brief Attribute protocol client and server API. - * - * $Date: 2016-01-06 07:40:44 -0800 (Wed, 06 Jan 2016) $ - * $Revision: 5284 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef ATT_API_H -#define ATT_API_H - -#include "wsf_timer.h" -#include "att_defs.h" -#include "att_uuid.h" -#include "dm_api.h" -#include "cfg_stack.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! ATT server attribute settings */ -#define ATTS_SET_UUID_128 0x01 /*! Set if the UUID is 128 bits in length */ -#define ATTS_SET_WRITE_CBACK 0x02 /*! Set if the group callback is executed when - this attribute is written by a client device */ -#define ATTS_SET_READ_CBACK 0x04 /*! Set if the group callback is executed when - this attribute is read by a client device */ -#define ATTS_SET_VARIABLE_LEN 0x08 /*! Set if the attribute has a variable length */ -#define ATTS_SET_ALLOW_OFFSET 0x10 /*! Set if writes are allowed with an offset */ -#define ATTS_SET_CCC 0x20 /*! Set if the attribute is a client characteristic - configuration descriptor */ -#define ATTS_SET_ALLOW_SIGNED 0x40 /*! Set if signed writes are allowed */ -#define ATTS_SET_REQ_SIGNED 0x80 /*! Set if signed writes are required if link - is not encrypted */ - -/*! ATT server attribute permissions */ -#define ATTS_PERMIT_READ 0x01 /*! Set if attribute can be read */ -#define ATTS_PERMIT_READ_AUTH 0x02 /*! Set if attribute read requires authentication */ -#define ATTS_PERMIT_READ_AUTHORIZ 0x04 /*! Set if attribute read requires authorization */ -#define ATTS_PERMIT_READ_ENC 0x08 /*! Set if attribute read requires encryption */ -#define ATTS_PERMIT_WRITE 0x10 /*! Set if attribute can be written */ -#define ATTS_PERMIT_WRITE_AUTH 0x20 /*! Set if attribute write requires authentication */ -#define ATTS_PERMIT_WRITE_AUTHORIZ 0x40 /*! Set if attribute write requires authorization */ -#define ATTS_PERMIT_WRITE_ENC 0x80 /*! Set if attribute write requires encryption */ - -/*! ATT client characteristic discovery and configuration settings */ -#define ATTC_SET_UUID_128 0x01 /*! Set if the UUID is 128 bits in length */ -#define ATTC_SET_REQUIRED 0x02 /*! Set if characteristic must be discovered */ -#define ATTC_SET_DESCRIPTOR 0x04 /*! Set if this is a characteristic descriptor */ - -/*! ATT callback events */ -#define ATT_CBACK_START 0x02 /*! ATT callback event starting value */ -enum /*! Internal note: event values match method values */ -{ - /*! ATT client callback events */ - ATTC_FIND_INFO_RSP = ATT_CBACK_START, /*! Find information response */ - ATTC_FIND_BY_TYPE_VALUE_RSP, /*! Find by type value response */ - ATTC_READ_BY_TYPE_RSP, /*! Read by type value response */ - ATTC_READ_RSP, /*! Read response */ - ATTC_READ_LONG_RSP, /*! Read long response */ - ATTC_READ_MULTIPLE_RSP, /*! Read multiple response */ - ATTC_READ_BY_GROUP_TYPE_RSP, /*! Read group type response */ - ATTC_WRITE_RSP, /*! Write response */ - ATTC_WRITE_CMD_RSP, /*! Write command response */ - ATTC_PREPARE_WRITE_RSP, /*! Prepare write response */ - ATTC_EXECUTE_WRITE_RSP, /*! Execute write response */ - ATTC_HANDLE_VALUE_NTF, /*! Handle value notification */ - ATTC_HANDLE_VALUE_IND, /*! Handle value indication */ - /*! ATT server callback events */ - ATTS_HANDLE_VALUE_CNF, /*! Handle value confirmation */ - ATTS_CCC_STATE_IND /*! Client chracteristic configuration state change */ -}; - -/*! ATT callback events */ -#define ATT_CBACK_END ATTS_CCC_STATE_IND /*! ATT callback event ending value */ - -/*! Base value for HCI error status values passed through ATT */ -#define ATT_HCI_ERR_BASE 0x20 - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Configurable parameters */ -typedef struct -{ - wsfTimerTicks_t discIdleTimeout; /*! ATT server service discovery connection idle timeout in seconds */ - uint16_t mtu; /*! desired ATT MTU */ - uint8_t transTimeout; /*! transcation timeout in seconds */ - uint8_t numPrepWrites; /*! number of queued prepare writes supported by server */ -} attCfg_t; - -/*! - * Attribute server data types - */ - -/*! Attribute structure */ -typedef struct -{ - uint8_t const *pUuid; /*! Pointer to the attribute's UUID */ - uint8_t *pValue; /*! Pointer to the attribute's value */ - uint16_t *pLen; /*! Pointer to the length of the attribute's value */ - uint16_t maxLen; /*! Maximum length of attribute's value */ - uint8_t settings; /*! Attribute settings */ - uint8_t permissions; /*! Attribute permissions */ -} attsAttr_t; - -/*! Attribute group read callback */ -typedef uint8_t (*attsReadCback_t)(dmConnId_t connId, uint16_t handle, uint8_t operation, - uint16_t offset, attsAttr_t *pAttr); - -/*! Attribute group write callback */ -typedef uint8_t (*attsWriteCback_t)(dmConnId_t connId, uint16_t handle, uint8_t operation, - uint16_t offset, uint16_t len, uint8_t *pValue, - attsAttr_t *pAttr); - -/*! Attribute group */ -typedef struct attsGroup_tag -{ - struct attsGroup_tag *pNext; /*! For internal use only */ - attsAttr_t *pAttr; /*! Pointer to attribute list for this group */ - attsReadCback_t readCback; /*! Read callback function */ - attsWriteCback_t writeCback; /*! Write callback function */ - uint16_t startHandle; /*! The handle of the first attribute in this group */ - uint16_t endHandle; /*! The handle of the last attribute in this group */ -} attsGroup_t; - -/*! Client characteristc configuration settings */ -typedef struct -{ - uint16_t handle; /*! Client characteristc configuration descriptor handle */ - uint16_t valueRange; /*! Acceptable value range of the descriptor value */ - uint8_t secLevel; /*! Security level of characteristic value */ -} attsCccSet_t; - -/*! ATT client structure for characteristic and descriptor discovery */ -typedef struct attcDiscChar_tag -{ - uint8_t const *pUuid; /*! Pointer to UUID */ - uint8_t settings; /*! Characteristic discovery settings */ -} attcDiscChar_t; - -/*! ATT client structure for characteristic and descriptor configuration */ -typedef struct -{ - uint8_t const *pValue; /*! Pointer to default value or NULL */ - uint8_t valueLen; /*! Default value length */ - uint8_t hdlIdx; /*! Index of its handle in handle list */ -} attcDiscCfg_t; - -/*! ATT client discovery control block */ -typedef struct -{ - attcDiscChar_t **pCharList; /*! Characterisic list for discovery */ - uint16_t *pHdlList; /*! Characteristic handle list */ - attcDiscCfg_t *pCfgList; /*! Characterisic list for configuration */ - uint8_t charListLen; /*! Characteristic and handle list length */ - uint8_t cfgListLen; /*! Configuration list length */ - - /* the following are for internal use only */ - uint16_t svcStartHdl; - uint16_t svcEndHdl; - uint8_t charListIdx; - uint8_t endHdlIdx; -} attcDiscCb_t; - -/*! - * ATT callback parameters: - * - * \param hdr.event Callback event - * \param hdr.param DM connection ID - * \param hdr.status Event status: ATT_SUCCESS or error status - * \param pValue Pointer to value data, valid if valueLen > 0 - * \param valueLen Length of value data - * \param handle Attribute handle - */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header structure */ - uint8_t *pValue; /*! Value */ - uint16_t valueLen; /*! Value length */ - uint16_t handle; /*! Attribute handle */ - bool_t continuing; /*! TRUE if more response packets expected */ -} attEvt_t; - -/*! ATTS client characteristic configuration callback structure */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header structure */ - uint16_t handle; /*! CCCD handle */ - uint16_t value; /*! CCCD value */ - uint8_t idx; /*! CCCD settings index */ -} attsCccEvt_t; - -/*! ATT callback type */ -typedef void (*attCback_t)(attEvt_t *pEvt); - -/*! ATTS authorization callback type */ -typedef uint8_t (*attsAuthorCback_t)(dmConnId_t connId, uint8_t permit, uint16_t handle); - -/*! ATTS client characteristic configuration callback */ -typedef void (*attsCccCback_t)(attsCccEvt_t *pEvt); - -/************************************************************************************************** - Global Variables -**************************************************************************************************/ - -/*! Configuration pointer */ -extern attCfg_t *pAttCfg; - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn AttRegister - * - * \brief Register a callback with ATT. - * - * \param cback Client callback function. - * - * \return None. - */ -/*************************************************************************************************/ -void AttRegister(attCback_t cback); - -/*************************************************************************************************/ -/*! - * \fn AttConnRegister - * - * \brief Register a connection callback with ATT. The callback is typically used to - * manage the attribute server database. - * - * \param cback Client callback function. - * - * \return None. - */ -/*************************************************************************************************/ -void AttConnRegister(dmCback_t cback); - - -/*************************************************************************************************/ -/*! - * \fn AttGetMtu - * - * \brief Get the attribute protocol MTU of a connection. - * - * \param connId DM connection ID. - * - * \return MTU of the connection. - */ -/*************************************************************************************************/ -uint16_t AttGetMtu(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn AttsInit - * - * \brief Initialize ATT server. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsInit(void); - -/*************************************************************************************************/ -/*! - * \fn AttsIndInit - * - * \brief Initialize ATT server for indications/notifications. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsIndInit(void); - -/*************************************************************************************************/ -/*! - * \fn AttsSignInit - * - * \brief Initialize ATT server for data signing. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsSignInit(void); - -/*************************************************************************************************/ -/*! - * \fn AttsAuthorRegister - * - * \brief Register an authorization callback with the attribute server. - * - * \param cback Client callback function. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsAuthorRegister(attsAuthorCback_t cback); - -/*************************************************************************************************/ -/*! - * \fn AttsAddGroup - * - * \brief Add an attribute group to the attribute server. - * - * \param pGroup Pointer to an attribute group structure. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsAddGroup(attsGroup_t *pGroup); - -/*************************************************************************************************/ -/*! - * \fn AttsRemoveGroup - * - * \brief Remove an attribute group from the attribute server. - * - * \param startHandle Start handle of attribute group to be removed. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsRemoveGroup(uint16_t startHandle); - -/*************************************************************************************************/ -/*! - * \fn AttsSetAttr - * - * \brief Set an attribute value in the attribute server. - * - * \param handle Attribute handle. - * \param valueLen Attribute length. - * \param pValue Attribute value. - * - * \return ATT_SUCCESS if successful otherwise error. - */ -/*************************************************************************************************/ -uint8_t AttsSetAttr(uint16_t handle, uint16_t valueLen, uint8_t *pValue); - -/*************************************************************************************************/ -/*! - * \fn AttsGetAttr - * - * \brief Get an attribute value in the attribute server. - * - * \param handle Attribute handle. - * \param pLen Returned attribute length pointer. - * \param pValue Returned attribute value pointer. - * - * \return ATT_SUCCESS if successful otherwise error. - * \return This function returns the attribute length in pLen and a pointer to the attribute - * value in pValue. - */ -/*************************************************************************************************/ -uint8_t AttsGetAttr(uint16_t handle, uint16_t *pLen, uint8_t **pValue); - -/*************************************************************************************************/ -/*! - * \fn AttsHandleValueInd - * - * \brief Send an attribute protocol Handle Value Indication. - * - * \param connId DM connection ID. - * \param handle Attribute handle. - * \param valueLen Length of value data. - * \param pValue Pointer to value data. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsHandleValueInd(dmConnId_t connId, uint16_t handle, uint16_t valueLen, uint8_t *pValue); - -/*************************************************************************************************/ -/*! - * \fn AttsHandleValueNtf - * - * \brief Send an attribute protocol Handle Value Notification. - * - * \param connId DM connection ID. - * \param handle Attribute handle. - * \param valueLen Length of value data. - * \param pValue Pointer to value data. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsHandleValueNtf(dmConnId_t connId, uint16_t handle, uint16_t valueLen, uint8_t *pValue); - -/*************************************************************************************************/ -/*! - * \fn AttsCccRegister - * - * \brief Register the utility service for managing client characteristic - * configuration descriptors. This function is typically called once on - * system initialization. - * - * \param setLen Length of settings array. - * \param pSet Array of CCC descriptor settings. - * \param cback Client callback function. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsCccRegister(uint8_t setLen, attsCccSet_t *pSet, attsCccCback_t cback); - -/*************************************************************************************************/ -/*! - * \fn AttsCccInitTable - * - * \brief Initialize the client characteristic configuration descriptor value table for a - * connection. The table is initialized with the values from pCccTbl. If pCccTbl - * is NULL the table will be initialized to zero. - * - * This function must be called when a connection is established or when a - * device is bonded. - * - * \param connId DM connection ID. - * \param pCccTbl Pointer to the descriptor value array. The length of the array - * must equal the value of setLen passed to AttsCccRegister(). - * - * \return None. - */ -/*************************************************************************************************/ -void AttsCccInitTable(dmConnId_t connId, uint16_t *pCccTbl); - -/*************************************************************************************************/ -/*! - * \fn AttsCccClearTable - * - * \brief Clear and deallocate the client characteristic configuration descriptor value - * table for a connection. This function must be called when a connection is closed. - * - * \param connId DM connection ID. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsCccClearTable(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn AttsCccGet - * - * \brief Get the value of a client characteristic configuration descriptor by its index. - * If not found, return zero. - * - * \param connId DM connection ID. - * \param idx Index of descriptor in CCC descriptor handle table. - * - * \return Value of the descriptor. - */ -/*************************************************************************************************/ -uint16_t AttsCccGet(dmConnId_t connId, uint8_t idx); - -/*************************************************************************************************/ -/*! - * \fn AttsCccSet - * - * \brief Set the value of a client characteristic configuration descriptor by its index. - * - * \param connId DM connection ID. - * \param idx Index of descriptor in CCC descriptor handle table. - * \param value Value of the descriptor. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsCccSet(dmConnId_t connId, uint8_t idx, uint16_t value); - -/*************************************************************************************************/ -/*! - * \fn AttsCccEnabled - * - * \brief Check if a client characteristic configuration descriptor is enabled and if - * the characteristic's security level has been met. - * - * \param connId DM connection ID. - * \param idx Index of descriptor in CCC descriptor handle table. - * - * \return Value of the descriptor if security level is met, otherwise zero. - */ -/*************************************************************************************************/ -uint16_t AttsCccEnabled(dmConnId_t connId, uint8_t idx); - -/*************************************************************************************************/ -/*! - * \fn AttsSetCsrk - * - * \brief Set the peer's data signing key on this connection. This function - * is typically called from the ATT connection callback when the connection is - * established. The caller is responsible for maintaining the memory that - * contains the key. - * - * \param connId DM connection ID. - * \param pCsrk Pointer to data signing key (CSRK). - * - * \return None. - */ -/*************************************************************************************************/ -void AttsSetCsrk(dmConnId_t connId, uint8_t *pCsrk); - -/*************************************************************************************************/ -/*! - * \fn AttsSetSignCounter - * - * \brief Set the peer's sign counter on this connection. This function - * is typically called from the ATT connection callback when the connection is - * established. ATT maintains the value of the sign counter internally and - * sets the value when a signed packet is successfully received. - * - * \param connId DM connection ID. - * \param signCounter Sign counter. - * - * \return None. - */ -/*************************************************************************************************/ -void AttsSetSignCounter(dmConnId_t connId, uint32_t signCounter); - -/*************************************************************************************************/ -/*! - * \fn AttsGetSignCounter - * - * \brief Get the current value peer's sign counter on this connection. This function - * is typically called from the ATT connection callback when the connection is - * closed so the application can store the sign counter for use on future - * connections. - * - * \param connId DM connection ID. - * - * \return Sign counter. - */ -/*************************************************************************************************/ -uint32_t AttsGetSignCounter(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn AttcInit - * - * \brief Initialize ATT client. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcInit(void); - -/*************************************************************************************************/ -/*! - * \fn AttcSignInit - * - * \brief Initialize ATT client for data signing. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcSignInit(void); - -/*************************************************************************************************/ -/*! - * \fn AttcFindInfoReq - * - * \brief Initiate an attribute protocol Find Information Request. - * - * \param connId DM connection ID. - * \param startHandle Attribute start handle. - * \param endHandle Attribute end handle. - * \param continuing TRUE if ATTC continues sending requests until complete. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcFindInfoReq(dmConnId_t connId, uint16_t startHandle, uint16_t endHandle, bool_t continuing); - -/*************************************************************************************************/ -/*! - * \fn AttcFindByTypeValueReq - * - * \brief Initiate an attribute protocol Find By Type Value Request. - * - * \param connId DM connection ID. - * \param startHandle Attribute start handle. - * \param endHandle Attribute end handle. - * \param uuid16 16-bit UUID to find. - * \param valueLen Length of value data. - * \param pValue Pointer to value data. - * \param continuing TRUE if ATTC continues sending requests until complete. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcFindByTypeValueReq(dmConnId_t connId, uint16_t startHandle, uint16_t endHandle, - uint16_t uuid16, uint16_t valueLen, uint8_t *pValue, bool_t continuing); - -/*************************************************************************************************/ -/*! - * \fn AttcReadByTypeReq - * - * \brief Initiate an attribute protocol Read By Type Request. - * - * \param connId DM connection ID. - * \param startHandle Attribute start handle. - * \param endHandle Attribute end handle. - * \param uuidLen Length of UUID (2 or 16). - * \param pUuid Pointer to UUID data. - * \param continuing TRUE if ATTC continues sending requests until complete. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcReadByTypeReq(dmConnId_t connId, uint16_t startHandle, uint16_t endHandle, - uint8_t uuidLen, uint8_t *pUuid, bool_t continuing); - -/*************************************************************************************************/ -/*! - * \fn AttcReadReq - * - * \brief Initiate an attribute protocol Read Request. - * - * \param connId DM connection ID. - * \param handle Attribute handle. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcReadReq(dmConnId_t connId, uint16_t handle); - -/*************************************************************************************************/ -/*! - * \fn AttcReadLongReq - * - * \brief Initiate an attribute protocol Read Long Request. - * - * \param connId DM connection ID. - * \param handle Attribute handle. - * \param offset Read attribute data starting at this offset. - * \param continuing TRUE if ATTC continues sending requests until complete. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcReadLongReq(dmConnId_t connId, uint16_t handle, uint16_t offset, bool_t continuing); - -/*************************************************************************************************/ -/*! - * \fn AttcReadMultipleReq - * - * \brief Initiate an attribute protocol Read Multiple Request. - * - * \param connId DM connection ID. - * \param numHandles Number of handles in attribute handle list. - * \param pHandles List of attribute handles. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcReadMultipleReq(dmConnId_t connId, uint8_t numHandles, uint16_t *pHandles); - -/*************************************************************************************************/ -/*! - * \fn AttcReadByGroupTypeReq - * - * \brief Initiate an attribute protocol Read By Group Type Request. - * - * \param connId DM connection ID. - * \param startHandle Attribute start handle. - * \param endHandle Attribute end handle. - * \param uuidLen Length of UUID (2 or 16). - * \param pUuid Pointer to UUID data. - * \param continuing TRUE if ATTC continues sending requests until complete. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcReadByGroupTypeReq(dmConnId_t connId, uint16_t startHandle, uint16_t endHandle, - uint8_t uuidLen, uint8_t *pUuid, bool_t continuing); - -/*************************************************************************************************/ -/*! - * \fn AttcWriteReq - * - * \brief Initiate an attribute protocol Write Request. - * - * \param connId DM connection ID. - * \param handle Attribute handle. - * \param valueLen Length of value data. - * \param pValue Pointer to value data. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcWriteReq(dmConnId_t connId, uint16_t handle, uint16_t valueLen, uint8_t *pValue); - -/*************************************************************************************************/ -/*! - * \fn AttcWriteCmd - * - * \brief Initiate an attribute protocol Write Command. - * - * \param connId DM connection ID. - * \param handle Attribute handle. - * \param valueLen Length of value data. - * \param pValue Pointer to value data. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcWriteCmd(dmConnId_t connId, uint16_t handle, uint16_t valueLen, uint8_t *pValue); - -/*************************************************************************************************/ -/*! - * \fn AttcSignedWriteCmd - * - * \brief Initiate an attribute protocol signed Write Command. - * - * \param connId DM connection ID. - * \param handle Attribute handle. - * \param signCounter Value of the sign counter. - * \param valueLen Length of value data. - * \param pValue Pointer to value data. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcSignedWriteCmd(dmConnId_t connId, uint16_t handle, uint32_t signCounter, - uint16_t valueLen, uint8_t *pValue); - -/*************************************************************************************************/ -/*! - * \fn AttcPrepareWriteReq - * - * \brief Initiate an attribute protocol Prepare Write Request. - * - * \param connId DM connection ID. - * \param handle Attribute handle. - * \param offset Write attribute data starting at this offset. - * \param valueLen Length of value data. - * \param pValue Pointer to value data. - * \param valueByRef TRUE if pValue data is accessed by reference rather than copied. - * \param continuing TRUE if ATTC continues sending requests until complete. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcPrepareWriteReq(dmConnId_t connId, uint16_t handle, uint16_t offset, uint16_t valueLen, - uint8_t *pValue, bool_t valueByRef, bool_t continuing); - -/*************************************************************************************************/ -/*! - * \fn AttcExecuteWriteReq - * - * \brief Initiate an attribute protocol Execute Write Request. - * - * \param connId DM connection ID. - * \param writeAll TRUE to write all queued writes, FALSE to cancel all queued writes. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcExecuteWriteReq(dmConnId_t connId, bool_t writeAll); - -/*************************************************************************************************/ -/*! - * \fn AttcCancelReq - * - * \brief Cancel an attribute protocol request in progress. - * - * \param connId DM connection ID. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcCancelReq(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn AttcDiscService - * - * \brief This utility function discovers the given service on a peer device. Function - * AttcFindByTypeValueReq() is called to initiate the discovery procedure. - * - * \param connId DM connection ID. - * \param pCb Pointer to discovery control block. - * \param uuidLen Length of service UUID (2 or 16). - * \param pUuid Pointer to service UUID. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcDiscService(dmConnId_t connId, attcDiscCb_t *pCb, uint8_t uuidLen, uint8_t *pUuid); - -/*************************************************************************************************/ -/*! - * \fn AttcDiscServiceCmpl - * - * \brief This utility function processes a service discovery result. It should be called - * when an ATTC_FIND_BY_TYPE_VALUE_RSP callback event is received after service - * discovery is initiated by calling AttcDiscService(). - * - * \param pCb Pointer to discovery control block. - * \param pMsg ATT callback event message. - * - * \return ATT_SUCCESS if successful otherwise error. - */ -/*************************************************************************************************/ -uint8_t AttcDiscServiceCmpl(attcDiscCb_t *pCb, attEvt_t *pMsg); - -/*************************************************************************************************/ -/*! - * \fn AttcDiscCharStart - * - * \brief This utility function starts characteristic and characteristic descriptor - * discovery for a service on a peer device. The service must have been previously - * discovered by calling AttcDiscService() and AttcDiscServiceCmpl(). - * - * \param connId DM connection ID. - * \param pCb Pointer to discovery control block. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcDiscCharStart(dmConnId_t connId, attcDiscCb_t *pCb); - -/*************************************************************************************************/ -/*! - * \fn AttcDiscCharCmpl - * - * \brief This utility function processes a characteristic discovery result. It should be - * called when an ATTC_READ_BY_TYPE_RSP or ATTC_FIND_INFO_RSP callback event is - * received after characteristic discovery is initiated by calling AttcDiscCharStart(). - * - * \param pCb Pointer to discovery control block. - * \param pMsg ATT callback event message. - * - * \return ATT_CONTINUING if successful and the discovery procedure is continuing. - * ATT_SUCCESS if the discovery procedure completed successfully. - * Otherwise the discovery procedure failed. - */ -/*************************************************************************************************/ -uint8_t AttcDiscCharCmpl(attcDiscCb_t *pCb, attEvt_t *pMsg); - -/*************************************************************************************************/ -/*! - * \fn AttcDiscConfigStart - * - * \brief This utility function starts characteristic configuration for characteristics on a - * peer device. The characteristics must have been previously discovered by calling - * AttcDiscCharStart() and AttcDiscCharCmpl(). - * - * \param connId DM connection ID. - * \param pCb Pointer to discovery control block. - * - * \return ATT_CONTINUING if successful and configuration procedure is continuing. - * ATT_SUCCESS if nothing to configure. - */ -/*************************************************************************************************/ -uint8_t AttcDiscConfigStart(dmConnId_t connId, attcDiscCb_t *pCb); - -/*************************************************************************************************/ -/*! - * \fn AttcDiscConfigCmpl - * - * \brief This utility function initiates the next characteristic configuration procedure. - * It should be called when an ATTC_READ_RSP or ATTC_WRITE_RSP callback event is received - * after characteristic configuration is initiated by calling AttcDiscConfigStart(). - * - * \param connId DM connection ID. - * \param pCb Pointer to discovery control block. - * - * \return ATT_CONTINUING if successful and configuration procedure is continuing. - * ATT_SUCCESS if configuration procedure completed successfully. - */ -/*************************************************************************************************/ -uint8_t AttcDiscConfigCmpl(dmConnId_t connId, attcDiscCb_t *pCb); - -/*************************************************************************************************/ -/*! - * \fn AttcDiscConfigResume - * - * \brief This utility function resumes the characteristic configuration procedure. It can - * be called when an ATTC_READ_RSP or ATTC_WRITE_RSP callback event is received - * with failure status to attempt the read or write procedure again. - * - * \param connId DM connection ID. - * \param pCb Pointer to discovery control block. - * - * \return ATT_CONTINUING if successful and configuration procedure is continuing. - * ATT_SUCCESS if configuration procedure completed successfully. - */ -/*************************************************************************************************/ -uint8_t AttcDiscConfigResume(dmConnId_t connId, attcDiscCb_t *pCb); - -/*************************************************************************************************/ -/*! - * \fn AttcMtuReq - * - * \brief For internal use only. - * - * \param connId DM connection ID. - * \param mtu Attribute protocol MTU. - * - * \return None. - */ -/*************************************************************************************************/ -void AttcMtuReq(dmConnId_t connId, uint16_t mtu); - -/*************************************************************************************************/ -/*! - * \fn AttsErrorTest - * - * \brief For testing purposes only. - * - * \param status ATT status - * - * \return None. - */ -/*************************************************************************************************/ -void AttsErrorTest(uint8_t status); - -#ifdef __cplusplus -}; -#endif - -#endif /* ATT_API_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_defs.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_defs.h deleted file mode 100644 index f33962fe825..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_defs.h +++ /dev/null @@ -1,222 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file att_defs.h - * - * \brief Attribute protocol constants and definitions from the Bluetooth specification. - * - * $Date: 2015-09-10 14:58:31 -0700 (Thu, 10 Sep 2015) $ - * $Revision: 3838 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef ATT_DEFS_H -#define ATT_DEFS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Attribute PDU format */ -#define ATT_HDR_LEN 1 /*! Attribute PDU header length */ -#define ATT_AUTH_SIG_LEN 12 /*! Authentication signature length */ -#define ATT_DEFAULT_MTU 23 /*! Default value of ATT_MTU */ -#define ATT_MAX_MTU 517 /*! Maximum value of ATT_MTU */ -#define ATT_DEFAULT_PAYLOAD_LEN 20 /*! Default maximum payload length for most PDUs */ - -/*! Attribute value parameters */ -#define ATT_VALUE_MAX_LEN 512 /*! Maximum attribute value length */ -#define ATT_VALUE_MAX_OFFSET 511 /*! Maximum attribute value offset */ - -/*! Transaction timeout */ -#define ATT_MAX_TRANS_TIMEOUT 30 /*! Maximum transaction timeout in seconds */ - -/*! Error codes */ -#define ATT_SUCCESS 0x00 /*! Operation successful */ -#define ATT_ERR_HANDLE 0x01 /*! Invalid handle */ -#define ATT_ERR_READ 0x02 /*! Read not permitted */ -#define ATT_ERR_WRITE 0x03 /*! Write not permitted */ -#define ATT_ERR_INVALID_PDU 0x04 /*! Invalid pdu */ -#define ATT_ERR_AUTH 0x05 /*! Insufficient authentication */ -#define ATT_ERR_NOT_SUP 0x06 /*! Request not supported */ -#define ATT_ERR_OFFSET 0x07 /*! Invalid offset */ -#define ATT_ERR_AUTHOR 0x08 /*! Insufficient authorization */ -#define ATT_ERR_QUEUE_FULL 0x09 /*! Prepare queue full */ -#define ATT_ERR_NOT_FOUND 0x0A /*! Attribute not found */ -#define ATT_ERR_NOT_LONG 0x0B /*! Attribute not long */ -#define ATT_ERR_KEY_SIZE 0x0C /*! Insufficient encryption key size */ -#define ATT_ERR_LENGTH 0x0D /*! Invalid attribute value length */ -#define ATT_ERR_UNLIKELY 0x0E /*! Other unlikely error */ -#define ATT_ERR_ENC 0x0F /*! Insufficient encryption */ -#define ATT_ERR_GROUP_TYPE 0x10 /*! Unsupported group type */ -#define ATT_ERR_RESOURCES 0x11 /*! Insufficient resources */ -#define ATT_ERR_CCCD 0xFD /*! CCCD improperly configured */ -#define ATT_ERR_IN_PROGRESS 0xFE /*! Procedure already in progress */ -#define ATT_ERR_RANGE 0xFF /*! Value out of range */ - -/*! Proprietary internal error codes */ -#define ATT_ERR_MEMORY 0x70 /*! Out of memory */ -#define ATT_ERR_TIMEOUT 0x71 /*! Transaction timeout */ -#define ATT_ERR_OVERFLOW 0x72 /*! Transaction overflow */ -#define ATT_ERR_INVALID_RSP 0x73 /*! Invalid response PDU */ -#define ATT_ERR_CANCELLED 0x74 /*! Request cancelled */ -#define ATT_ERR_UNDEFINED 0x75 /*! Other undefined error */ -#define ATT_ERR_REQ_NOT_FOUND 0x76 /*! Required characteristic not found */ -#define ATT_ERR_MTU_EXCEEDED 0x77 /*! Attribute PDU length exceeded MTU size */ -#define ATT_CONTINUING 0x78 /*! Procedure continuing */ - -/*! Application error codes */ -#define ATT_ERR_VALUE_RANGE 0x80 /*! Value out of range */ - -/*! PDU types */ -#define ATT_PDU_ERR_RSP 0x01 /*! Error response */ -#define ATT_PDU_MTU_REQ 0x02 /*! Exchange mtu request */ -#define ATT_PDU_MTU_RSP 0x03 /*! Exchange mtu response */ -#define ATT_PDU_FIND_INFO_REQ 0x04 /*! Find information request */ -#define ATT_PDU_FIND_INFO_RSP 0x05 /*! Find information response */ -#define ATT_PDU_FIND_TYPE_REQ 0x06 /*! Find by type value request */ -#define ATT_PDU_FIND_TYPE_RSP 0x07 /*! Find by type value response */ -#define ATT_PDU_READ_TYPE_REQ 0x08 /*! Read by type request */ -#define ATT_PDU_READ_TYPE_RSP 0x09 /*! Read by type response */ -#define ATT_PDU_READ_REQ 0x0A /*! Read request */ -#define ATT_PDU_READ_RSP 0x0B /*! Read response */ -#define ATT_PDU_READ_BLOB_REQ 0x0C /*! Read blob request */ -#define ATT_PDU_READ_BLOB_RSP 0x0D /*! Read blob response */ -#define ATT_PDU_READ_MULT_REQ 0x0E /*! Read multiple request */ -#define ATT_PDU_READ_MULT_RSP 0x0F /*! Read multiple response */ -#define ATT_PDU_READ_GROUP_TYPE_REQ 0x10 /*! Read by group type request */ -#define ATT_PDU_READ_GROUP_TYPE_RSP 0x11 /*! Read by group type response */ -#define ATT_PDU_WRITE_REQ 0x12 /*! Write request */ -#define ATT_PDU_WRITE_RSP 0x13 /*! Write response */ -#define ATT_PDU_WRITE_CMD 0x52 /*! Write command */ -#define ATT_PDU_SIGNED_WRITE_CMD 0xD2 /*! Signed write command */ -#define ATT_PDU_PREP_WRITE_REQ 0x16 /*! Prepare write request */ -#define ATT_PDU_PREP_WRITE_RSP 0x17 /*! Prepare write response */ -#define ATT_PDU_EXEC_WRITE_REQ 0x18 /*! Execute write request */ -#define ATT_PDU_EXEC_WRITE_RSP 0x19 /*! Execute write response */ -#define ATT_PDU_VALUE_NTF 0x1B /*! Handle value notification */ -#define ATT_PDU_VALUE_IND 0x1D /*! Handle value indication */ -#define ATT_PDU_VALUE_CNF 0x1E /*! Handle value confirmation */ -#define ATT_PDU_MAX 0x1F /*! PDU Maximum */ - -/*! Length of PDU fixed length fields */ -#define ATT_ERR_RSP_LEN 5 -#define ATT_MTU_REQ_LEN 3 -#define ATT_MTU_RSP_LEN 3 -#define ATT_FIND_INFO_REQ_LEN 5 -#define ATT_FIND_INFO_RSP_LEN 2 -#define ATT_FIND_TYPE_REQ_LEN 7 -#define ATT_FIND_TYPE_RSP_LEN 1 -#define ATT_READ_TYPE_REQ_LEN 5 -#define ATT_READ_TYPE_RSP_LEN 2 -#define ATT_READ_REQ_LEN 3 -#define ATT_READ_RSP_LEN 1 -#define ATT_READ_BLOB_REQ_LEN 5 -#define ATT_READ_BLOB_RSP_LEN 1 -#define ATT_READ_MULT_REQ_LEN 1 -#define ATT_READ_MULT_RSP_LEN 1 -#define ATT_READ_GROUP_TYPE_REQ_LEN 5 -#define ATT_READ_GROUP_TYPE_RSP_LEN 2 -#define ATT_WRITE_REQ_LEN 3 -#define ATT_WRITE_RSP_LEN 1 -#define ATT_WRITE_CMD_LEN 3 -#define ATT_SIGNED_WRITE_CMD_LEN (ATT_WRITE_CMD_LEN + ATT_AUTH_SIG_LEN) -#define ATT_PREP_WRITE_REQ_LEN 5 -#define ATT_PREP_WRITE_RSP_LEN 5 -#define ATT_EXEC_WRITE_REQ_LEN 2 -#define ATT_EXEC_WRITE_RSP_LEN 1 -#define ATT_VALUE_NTF_LEN 3 -#define ATT_VALUE_IND_LEN 3 -#define ATT_VALUE_CNF_LEN 1 - -/*! Find information response format */ -#define ATT_FIND_HANDLE_16_UUID 0x01 /*! Handle and 16 bit UUID */ -#define ATT_FIND_HANDLE_128_UUID 0x02 /*! Handle and 128 bit UUID */ - -/*! Execute write request flags */ -#define ATT_EXEC_WRITE_CANCEL 0x00 /*! Cancel all prepared writes */ -#define ATT_EXEC_WRITE_ALL 0x01 /*! Write all pending prepared writes */ - -/*! PDU masks */ -#define ATT_PDU_MASK_SERVER 0x01 /*! Server bit mask */ -#define ATT_PDU_MASK_COMMAND 0x40 /*! Command bit mask */ -#define ATT_PDU_MASK_SIGNED 0x80 /*! Auth signature bit mask */ - -/*! Handles */ -#define ATT_HANDLE_NONE 0x0000 -#define ATT_HANDLE_START 0x0001 -#define ATT_HANDLE_MAX 0xFFFF - -/*! UUID lengths */ -#define ATT_NO_UUID_LEN 0 /*! Length when no UUID is present ;-) */ -#define ATT_16_UUID_LEN 2 /*! Length in bytes of a 16 bit UUID */ -#define ATT_128_UUID_LEN 16 /*! Length in bytes of a 128 bit UUID */ - -/*! GATT characteristic properties */ -#define ATT_PROP_BROADCAST 0x01 /*! Permit broadcasts */ -#define ATT_PROP_READ 0x02 /*! Permit reads */ -#define ATT_PROP_WRITE_NO_RSP 0x04 /*! Permit writes without response */ -#define ATT_PROP_WRITE 0x08 /*! Permit writes with response */ -#define ATT_PROP_NOTIFY 0x10 /*! Permit notifications */ -#define ATT_PROP_INDICATE 0x20 /*! Permit indications */ -#define ATT_PROP_AUTHENTICATED 0x40 /*! Permit signed writes */ -#define ATT_PROP_EXTENDED 0x80 /*! More properties defined in extended properties */ - -/*! GATT characteristic extended properties */ -#define ATT_EXT_PROP_RELIABLE_WRITE 0x0001 /*! Permit reliable writes */ -#define ATT_EXT_PROP_WRITEABLE_AUX 0x0002 /*! Permit write to characteristic descriptor */ - -/*! GATT client characteristic configuration */ -#define ATT_CLIENT_CFG_NOTIFY 0x0001 /*! Notify the value */ -#define ATT_CLIENT_CFG_INDICATE 0x0002 /*! Indicate the value */ - -/*! GATT server characteristic configuration */ -#define ATT_SERVER_CFG_BROADCAST 0x0001 /*! Broadcast the value */ - -/*! GATT characteristic format */ -#define ATT_FORMAT_BOOLEAN 0x01 /*! Boolean */ -#define ATT_FORMAT_2BIT 0x02 /*! Unsigned 2 bit integer */ -#define ATT_FORMAT_NIBBLE 0x03 /*! Unsigned 4 bit integer */ -#define ATT_FORMAT_UINT8 0x04 /*! Unsigned 8 bit integer */ -#define ATT_FORMAT_UINT12 0x05 /*! Unsigned 12 bit integer */ -#define ATT_FORMAT_UINT16 0x06 /*! Unsigned 16 bit integer */ -#define ATT_FORMAT_UINT24 0x07 /*! Unsigned 24 bit integer */ -#define ATT_FORMAT_UINT32 0x08 /*! Unsigned 32 bit integer */ -#define ATT_FORMAT_UINT48 0x09 /*! Unsigned 48 bit integer */ -#define ATT_FORMAT_UINT64 0x0A /*! Unsigned 64 bit integer */ -#define ATT_FORMAT_UINT128 0x0B /*! Unsigned 128 bit integer */ -#define ATT_FORMAT_SINT8 0x0C /*! Signed 8 bit integer */ -#define ATT_FORMAT_SINT12 0x0D /*! Signed 12 bit integer */ -#define ATT_FORMAT_SINT16 0x0E /*! Signed 16 bit integer */ -#define ATT_FORMAT_SINT24 0x0F /*! Signed 24 bit integer */ -#define ATT_FORMAT_SINT32 0x10 /*! Signed 32 bit integer */ -#define ATT_FORMAT_SINT48 0x11 /*! Signed 48 bit integer */ -#define ATT_FORMAT_SINT64 0x12 /*! Signed 64 bit integer */ -#define ATT_FORMAT_SINT128 0x13 /*! Signed 128 bit integer */ -#define ATT_FORMAT_FLOAT32 0x14 /*! IEEE-754 32 bit floating point */ -#define ATT_FORMAT_FLOAT64 0x15 /*! IEEE-754 64 bit floating point */ -#define ATT_FORMAT_SFLOAT 0x16 /*! IEEE-11073 16 bit SFLOAT */ -#define ATT_FORMAT_FLOAT 0x17 /*! IEEE-11073 32 bit FLOAT */ -#define ATT_FORMAT_DUINT16 0x18 /*! IEEE-20601 format */ -#define ATT_FORMAT_UTF8 0x19 /*! UTF-8 string */ -#define ATT_FORMAT_UTF16 0x1A /*! UTF-16 string */ -#define ATT_FORMAT_STRUCT 0x1B /*! Opaque structure */ - -#ifdef __cplusplus -}; -#endif - -#endif /* ATT_DEFS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_handler.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_handler.h deleted file mode 100644 index b733dc629e1..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_handler.h +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file att_handler.h - * - * \brief Interface to ATT event handler. - * - * $Date: 2012-03-29 13:24:04 -0700 (Thu, 29 Mar 2012) $ - * $Revision: 287 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef ATT_HANDLER_H -#define ATT_HANDLER_H - -#include "wsf_os.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn AttHandlerInit - * - * \brief ATT handler init function called during system initialization. - * - * \param handlerID WSF handler ID for ATT. - * - * \return None. - */ -/*************************************************************************************************/ -void AttHandlerInit(wsfHandlerId_t handlerId); - - -/*************************************************************************************************/ -/*! - * \fn AttHandler - * - * \brief WSF event handler for ATT. - * - * \param event WSF event mask. - * \param pMsg WSF message. - * - * \return None. - */ -/*************************************************************************************************/ -void AttHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); - -#ifdef __cplusplus -}; -#endif - -#endif /* ATT_HANDLER_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_uuid.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_uuid.h deleted file mode 100644 index 978a43ec016..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/att_uuid.h +++ /dev/null @@ -1,436 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file att_uuid.h - * - * \brief Attribute protocol UUIDs from the Bluetooth specification. - * - * $Date: 2015-12-10 08:50:10 -0800 (Thu, 10 Dec 2015) $ - * $Revision: 4738 $ - * - * Copyright (c) 2011 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef ATT_UUID_H -#define ATT_UUID_H - -#include "att_defs.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Service UUIDs */ -#define ATT_UUID_GAP_SERVICE 0x1800 /*! Generic Access Profile Service */ -#define ATT_UUID_GATT_SERVICE 0x1801 /*! Generic Attribute Profile Service */ -#define ATT_UUID_IMMEDIATE_ALERT_SERVICE 0x1802 /*! Immediate Alert Service */ -#define ATT_UUID_LINK_LOSS_SERVICE 0x1803 /*! Link Loss Service */ -#define ATT_UUID_TX_POWER_SERVICE 0x1804 /*! Tx Power Service */ -#define ATT_UUID_CURRENT_TIME_SERVICE 0x1805 /*! Current Time Service */ -#define ATT_UUID_REF_TIME_UPDATE_SERVICE 0x1806 /*! Reference Time Update Service */ -#define ATT_UUID_DST_CHANGE_SERVICE 0x1807 /*! Next DST Change Service */ -#define ATT_UUID_GLUCOSE_SERVICE 0x1808 /*! Glucose Service */ -#define ATT_UUID_HEALTH_THERM_SERVICE 0x1809 /*! Health Thermometer Service */ -#define ATT_UUID_DEVICE_INFO_SERVICE 0x180A /*! Device Information Service */ -#define ATT_UUID_NETWORK_AVAIL_SERVICE 0x180B /*! Network Availability Service */ -#define ATT_UUID_WATCHDOG_SERVICE 0x180C /*! Watchdog Service */ -#define ATT_UUID_HEART_RATE_SERVICE 0x180D /*! Heart Rate Service */ -#define ATT_UUID_PHONE_ALERT_SERVICE 0x180E /*! Phone Alert Status Service */ -#define ATT_UUID_BATTERY_SERVICE 0x180F /*! Battery Service */ -#define ATT_UUID_BLOOD_PRESSURE_SERVICE 0x1810 /*! Blood Pressure Service */ -#define ATT_UUID_ALERT_NOTIF_SERVICE 0x1811 /*! Alert Notification Service */ -#define ATT_UUID_HID_SERVICE 0x1812 /*! Human Interface Device Service */ -#define ATT_UUID_SCAN_PARAM_SERVICE 0x1813 /*! Scan Parameter Service */ - -/*! GATT UUIDs */ -#define ATT_UUID_PRIMARY_SERVICE 0x2800 /*! Primary Service */ -#define ATT_UUID_SECONDARY_SERVICE 0x2801 /*! Secondary Service */ -#define ATT_UUID_INCLUDE 0x2802 /*! Include */ -#define ATT_UUID_CHARACTERISTIC 0x2803 /*! Characteristic */ - -/*! Descriptor UUIDs */ -#define ATT_UUID_CHARACTERISTIC_EXT 0x2900 /*! Characteristic Extended Properties */ -#define ATT_UUID_CHAR_USER_DESC 0x2901 /*! Characteristic User Description */ -#define ATT_UUID_CLIENT_CHAR_CONFIG 0x2902 /*! Client Characteristic Configuration */ -#define ATT_UUID_SERVER_CHAR_CONFIG 0x2903 /*! Server Characteristic Configuration */ -#define ATT_UUID_CHAR_PRES_FORMAT 0x2904 /*! Characteristic Presentation Format */ -#define ATT_UUID_AGGREGATE_FORMAT 0x2905 /*! Characteristic Aggregate Format */ -#define ATT_UUID_VALID_RANGE 0x2906 /*! Valid Range */ -#define ATT_UUID_HID_EXT_REPORT_MAPPING 0x2907 /*! HID External Report ID Mapping */ -#define ATT_UUID_HID_REPORT_ID_MAPPING 0x2908 /*! HID Report ID Mapping */ - -/*! Characteristic UUIDs */ -#define ATT_UUID_DEVICE_NAME 0x2A00 /*! Device Name */ -#define ATT_UUID_APPEARANCE 0x2A01 /*! Appearance */ -#define ATT_UUID_PERIPH_PRIVACY_FLAG 0x2A02 /*! Peripheral Privacy Flag */ -#define ATT_UUID_RECONN_ADDR 0x2A03 /*! Reconnection Address */ -#define ATT_UUID_PREF_CONN_PARAM 0x2A04 /*! Peripheral Preferred Connection Parameters */ -#define ATT_UUID_SERVICE_CHANGED 0x2A05 /*! Service Changed */ -#define ATT_UUID_ALERT_LEVEL 0x2A06 /*! Alert Level */ -#define ATT_UUID_TX_POWER_LEVEL 0x2A07 /*! Tx Power Level */ -#define ATT_UUID_DATE_TIME 0x2A08 /*! Date Time */ -#define ATT_UUID_DAY_OF_WEEK 0x2A09 /*! Day of Week */ -#define ATT_UUID_DAY_DATE_TIME 0x2A0A /*! Day Date Time */ -#define ATT_UUID_EXACT_TIME_100 0x2A0B /*! Exact Time 100 */ -#define ATT_UUID_EXACT_TIME_256 0x2A0C /*! Exact Time 256 */ -#define ATT_UUID_DST_OFFSET 0x2A0D /*! DST Offset */ -#define ATT_UUID_TIME_ZONE 0x2A0E /*! Time Zone */ -#define ATT_UUID_LOCAL_TIME_INFO 0x2A0F /*! Local Time Information */ -#define ATT_UUID_SECONDARY_TIME_ZONE 0x2A10 /*! Secondary Time Zone */ -#define ATT_UUID_TIME_WITH_DST 0x2A11 /*! Time with DST */ -#define ATT_UUID_TIME_ACCURACY 0x2A12 /*! Time Accuracy */ -#define ATT_UUID_TIME_SOURCE 0x2A13 /*! Time Source */ -#define ATT_UUID_REFERENCE_TIME_INFO 0x2A14 /*! Reference Time Information */ -#define ATT_UUID_TIME_BROADCAST 0x2A15 /*! Time Broadcast */ -#define ATT_UUID_TIME_UPDATE_CP 0x2A16 /*! Time Update Control Point */ -#define ATT_UUID_TIME_UPDATE_STATE 0x2A17 /*! Time Update State */ -#define ATT_UUID_GLUCOSE_MEAS 0x2A18 /*! Glucose Measurement */ -#define ATT_UUID_BATTERY_LEVEL 0x2A19 /*! Battery Level */ -#define ATT_UUID_BATTERY_POWER_STATE 0x2A1A /*! Battery Power State */ -#define ATT_UUID_BATTERY_LEVEL_STATE 0x2A1B /*! Battery Level State */ -#define ATT_UUID_TEMP_MEAS 0x2A1C /*! Temperature Measurement */ -#define ATT_UUID_TEMP_TYPE 0x2A1D /*! Temperature Type */ -#define ATT_UUID_INTERMEDIATE_TEMP 0x2A1E /*! Intermediate Temperature */ -#define ATT_UUID_TEMP_C 0x2A1F /*! Temperature Celsius */ -#define ATT_UUID_TEMP_F 0x2A20 /*! Temperature Fahrenheit */ -#define ATT_UUID_MEAS_INTERVAL 0x2A21 /*! Measurement Interval */ -#define ATT_UUID_HID_BOOT_KEYBOARD_IN 0x2A22 /*! HID Boot Keyboard In */ -#define ATT_UUID_SYSTEM_ID 0x2A23 /*! System ID */ -#define ATT_UUID_MODEL_NUMBER 0x2A24 /*! Model Number String */ -#define ATT_UUID_SERIAL_NUMBER 0x2A25 /*! Serial Number String */ -#define ATT_UUID_FIRMWARE_REV 0x2A26 /*! Firmware Revision String */ -#define ATT_UUID_HARDWARE_REV 0x2A27 /*! Hardware Revision String */ -#define ATT_UUID_SOFTWARE_REV 0x2A28 /*! Software Revision String */ -#define ATT_UUID_MANUFACTURER_NAME 0x2A29 /*! Manufacturer Name String */ -#define ATT_UUID_11073_CERT_DATA 0x2A2A /*! IEEE 11073-20601 Regulatory Certification Data List */ -#define ATT_UUID_CURRENT_TIME 0x2A2B /*! Current Time */ -#define ATT_UUID_ELEVATION 0x2A2C /*! Elevation */ -#define ATT_UUID_LATITUDE 0x2A2D /*! Latitude */ -#define ATT_UUID_LONGITUDE 0x2A2E /*! Longitude */ -#define ATT_UUID_POSITION_2D 0x2A2F /*! Position 2D */ -#define ATT_UUID_POSITION_3D 0x2A30 /*! Position 3D */ -#define ATT_UUID_VENDOR_ID 0x2A31 /*! Vendor ID */ -#define ATT_UUID_HID_BOOT_KEYBOARD_OUT 0x2A32 /*! HID Boot Keyboard Out */ -#define ATT_UUID_HID_BOOT_MOUSE_IN 0x2A33 /*! HID Boot Mouse In */ -#define ATT_UUID_GLUCOSE_MEAS_CONTEXT 0x2A34 /*! Glucose Measurement Context */ -#define ATT_UUID_BP_MEAS 0x2A35 /*! Blood Pressure Measurement */ -#define ATT_UUID_INTERMEDIATE_BP 0x2A36 /*! Intermediate Cuff Pressure */ -#define ATT_UUID_HR_MEAS 0x2A37 /*! Heart Rate Measurement */ -#define ATT_UUID_HR_SENSOR_LOC 0x2A38 /*! Body Sensor Location */ -#define ATT_UUID_HR_CP 0x2A39 /*! Heart Rate Control Point */ -#define ATT_UUID_REMOVABLE 0x2A3A /*! Removable */ -#define ATT_UUID_SERVICE_REQ 0x2A3B /*! Service Required */ -#define ATT_UUID_SCI_TEMP_C 0x2A3C /*! Scientific Temperature in Celsius */ -#define ATT_UUID_STRING 0x2A3D /*! String */ -#define ATT_UUID_NETWORK_AVAIL 0x2A3E /*! Network Availability */ -#define ATT_UUID_ALERT_STATUS 0x2A3F /*! Alert Status */ -#define ATT_UUID_RINGER_CP 0x2A40 /*! Ringer Control Point */ -#define ATT_UUID_RINGER_SETTING 0x2A41 /*! Ringer Setting */ -#define ATT_UUID_ALERT_CAT_ID_MASK 0x2A42 /*! Alert Category ID Bit Mask */ -#define ATT_UUID_ALERT_CAT_ID 0x2A43 /*! Alert Category ID */ -#define ATT_UUID_ALERT_NOTIF_CP 0x2A44 /*! Alert Notification Control Point */ -#define ATT_UUID_UNREAD_ALERT_STATUS 0x2A45 /*! Unread Alert Status */ -#define ATT_UUID_NEW_ALERT 0x2A46 /*! New Alert */ -#define ATT_UUID_SUP_NEW_ALERT_CAT 0x2A47 /*! Supported New Alert Category */ -#define ATT_UUID_SUP_UNREAD_ALERT_CAT 0x2A48 /*! Supported Unread Alert Category */ -#define ATT_UUID_BP_FEATURE 0x2A49 /*! Blood Pressure Feature */ -#define ATT_UUID_HID_INFORMATION 0x2A4A /*! HID Information */ -#define ATT_UUID_HID_REPORT_MAP 0x2A4B /*! HID Report Map */ -#define ATT_UUID_HID_CONTROL_POINT 0x2A4C /*! HID Control Point */ -#define ATT_UUID_HID_REPORT 0x2A4D /*! HID Report */ -#define ATT_UUID_HID_PROTOCOL_MODE 0x2A4E /*! HID Protocol Mode */ -#define ATT_UUID_SCAN_INT_WIND 0x2A4F /*! Scan Interval Window */ -#define ATT_UUID_PNP_ID 0x2A50 /*! PnP ID */ -#define ATT_UUID_GLUCOSE_FEATURE 0x2A51 /*! Glucose Feature */ -#define ATT_UUID_RACP 0x2A52 /*! Record Access Control Point */ -#define ATT_UUID_CAR 0x2AA6 /*! Central Address Resolution */ - -/* remove when adopted */ -#define ATT_UUID_GENERIC_CTRL_SERVICE 0xF011 -#define ATT_UUID_COMMAND_ENUM 0xE010 /*! Command Enumeration */ -#define ATT_UUID_GENERIC_COMMAND_CP 0xE011 /*! Generic Command Control Point */ -#define ATT_UUID_WEIGHT_SCALE_SERVICE 0x181D /*! Weight Scale Service */ -#define ATT_UUID_WEIGHT_MEAS 0x2A9D /*! Weight Measurement */ -#define ATT_UUID_WEIGHT_SCALE_FEATURE 0x2A9E /*! Weight Scale Feature */ - -/*! Unit UUIDs */ -#define ATT_UUID_UNITLESS 0x2700 /*! unitless */ -#define ATT_UUID_LENGTH_M 0x2701 /*! length metre */ -#define ATT_UUID_MASS_KG 0x2702 /*! mass kilogram */ -#define ATT_UUID_TIME_SEC 0x2703 /*! time second */ -#define ATT_UUID_ELECTRIC_CURRENT_AMP 0x2704 /*! electric current ampere */ -#define ATT_UUID_THERMO_TEMP_K 0x2705 /*! thermodynamic temperature kelvin */ -#define ATT_UUID_AMOUNT_OF_SUBSTANCE_MOLE 0x2706 /*! amount of substance mole */ -#define ATT_UUID_LUMINOUS_INTENSITY_CAND 0x2707 /*! luminous intensity candela */ -#define ATT_UUID_AREA_SQ_M 0x2710 /*! area square metres */ -#define ATT_UUID_VOLUME_CU_M 0x2711 /*! volume cubic metres */ -#define ATT_UUID_VELOCITY_MPS 0x2712 /*! velocity metres per second */ -#define ATT_UUID_ACCELERATION_MPS_SQ 0x2713 /*! acceleration metres per second squared */ -#define ATT_UUID_WAVENUMBER_RECIPROCAL_M 0x2714 /*! wavenumber reciprocal metre */ -#define ATT_UUID_DENSITY_KG_PER_CU_M 0x2715 /*! density kilogram per cubic metre */ -#define ATT_UUID_SURFACE_DENS_KG_PER_SQ_M 0x2716 /*! surface density kilogram per square metre */ -#define ATT_UUID_SPECIFIC_VOL_CU_M_PER_KG 0x2717 /*! specific volume cubic metre per kilogram */ -#define ATT_UUID_CURRENT_DENS_AMP_PER_SQ_M 0x2718 /*! current density ampere per square metre */ -#define ATT_UUID_MAG_FIELD_STR_AMP_PER_M 0x2719 /*! magnetic field strength ampere per metre */ -#define ATT_UUID_AMOUNT_CONC_MOLE_PER_CU_M 0x271A /*! amount concentration mole per cubic metre */ -#define ATT_UUID_MASS_CONC_KG_PER_CU_M 0x271B /*! mass concentration kilogram per cubic metre */ -#define ATT_UUID_LUM_CAND_PER_SQ_M 0x271C /*! luminance candela per square metre */ -#define ATT_UUID_REFRACTIVE_INDEX 0x271D /*! refractive index */ -#define ATT_UUID_RELATIVE_PERMEABILITY 0x271E /*! relative permeability */ -#define ATT_UUID_PLANE_ANGLE_R 0x2720 /*! plane angle radian */ -#define ATT_UUID_SOLID_ANGLE_STER 0x2721 /*! solid angle steradian */ -#define ATT_UUID_FREQUENCY_HERTZ 0x2722 /*! frequency hertz */ -#define ATT_UUID_FORCE_NEWT 0x2723 /*! force newton */ -#define ATT_UUID_PRESSURE_PASCAL 0x2724 /*! pressure pascal */ -#define ATT_UUID_ENERGY_J 0x2725 /*! energy joule */ -#define ATT_UUID_POWER_W 0x2726 /*! power watt */ -#define ATT_UUID_ELECTRIC_CHG_C 0x2727 /*! electric charge coulomb */ -#define ATT_UUID_ELECTRIC_POTENTIAL_VOLT 0x2728 /*! electric potential difference volt */ -#define ATT_UUID_CAPACITANCE_F 0x2729 /*! capacitance farad */ -#define ATT_UUID_ELECTRIC_RESISTANCE_OHM 0x272A /*! electric resistance ohm */ -#define ATT_UUID_ELECTRIC_COND_SIEMENS 0x272B /*! electric conductance siemens */ -#define ATT_UUID_MAGNETIC_FLEX_WEBER 0x272C /*! magnetic flex weber */ -#define ATT_UUID_MAGNETIC_FLEX_DENS_TESLA 0x272D /*! magnetic flex density tesla */ -#define ATT_UUID_INDUCTANCE_H 0x272E /*! inductance henry */ -#define ATT_UUID_C_TEMP_DEG_C 0x272F /*! Celsius temperature degree Celsius */ -#define ATT_UUID_LUMINOUS_FLUX_LUMEN 0x2730 /*! luminous flux lumen */ -#define ATT_UUID_ILLUMINANCE_LUX 0x2731 /*! illuminance lux */ -#define ATT_UUID_RADIONUCLIDE_BECQUEREL 0x2732 /*! activity referred to a radionuclide becquerel */ -#define ATT_UUID_ABSORBED_DOSE_GRAY 0x2733 /*! absorbed dose gray */ -#define ATT_UUID_DOSE_EQUIVALENT_SIEVERT 0x2734 /*! dose equivalent sievert */ -#define ATT_UUID_CATALYTIC_ACTIVITY_KATAL 0x2735 /*! catalytic activity katal */ -#define ATT_UUID_DYNAMIC_VISC_PASCAL_SEC 0x2740 /*! dynamic viscosity pascal second */ -#define ATT_UUID_MOMENT_OF_FORCE_NEWT_M 0x2741 /*! moment of force newton metre */ -#define ATT_UUID_SURFACE_TENSION_NEWT_PER_M 0x2742 /*! surface tension newton per metre */ -#define ATT_UUID_ANG_VELOCITY_R_PER_SEC 0x2743 /*! angular velocity radian per second */ -#define ATT_UUID_ANG_ACCEL_R_PER_SEC_SQD 0x2744 /*! angular acceleration radian per second squared */ -#define ATT_UUID_HEAT_FLUX_DEN_W_PER_SQ_M 0x2745 /*! heat flux density watt per square metre */ -#define ATT_UUID_HEAT_CAP_J_PER_K 0x2746 /*! heat capacity joule per kelvin */ -#define ATT_UUID_SPEC_HEAT_CAP_J_PER_KG_K 0x2747 /*! specific heat capacity joule per kilogram kelvin */ -#define ATT_UUID_SPEC_ENERGY_J_PER_KG 0x2748 /*! specific energy joule per kilogram */ -#define ATT_UUID_THERMAL_COND_W_PER_M_K 0x2749 /*! thermal conductivity watt per metre kelvin */ -#define ATT_UUID_ENERGY_DENSITY_J_PER_CU_M 0x274A /*! energy density joule per cubic metre */ -#define ATT_UUID_ELEC_FIELD_STR_VOLT_PER_M 0x274B /*! electric field strength volt per metre */ -#define ATT_UUID_ELEC_CHG_DENS_C_PER_CU_M 0x274C /*! electric charge density coulomb per cubic metre */ -#define ATT_UUID_SURF_CHG_DENS_C_PER_SQ_M 0x274D /*! surface charge density coulomb per square metre */ -#define ATT_UUID_ELEC_FLUX_DENS_C_PER_SQ_M 0x274E /*! electric flux density coulomb per square metre */ -#define ATT_UUID_PERMITTIVITY_F_PER_M 0x274F /*! permittivity farad per metre */ -#define ATT_UUID_PERMEABILITY_H_PER_M 0x2750 /*! permeability henry per metre */ -#define ATT_UUID_MOLAR_ENERGY_J_PER_MOLE 0x2751 /*! molar energy joule per mole */ -#define ATT_UUID_MOLAR_ENTROPY_J_PER_MOLE_K 0x2752 /*! molar entropy joule per mole kelvin */ -#define ATT_UUID_EXPOSURE_C_PER_KG 0x2753 /*! exposure coulomb per kilogram */ -#define ATT_UUID_DOSE_RATE_GRAY_PER_SEC 0x2754 /*! absorbed dose rate gray per second */ -#define ATT_UUID_RT_INTENSITY_W_PER_STER 0x2755 /*! radiant intensity watt per steradian */ -#define ATT_UUID_RCE_W_PER_SQ_METER_STER 0x2756 /*! radiance watt per square meter steradian */ -#define ATT_UUID_CATALYTIC_KATAL_PER_CU_M 0x2757 /*! catalytic activity concentration katal per cubic metre */ -#define ATT_UUID_TIME_MIN 0x2760 /*! time minute */ -#define ATT_UUID_TIME_HR 0x2761 /*! time hour */ -#define ATT_UUID_TIME_DAY 0x2762 /*! time day */ -#define ATT_UUID_PLANE_ANGLE_DEG 0x2763 /*! plane angle degree */ -#define ATT_UUID_PLANE_ANGLE_MIN 0x2764 /*! plane angle minute */ -#define ATT_UUID_PLANE_ANGLE_SEC 0x2765 /*! plane angle second */ -#define ATT_UUID_AREA_HECTARE 0x2766 /*! area hectare */ -#define ATT_UUID_VOLUME_L 0x2767 /*! volume litre */ -#define ATT_UUID_MASS_TONNE 0x2768 /*! mass tonne */ -#define ATT_UUID_PRESSURE_BAR 0x2780 /*! pressure bar */ -#define ATT_UUID_PRESSURE_MM 0x2781 /*! pressure millimetre of mercury */ -#define ATT_UUID_LENGTH_ANGSTROM 0x2782 /*! length angstrom */ -#define ATT_UUID_LENGTH_NAUTICAL_MILE 0x2783 /*! length nautical mile */ -#define ATT_UUID_AREA_BARN 0x2784 /*! area barn */ -#define ATT_UUID_VELOCITY_KNOT 0x2785 /*! velocity knot */ -#define ATT_UUID_LOG_RADIO_QUANT_NEPER 0x2786 /*! logarithmic radio quantity neper */ -#define ATT_UUID_LOG_RADIO_QUANT_BEL 0x2787 /*! logarithmic radio quantity bel */ -#define ATT_UUID_LOG_RADIO_QUANT_DB 0x2788 /*! logarithmic radio quantity decibel */ -#define ATT_UUID_LENGTH_YARD 0x27A0 /*! length yard */ -#define ATT_UUID_LENGTH_PARSEC 0x27A1 /*! length parsec */ -#define ATT_UUID_LENGTH_IN 0x27A2 /*! length inch */ -#define ATT_UUID_LENGTH_FOOT 0x27A3 /*! length foot */ -#define ATT_UUID_LENGTH_MILE 0x27A4 /*! length mile */ -#define ATT_UUID_PRESSURE_POUND_PER_SQ_IN 0x27A5 /*! pressure pound-force per square inch */ -#define ATT_UUID_VELOCITY_KPH 0x27A6 /*! velocity kilometre per hour */ -#define ATT_UUID_VELOCITY_MPH 0x27A7 /*! velocity mile per hour */ -#define ATT_UUID_ANG_VELOCITY_RPM 0x27A8 /*! angular velocity revolution per minute */ -#define ATT_UUID_ENERGY_GRAM_CALORIE 0x27A9 /*! energy gram calorie */ -#define ATT_UUID_ENERGY_KG_CALORIE 0x27AA /*! energy kilogram calorie */ -#define ATT_UUID_ENERGY_KILOWATT_HR 0x27AB /*! energy kilowatt hour */ -#define ATT_UUID_THERM_TEMP_F 0x27AC /*! thermodynamic temperature degree Fahrenheit */ -#define ATT_UUID_PERCENTAGE 0x27AD /*! percentage */ -#define ATT_UUID_PER_MILLE 0x27AE /*! per mille */ -#define ATT_UUID_PERIOD_BEATS_PER_MIN 0x27AF /*! period beats per minute */ -#define ATT_UUID_ELECTRIC_CHG_AMP_HRS 0x27B0 /*! electric charge ampere hours */ -#define ATT_UUID_MASS_DENSITY_MG_PER_DL 0x27B1 /*! mass density milligram per decilitre */ -#define ATT_UUID_MASS_DENSITY_MMOLE_PER_L 0x27B2 /*! mass density millimole per litre */ -#define ATT_UUID_TIME_YEAR 0x27B3 /*! time year */ -#define ATT_UUID_TIME_MONTH 0x27B4 /*! time month */ - -/*! Wicentric proprietary UUIDs */ - -/*! Base UUID: E0262760-08C2-11E1-9073-0E8AC72EXXXX */ -#define ATT_UUID_WICENTRIC_BASE 0x2E, 0xC7, 0x8A, 0x0E, 0x73, 0x90, \ - 0xE1, 0x11, 0xC2, 0x08, 0x60, 0x27, 0x26, 0xE0 - -/*! Macro for building Wicentric UUIDs */ -#define ATT_UUID_WICENTRIC_BUILD(part) UINT16_TO_BYTES(part), ATT_UUID_WICENTRIC_BASE - -/*! Partial proprietary service UUIDs */ -#define ATT_UUID_P1_SERVICE_PART 0x1001 /*! Proprietary service P1 */ - -/*! Partial proprietary characteristic UUIDs */ -#define ATT_UUID_D1_DATA_PART 0x0001 /*! Proprietary data D1 */ - -/* Proprietary services */ -#define ATT_UUID_P1_SERVICE ATT_UUID_WICENTRIC_BUILD(ATT_UUID_P1_SERVICE_PART) - -/* Proprietary characteristics */ -#define ATT_UUID_D1_DATA ATT_UUID_WICENTRIC_BUILD(ATT_UUID_D1_DATA_PART) - -/************************************************************************************************** - Global Variables -**************************************************************************************************/ - -/*! Service UUIDs */ -extern const uint8_t attGapSvcUuid[ATT_16_UUID_LEN]; /*! Generic Access Profile Service */ -extern const uint8_t attGattSvcUuid[ATT_16_UUID_LEN]; /*! Generic Attribute Profile Service */ -extern const uint8_t attIasSvcUuid[ATT_16_UUID_LEN]; /*! Immediate Alert Service */ -extern const uint8_t attLlsSvcUuid[ATT_16_UUID_LEN]; /*! Link Loss Service */ -extern const uint8_t attTpsSvcUuid[ATT_16_UUID_LEN]; /*! Tx Power Service */ -extern const uint8_t attCtsSvcUuid[ATT_16_UUID_LEN]; /*! Current Time Service */ -extern const uint8_t attRtusSvcUuid[ATT_16_UUID_LEN]; /*! Reference Time Update Service */ -extern const uint8_t attNdcsSvcUuid[ATT_16_UUID_LEN]; /*! Next DST Change Service */ -extern const uint8_t attGlsSvcUuid[ATT_16_UUID_LEN]; /*! Glucose Service */ -extern const uint8_t attHtsSvcUuid[ATT_16_UUID_LEN]; /*! Health Thermometer Service */ -extern const uint8_t attDisSvcUuid[ATT_16_UUID_LEN]; /*! Device Information Service */ -extern const uint8_t attNwaSvcUuid[ATT_16_UUID_LEN]; /*! Network Availability Service */ -extern const uint8_t attWdsSvcUuid[ATT_16_UUID_LEN]; /*! Watchdog Service */ -extern const uint8_t attHrsSvcUuid[ATT_16_UUID_LEN]; /*! Heart Rate Service */ -extern const uint8_t attPassSvcUuid[ATT_16_UUID_LEN]; /*! Phone Alert Status Service */ -extern const uint8_t attBasSvcUuid[ATT_16_UUID_LEN]; /*! Battery Service */ -extern const uint8_t attBpsSvcUuid[ATT_16_UUID_LEN]; /*! Blood Pressure Service */ -extern const uint8_t attAnsSvcUuid[ATT_16_UUID_LEN]; /*! Alert Notification Service */ -extern const uint8_t attHidSvcUuid[ATT_16_UUID_LEN]; /*! Human Interface Device Service */ -extern const uint8_t attSpsSvcUuid[ATT_16_UUID_LEN]; /*! Scan Parameter Service */ - -/*! GATT UUIDs */ -extern const uint8_t attPrimSvcUuid[ATT_16_UUID_LEN]; /*! Primary Service */ -extern const uint8_t attSecSvcUuid[ATT_16_UUID_LEN]; /*! Secondary Service */ -extern const uint8_t attIncUuid[ATT_16_UUID_LEN]; /*! Include */ -extern const uint8_t attChUuid[ATT_16_UUID_LEN]; /*! Characteristic */ - -/*! Descriptor UUIDs */ -extern const uint8_t attChExtUuid[ATT_16_UUID_LEN]; /*! Characteristic Extended Properties */ -extern const uint8_t attChUserDescUuid[ATT_16_UUID_LEN]; /*! Characteristic User Description */ -extern const uint8_t attCliChCfgUuid[ATT_16_UUID_LEN]; /*! Client Characteristic Configuration */ -extern const uint8_t attSrvChCfgUuid[ATT_16_UUID_LEN]; /*! Server Characteristic Configuration */ -extern const uint8_t attChPresFmtUuid[ATT_16_UUID_LEN]; /*! Characteristic Presentation Format */ -extern const uint8_t attAggFmtUuid[ATT_16_UUID_LEN]; /*! Characteristic Aggregate Format */ -extern const uint8_t attHidErmUuid[ATT_16_UUID_LEN]; /*! HID External Report Reference */ -extern const uint8_t attHidRimUuid[ATT_16_UUID_LEN]; /*! HID Report ID Mapping */ -extern const uint8_t attValRangeUuid[ATT_16_UUID_LEN]; /*! Valid Range */ - -/*! Characteristic UUIDs */ -extern const uint8_t attDnChUuid[ATT_16_UUID_LEN]; /*! Device Name */ -extern const uint8_t attApChUuid[ATT_16_UUID_LEN]; /*! Appearance */ -extern const uint8_t attPpfChUuid[ATT_16_UUID_LEN]; /*! Peripheral Privacy Flag */ -extern const uint8_t attRaChUuid[ATT_16_UUID_LEN]; /*! Reconnection Address */ -extern const uint8_t attPpcpChUuid[ATT_16_UUID_LEN]; /*! Peripheral Preferred Connection Parameters */ -extern const uint8_t attScChUuid[ATT_16_UUID_LEN]; /*! Service Changed */ -extern const uint8_t attAlChUuid[ATT_16_UUID_LEN]; /*! Alert Level */ -extern const uint8_t attTxpChUuid[ATT_16_UUID_LEN]; /*! Tx Power Level */ -extern const uint8_t attDtChUuid[ATT_16_UUID_LEN]; /*! Date Time */ -extern const uint8_t attDwChUuid[ATT_16_UUID_LEN]; /*! Day of Week */ -extern const uint8_t attDdtChUuid[ATT_16_UUID_LEN]; /*! Day Date Time */ -extern const uint8_t attEt100ChUuid[ATT_16_UUID_LEN]; /*! Exact Time 100 */ -extern const uint8_t attEt256ChUuid[ATT_16_UUID_LEN]; /*! Exact Time 256 */ -extern const uint8_t attDstoChUuid[ATT_16_UUID_LEN]; /*! DST Offset */ -extern const uint8_t attTzChUuid[ATT_16_UUID_LEN]; /*! Time Zone */ -extern const uint8_t attLtiChUuid[ATT_16_UUID_LEN]; /*! Local Time Information */ -extern const uint8_t attStzChUuid[ATT_16_UUID_LEN]; /*! Secondary Time Zone */ -extern const uint8_t attTdstChUuid[ATT_16_UUID_LEN]; /*! Time with DST */ -extern const uint8_t attTaChUuid[ATT_16_UUID_LEN]; /*! Time Accuracy */ -extern const uint8_t attTsChUuid[ATT_16_UUID_LEN]; /*! Time Source */ -extern const uint8_t attRtiChUuid[ATT_16_UUID_LEN]; /*! Reference Time Information */ -extern const uint8_t attTbChUuid[ATT_16_UUID_LEN]; /*! Time Broadcast */ -extern const uint8_t attTucpChUuid[ATT_16_UUID_LEN]; /*! Time Update Control Point */ -extern const uint8_t attTusChUuid[ATT_16_UUID_LEN]; /*! Time Update State */ -extern const uint8_t attGlmChUuid[ATT_16_UUID_LEN]; /*! Glucose Measurement */ -extern const uint8_t attBlChUuid[ATT_16_UUID_LEN]; /*! Battery Level */ -extern const uint8_t attBpsChUuid[ATT_16_UUID_LEN]; /*! Battery Power State */ -extern const uint8_t attBlsChUuid[ATT_16_UUID_LEN]; /*! Battery Level State */ -extern const uint8_t attTmChUuid[ATT_16_UUID_LEN]; /*! Temperature Measurement */ -extern const uint8_t attTtChUuid[ATT_16_UUID_LEN]; /*! Temperature Type */ -extern const uint8_t attItChUuid[ATT_16_UUID_LEN]; /*! Intermediate Temperature */ -extern const uint8_t attTcelChUuid[ATT_16_UUID_LEN]; /*! Temperature Celsius */ -extern const uint8_t attTfahChUuid[ATT_16_UUID_LEN]; /*! Temperature Fahrenheit */ -extern const uint8_t attSidChUuid[ATT_16_UUID_LEN]; /*! System ID */ -extern const uint8_t attMnsChUuid[ATT_16_UUID_LEN]; /*! Model Number String */ -extern const uint8_t attSnsChUuid[ATT_16_UUID_LEN]; /*! Serial Number String */ -extern const uint8_t attFrsChUuid[ATT_16_UUID_LEN]; /*! Firmware Revision String */ -extern const uint8_t attHrsChUuid[ATT_16_UUID_LEN]; /*! Hardware Revision String */ -extern const uint8_t attSrsChUuid[ATT_16_UUID_LEN]; /*! Software Revision String */ -extern const uint8_t attMfnsChUuid[ATT_16_UUID_LEN]; /*! Manufacturer Name String */ -extern const uint8_t attIeeeChUuid[ATT_16_UUID_LEN]; /*! IEEE 11073-20601 Regulatory Certification Data List */ -extern const uint8_t attCtChUuid[ATT_16_UUID_LEN]; /*! Current Time */ -extern const uint8_t attElChUuid[ATT_16_UUID_LEN]; /*! Elevation */ -extern const uint8_t attLatChUuid[ATT_16_UUID_LEN]; /*! Latitude */ -extern const uint8_t attLongChUuid[ATT_16_UUID_LEN]; /*! Longitude */ -extern const uint8_t attP2dChUuid[ATT_16_UUID_LEN]; /*! Position 2D */ -extern const uint8_t attP3dChUuid[ATT_16_UUID_LEN]; /*! Position 3D */ -extern const uint8_t attVidChUuid[ATT_16_UUID_LEN]; /*! Vendor ID */ -extern const uint8_t attGlmcChUuid[ATT_16_UUID_LEN]; /*! Glucose Measurement Context */ -extern const uint8_t attBpmChUuid[ATT_16_UUID_LEN]; /*! Blood Pressure Measurement */ -extern const uint8_t attIcpChUuid[ATT_16_UUID_LEN]; /*! Intermediate Cuff Pressure */ -extern const uint8_t attHrmChUuid[ATT_16_UUID_LEN]; /*! Heart Rate Measurement */ -extern const uint8_t attBslChUuid[ATT_16_UUID_LEN]; /*! Body Sensor Location */ -extern const uint8_t attHrcpChUuid[ATT_16_UUID_LEN]; /*! Heart Rate Control Point */ -extern const uint8_t attRemChUuid[ATT_16_UUID_LEN]; /*! Removable */ -extern const uint8_t attSrChUuid[ATT_16_UUID_LEN]; /*! Service Required */ -extern const uint8_t attStcChUuid[ATT_16_UUID_LEN]; /*! Scientific Temperature in Celsius */ -extern const uint8_t attStrChUuid[ATT_16_UUID_LEN]; /*! String */ -extern const uint8_t attNwaChUuid[ATT_16_UUID_LEN]; /*! Network Availability */ -extern const uint8_t attAsChUuid[ATT_16_UUID_LEN]; /*! Alert Status */ -extern const uint8_t attRcpChUuid[ATT_16_UUID_LEN]; /*! Ringer Control Point */ -extern const uint8_t attRsChUuid[ATT_16_UUID_LEN]; /*! Ringer Setting */ -extern const uint8_t attAcbmChUuid[ATT_16_UUID_LEN]; /*! Alert Category ID Bit Mask */ -extern const uint8_t attAcChUuid[ATT_16_UUID_LEN]; /*! Alert Category ID */ -extern const uint8_t attAncpChUuid[ATT_16_UUID_LEN]; /*! Alert Notification Control Point */ -extern const uint8_t attUasChUuid[ATT_16_UUID_LEN]; /*! Unread Alert Status */ -extern const uint8_t attNaChUuid[ATT_16_UUID_LEN]; /*! New Alert */ -extern const uint8_t attSnacChUuid[ATT_16_UUID_LEN]; /*! Supported New Alert Category */ -extern const uint8_t attSuacChUuid[ATT_16_UUID_LEN]; /*! Supported Unread Alert Category */ -extern const uint8_t attBpfChUuid[ATT_16_UUID_LEN]; /*! Blood Pressure Feature */ -extern const uint8_t attHidBmiChUuid[ATT_16_UUID_LEN]; /*! HID Information */ -extern const uint8_t attHidBkiChUuid[ATT_16_UUID_LEN]; /*! HID Information */ -extern const uint8_t attHidBkoChUuid[ATT_16_UUID_LEN]; /*! HID Information */ -extern const uint8_t attHidiChUuid[ATT_16_UUID_LEN]; /*! HID Information */ -extern const uint8_t attHidRmChUuid[ATT_16_UUID_LEN]; /*! Report Map */ -extern const uint8_t attHidcpChUuid[ATT_16_UUID_LEN]; /*! HID Control Point */ -extern const uint8_t attHidRepChUuid[ATT_16_UUID_LEN]; /*! Report */ -extern const uint8_t attHidPmChUuid[ATT_16_UUID_LEN]; /*! Protocol Mode */ -extern const uint8_t attSiwChUuid[ATT_16_UUID_LEN]; /*! Scan Interval Window */ -extern const uint8_t attPnpChUuid[ATT_16_UUID_LEN]; /*! PnP ID */ -extern const uint8_t attGlfChUuid[ATT_16_UUID_LEN]; /*! Glucose Feature */ -extern const uint8_t attRacpChUuid[ATT_16_UUID_LEN]; /*! Record Access Control Point */ -extern const uint8_t attCarChUuid[ATT_16_UUID_LEN]; /*! Central Address Resolution */ - -/* remove when adopted */ -extern const uint8_t attWssSvcUuid[ATT_16_UUID_LEN]; /*! Weight scale service */ -extern const uint8_t attWmChUuid[ATT_16_UUID_LEN]; /*! Weight measurement */ -extern const uint8_t attWsfChUuid[ATT_16_UUID_LEN]; /*! Weight scale feature */ - -#ifdef __cplusplus -}; -#endif - -#endif /* ATT_UUID_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/dm_api.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/dm_api.h deleted file mode 100644 index 9d9d8721e2f..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/dm_api.h +++ /dev/null @@ -1,1741 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file dm_api.h - * - * \brief Device Manager subsystem API. - * - * $Date: 2016-03-29 11:20:44 -0700 (Tue, 29 Mar 2016) $ - * $Revision: 6512 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef DM_API_H -#define DM_API_H - -#include "hci_api.h" -#include "cfg_stack.h" -#include "smp_defs.h" -#include "wsf_sec.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Device role */ -#define DM_ROLE_MASTER HCI_ROLE_MASTER /*! Role is master */ -#define DM_ROLE_SLAVE HCI_ROLE_SLAVE /*! Role is slave */ - -/*! The GAP discovery mode */ -#define DM_DISC_MODE_NONE 0 /*! GAP non-discoverable */ -#define DM_DISC_MODE_LIMITED 1 /*! GAP limited discoverable mode */ -#define DM_DISC_MODE_GENERAL 2 /*! GAP general discoverable mode */ - -/*! The type of connectable or discoverable of advertising */ -#define DM_ADV_CONN_UNDIRECT 0 /*! Connectable undirected advertising */ -#define DM_ADV_CONN_DIRECT 1 /*! Connectable directed advertising */ -#define DM_ADV_DISC_UNDIRECT 2 /*! Discoverable undirected advertising */ -#define DM_ADV_NONCONN_UNDIRECT 3 /*! Non-connectable undirected advertising */ -#define DM_ADV_CONN_DIRECT_LO_DUTY 4 /*! Connectable directed low duty cycle advertising */ -#define DM_ADV_SCAN_RESPONSE 4 /*! Scan response */ -#define DM_ADV_NONE 255 /*! For internal use only */ - -/*! Whether data is located in the advertising data or the scan response data */ -#define DM_DATA_LOC_ADV 0 /*! Locate data in the advertising data */ -#define DM_DATA_LOC_SCAN 1 /*! Locate data in the scan response data */ - -/*! The scan type */ -#define DM_SCAN_TYPE_PASSIVE 0 /*! Passive scan */ -#define DM_SCAN_TYPE_ACTIVE 1 /*! Active scan */ - -/*! Advertising channel map */ -#define DM_ADV_CHAN_37 HCI_ADV_CHAN_37 /*! Advertising channel 37 */ -#define DM_ADV_CHAN_38 HCI_ADV_CHAN_38 /*! Advertising channel 38 */ -#define DM_ADV_CHAN_39 HCI_ADV_CHAN_39 /*! Advertising channel 39 */ -#define DM_ADV_CHAN_ALL (HCI_ADV_CHAN_37 | HCI_ADV_CHAN_38 | HCI_ADV_CHAN_39) - -/*! The client ID parameter to function DmConnRegister() */ -#define DM_CLIENT_ID_ATT 0 /*! Identifier for attribute protocol, for internal use only */ -#define DM_CLIENT_ID_SMP 1 /*! Identifier for security manager protocol, for internal use only */ -#define DM_CLIENT_ID_DM 2 /*! Identifier for device manager, for internal use only */ -#define DM_CLIENT_ID_APP 3 /*! Identifier for the application */ -#define DM_CLIENT_ID_L2C 4 /*! Identifier for L2CAP */ -#define DM_CLIENT_ID_MAX 5 /*! For internal use only */ - -/*! Unknown connection ID or other error */ -#define DM_CONN_ID_NONE 0 - -/*! The address type */ -#define DM_ADDR_PUBLIC 0 /*! Public address */ -#define DM_ADDR_RANDOM 1 /*! Random address */ -#define DM_ADDR_PUBLIC_IDENTITY 2 /*! Public identity address */ -#define DM_ADDR_RANDOM_IDENTITY 3 /*! Random (static) identity address */ - -/*! Advertising data types */ -#define DM_ADV_TYPE_FLAGS 0x01 /*! Flag bits */ -#define DM_ADV_TYPE_16_UUID_PART 0x02 /*! Partial list of 16 bit UUIDs */ -#define DM_ADV_TYPE_16_UUID 0x03 /*! Complete list of 16 bit UUIDs */ -#define DM_ADV_TYPE_32_UUID_PART 0x04 /*! Partial list of 32 bit UUIDs */ -#define DM_ADV_TYPE_32_UUID 0x05 /*! Complete list of 32 bit UUIDs */ -#define DM_ADV_TYPE_128_UUID_PART 0x06 /*! Partial list of 128 bit UUIDs */ -#define DM_ADV_TYPE_128_UUID 0x07 /*! Complete list of 128 bit UUIDs */ -#define DM_ADV_TYPE_SHORT_NAME 0x08 /*! Shortened local name */ -#define DM_ADV_TYPE_LOCAL_NAME 0x09 /*! Complete local name */ -#define DM_ADV_TYPE_TX_POWER 0x0A /*! TX power level */ -#define DM_ADV_TYPE_SM_TK_VALUE 0x10 /*! Security manager TK value */ -#define DM_ADV_TYPE_SM_OOB_FLAGS 0x11 /*! Security manager OOB flags */ -#define DM_ADV_TYPE_CONN_INTERVAL 0x12 /*! Slave preferred connection interval */ -#define DM_ADV_TYPE_SIGNED_DATA 0x13 /*! Signed data */ -#define DM_ADV_TYPE_16_SOLICIT 0x14 /*! Service soliticiation list of 16 bit UUIDs */ -#define DM_ADV_TYPE_128_SOLICIT 0x15 /*! Service soliticiation list of 128 bit UUIDs */ -#define DM_ADV_TYPE_SERVICE_DATA 0x16 /*! Service data - 16-bit UUID */ -#define DM_ADV_TYPE_PUBLIC_TARGET 0x17 /*! Public target address */ -#define DM_ADV_TYPE_RANDOM_TARGET 0x18 /*! Random target address */ -#define DM_ADV_TYPE_APPEARANCE 0x19 /*! Device appearance */ -#define DM_ADV_TYPE_ADV_INTERVAL 0x1A /*! Advertising interval */ -#define DM_ADV_TYPE_BD_ADDR 0x1B /*! LE Bluetooth device address */ -#define DM_ADV_TYPE_ROLE 0x1C /*! LE role */ -#define DM_ADV_TYPE_32_SOLICIT 0x1F /*! Service soliticiation list of 32 bit UUIDs */ -#define DM_ADV_TYPE_SVC_DATA_32 0x20 /*! Service data - 32-bit UUID */ -#define DM_ADV_TYPE_SVC_DATA_128 0x21 /*! Service data - 128-bit UUID */ -#define DM_ADV_TYPE_LESC_CONFIRM 0x22 /*! LE Secure Connections confirm value */ -#define DM_ADV_TYPE_LESC_RANDOM 0x23 /*! LE Secure Connections random value */ -#define DM_ADV_TYPE_URI 0x24 /*! URI */ -#define DM_ADV_TYPE_MANUFACTURER 0xFF /*! Manufacturer specific data */ - -/*! Bit mask for flags advertising data type */ -#define DM_FLAG_LE_LIMITED_DISC 0x01 /*! Limited discoverable flag */ -#define DM_FLAG_LE_GENERAL_DISC 0x02 /*! General discoverable flag */ -#define DM_FLAG_LE_BREDR_NOT_SUP 0x04 /*! BR/EDR not supported flag */ - -/*! Advertising data element indexes */ -#define DM_AD_LEN_IDX 0 /*! Advertising data element len */ -#define DM_AD_TYPE_IDX 1 /*! Advertising data element type */ -#define DM_AD_DATA_IDX 2 /*! Advertising data element data */ - -/*! Timeouts defined by the GAP specification; in units of milliseconds */ -#define DM_GAP_LIM_ADV_TIMEOUT 180000 /*! Maximum advertising duration in limited discoverable mode */ -#define DM_GAP_GEN_DISC_SCAN_MIN 10240 /*! Minimum scan duration for general discovery */ -#define DM_GAP_LIM_DISC_SCAN_MIN 10240 /*! Minimum scan duration for limited discovery */ -#define DM_GAP_CONN_PARAM_TIMEOUT 30000 /*! Connection parameter update timeout */ -#define DM_GAP_SCAN_FAST_PERIOD 30720 /*! Minimum time to perform scanning when user initiated */ -#define DM_GAP_ADV_FAST_PERIOD 30000 /*! Minimum time to perform advertising when user initiated */ - -/*! - * Advertising, scanning, and connection parameters defined in the GAP specification. - * In units of 625 microseconds. - */ -#define DM_GAP_SCAN_FAST_INT_MIN 48 /*! Minimum scan interval when user initiated */ -#define DM_GAP_SCAN_FAST_INT_MAX 96 /*! Maximum scan interval when user initiated */ -#define DM_GAP_SCAN_FAST_WINDOW 48 /*! Scan window when user initiated */ -#define DM_GAP_SCAN_SLOW_INT_1 2048 /*! Scan interval 1 when background scannning */ -#define DM_GAP_SCAN_SLOW_WINDOW_1 18 /*! Scan window 1 when background scanning */ -#define DM_GAP_SCAN_SLOW_INT_2 4096 /*! Scan interval 2 when background scannning */ -#define DM_GAP_SCAN_SLOW_WINDOW_2 18 /*! Scan window 2 when background scanning */ -#define DM_GAP_ADV_FAST_INT_MIN 48 /*! Minimum advertising interval when user initiated */ -#define DM_GAP_ADV_FAST_INT_MAX 96 /*! Maximum advertising interval when user initiated */ -#define DM_GAP_ADV_SLOW_INT_MIN 1600 /*! Minimum advertising interval when background advertising */ -#define DM_GAP_ADV_SLOW_INT_MAX 1920 /*! Maximum advertising interval when background advertising */ - -/*! GAP connection establishment latency */ -#define DM_GAP_CONN_EST_LATENCY 0 - -/*! GAP connection intervals in 1.25ms units */ -#define DM_GAP_INITIAL_CONN_INT_MIN 24 /*! Minimum initial connection interval */ -#define DM_GAP_INITIAL_CONN_INT_MAX 40 /*! Maximum initial onnection interval */ - -/*! GAP connection establishment minimum and maximum connection event lengths */ -#define DM_GAP_CONN_EST_MIN_CE_LEN 0 -#define DM_GAP_CONN_EST_MAX_CE_LEN 0 - -/*! GAP peripheral privacy flag characteristic values */ -#define DM_GAP_PRIV_DISABLED 0 -#define DM_GAP_PRIV_ENABLED 1 - -/*! Connection establishment supervision timeout default, in 10ms units */ -#define DM_DEFAULT_EST_SUP_TIMEOUT 2000 - -/*! Pairing authentication/security properties bit mask */ -#define DM_AUTH_BOND_FLAG SMP_AUTH_BOND_FLAG /*! Bonding requested */ -#define DM_AUTH_MITM_FLAG SMP_AUTH_MITM_FLAG /*! MITM (authenticated pairing) requested */ -#define DM_AUTH_SC_FLAG SMP_AUTH_SC_FLAG /*! LE Secure Connections requested */ -#define DM_AUTH_KP_FLAG SMP_AUTH_KP_FLAG /*! Keypress notifications requested */ - -/*! Key distribution bit mask */ -#define DM_KEY_DIST_LTK SMP_KEY_DIST_ENC /*! Distribute LTK used for encryption */ -#define DM_KEY_DIST_IRK SMP_KEY_DIST_ID /*! Distribute IRK used for privacy */ -#define DM_KEY_DIST_CSRK SMP_KEY_DIST_SIGN /*! Distribute CSRK used for signed data */ - -/*! Key type used in DM_SEC_KEY_IND */ -#define DM_KEY_LOCAL_LTK 0x01 /*! LTK generated locally for this device */ -#define DM_KEY_PEER_LTK 0x02 /*! LTK received from peer device */ -#define DM_KEY_IRK 0x04 /*! IRK and identity info of peer device */ -#define DM_KEY_CSRK 0x08 /*! CSRK of peer device */ - -/*! Base value for HCI error status values for DM_SEC_PAIR_CMPL_IND */ -#define DM_SEC_HCI_ERR_BASE 0x20 - -#define DM_SEC_LEVEL_NONE 0 /*! Connection has no security */ -#define DM_SEC_LEVEL_ENC 1 /*! Connection is encrypted with unauthenticated key */ -#define DM_SEC_LEVEL_ENC_AUTH 2 /*! Connection is encrypted with authenticated key */ -#define DM_SEC_LEVEL_ENC_LESC 3 /*! Connection is encrypted with LE Secure Connections */ - -/*! Random address types */ -#define DM_RAND_ADDR_STATIC 0xC0 /*! Static address */ -#define DM_RAND_ADDR_RESOLV 0x40 /*! Resolvable private address */ -#define DM_RAND_ADDR_NONRESOLV 0x00 /*! Non-resolvable private address */ - -/*! Get the type of random address */ -#define DM_RAND_ADDR_GET(addr) ((addr)[5] & 0xC0) - -/*! Set the type of random address */ -#define DM_RAND_ADDR_SET(addr, type) {(addr)[5] = ((addr)[5] & 0x3F) | (type);} - -/*! Check for Resolvable Random Address */ -#define DM_RAND_ADDR_RPA(addr, type) (((type) == DM_ADDR_RANDOM) && \ - (DM_RAND_ADDR_GET((addr)) == DM_RAND_ADDR_RESOLV)) - -/*! Connection busy/idle state */ -#define DM_CONN_IDLE 0 /*! Connection is idle */ -#define DM_CONN_BUSY 1 /*! Connection is busy */ - -/*! Connection busy/idle state bitmask */ -#define DM_IDLE_SMP_PAIR 0x0001 /*! SMP pairing in progress */ -#define DM_IDLE_DM_ENC 0x0002 /*! DM Encryption setup in progress */ -#define DM_IDLE_ATTS_DISC 0x0004 /*! ATTS service discovery in progress */ -#define DM_IDLE_APP_DISC 0x0008 /*! App framework service discovery in progress */ -#define DM_IDLE_USER_1 0x0010 /*! For use by user application */ -#define DM_IDLE_USER_2 0x0020 /*! For use by user application */ -#define DM_IDLE_USER_3 0x0040 /*! For use by user application */ -#define DM_IDLE_USER_4 0x0080 /*! For use by user application */ - -/*! Filter policy modes */ -#define DM_FILT_POLICY_MODE_ADV 0 /*! Advertising filter policy mode */ -#define DM_FILT_POLICY_MODE_SCAN 1 /*! Scanning filter policy mode */ -#define DM_FILT_POLICY_MODE_INIT 2 /*! Initiator filter policy mode */ - -/*! Proprietary internal error codes */ -#define DM_ERR_SMP_RX_PDU_LEN_EXCEEDED 0x01 /*! LESC key length exceeded maximum RX PDU length */ -#define DM_ERR_ATT_RX_PDU_LEN_EXCEEDED 0x02 /*! Configured ATT MTU exceeded maximum RX PDU length */ -#define DM_ERR_L2C_RX_PDU_LEN_EXCEEDED 0x03 /*! Registered COC MPS exceeded maximum RX PDU length */ - -/*! DM callback events */ -#define DM_CBACK_START 0x20 /*! DM callback event starting value */ -enum -{ - DM_RESET_CMPL_IND = DM_CBACK_START, /*! Reset complete */ - DM_ADV_START_IND, /*! Advertising started */ - DM_ADV_STOP_IND, /*! Advertising stopped */ - DM_ADV_NEW_ADDR_IND, /*! New resolvable address has been generated */ - DM_SCAN_START_IND, /*! Scanning started */ - DM_SCAN_STOP_IND, /*! Scanning stopped */ - DM_SCAN_REPORT_IND, /*! Scan data received from peer device */ - DM_CONN_OPEN_IND, /*! Connection opened */ - DM_CONN_CLOSE_IND, /*! Connection closed */ - DM_CONN_UPDATE_IND, /*! Connection update complete */ - DM_SEC_PAIR_CMPL_IND, /*! Pairing completed successfully */ - DM_SEC_PAIR_FAIL_IND, /*! Pairing failed or other security failure */ - DM_SEC_ENCRYPT_IND, /*! Connection encrypted */ - DM_SEC_ENCRYPT_FAIL_IND, /*! Encryption failed */ - DM_SEC_AUTH_REQ_IND, /*! PIN or OOB data requested for pairing */ - DM_SEC_KEY_IND, /*! Security key indication */ - DM_SEC_LTK_REQ_IND, /*! LTK requested for encyption */ - DM_SEC_PAIR_IND, /*! Incoming pairing request from master */ - DM_SEC_SLAVE_REQ_IND, /*! Incoming security request from slave */ - DM_SEC_CALC_OOB_IND, /*! Result of OOB Confirm Calculation Generation */ - DM_SEC_ECC_KEY_IND, /*! Result of ECC Key Generation */ - DM_SEC_COMPARE_IND, /*! Result of Just Works/Numeric Comparison Compare Value Calculation */ - DM_SEC_KEYPRESS_IND, /*! Keypress indication from peer in passkey security */ - DM_PRIV_RESOLVED_ADDR_IND, /*! Private address resolved */ - DM_CONN_READ_RSSI_IND, /*! Connection RSSI read */ - DM_PRIV_ADD_DEV_TO_RES_LIST_IND, /*! Device added to resolving list */ - DM_PRIV_REM_DEV_FROM_RES_LIST_IND, /*! Device removed from resolving list */ - DM_PRIV_CLEAR_RES_LIST_IND, /*! Resolving list cleared */ - DM_PRIV_READ_PEER_RES_ADDR_IND, /*! Peer resolving address read */ - DM_PRIV_READ_LOCAL_RES_ADDR_IND, /*! Local resolving address read */ - DM_PRIV_SET_ADDR_RES_ENABLE_IND, /*! Address resolving enable set */ - DM_REM_CONN_PARAM_REQ_IND, /*! Remote connection parameter requested */ - DM_CONN_DATA_LEN_CHANGE_IND, /*! Data length changed */ - DM_CONN_WRITE_AUTH_TO_IND, /*! Write authenticated payload complete */ - DM_CONN_AUTH_TO_EXPIRED_IND, /*! Authenticated payload timeout expired */ - DM_ERROR_IND, /*! General error */ - DM_VENDOR_SPEC_IND, /*! Vendor specific event */ -}; - -#define DM_CBACK_END DM_VENDOR_SPEC_IND /*! DM callback event ending value */ - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Connection identifier */ -typedef uint8_t dmConnId_t; - -/*! Configuration structure */ -typedef struct -{ - uint8_t dummy; -} dmCfg_t; - -/*! LTK data type */ -typedef struct -{ - uint8_t key[SMP_KEY_LEN]; - uint8_t rand[SMP_RAND8_LEN]; - uint16_t ediv; -} dmSecLtk_t; - -/*! IRK data type */ -typedef struct -{ - uint8_t key[SMP_KEY_LEN]; - bdAddr_t bdAddr; - uint8_t addrType; -} dmSecIrk_t; - -/*! CSRK data type */ -typedef struct -{ - uint8_t key[SMP_KEY_LEN]; -} dmSecCsrk_t; - -/*! union of key types */ -typedef union -{ - dmSecLtk_t ltk; - dmSecIrk_t irk; - dmSecCsrk_t csrk; -} dmSecKey_t; - -/*! Data type for DM_SEC_PAIR_CMPL_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - uint8_t auth; /*! Authentication and bonding flags */ -} dmSecPairCmplIndEvt_t; - -/*! Data type for DM_SEC_ENCRYPT_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - bool_t usingLtk; /*! TRUE if connection encrypted with LTK */ -} dmSecEncryptIndEvt_t; - -/*! Data type for DM_SEC_AUTH_REQ_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - bool_t oob; /*! Out-of-band data requested */ - bool_t display; /*! TRUE if pin is to be displayed */ -} dmSecAuthReqIndEvt_t; - -/*! Data type for DM_SEC_PAIR_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - uint8_t auth; /*! Authentication and bonding flags */ - bool_t oob; /*! Out-of-band pairing data present or not present */ - uint8_t iKeyDist; /*! Initiator key distribution flags */ - uint8_t rKeyDist; /*! Responder key distribution flags */ -} dmSecPairIndEvt_t; - -/*! Data type for DM_SEC_SLAVE_REQ_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - uint8_t auth; /*! Authentication and bonding flags */ -} dmSecSlaveIndEvt_t; - -/*! Data type for DM_SEC_KEY_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - dmSecKey_t keyData; /*! Key data */ - uint8_t type; /*! Key type */ - uint8_t secLevel; /*! Security level of pairing when key was exchanged */ - uint8_t encKeyLen; /*! Length of encryption key used when data was transferred */ -} dmSecKeyIndEvt_t; - -/*! Data type for DM_SEC_COMPARE_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - uint8_t confirm[SMP_CONFIRM_LEN]; /*! Confirm value */ -} dmSecCnfIndEvt_t; - -/*! Data type for DM_SEC_KEYPRESS_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - uint8_t notificationType; /*! Type of keypress notification */ -} dmSecKeypressIndEvt_t; - -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - uint8_t confirm[SMP_CONFIRM_LEN]; /*! Local confirm value */ - uint8_t random[SMP_RAND_LEN]; /*! Local random value */ -} dmSecOobCalcIndEvt_t; - -/*! Data type for DM_ADV_NEW_ADDR_IND */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header */ - bdAddr_t addr; /*! New resolvable private address */ - bool_t firstTime; /*! TRUE when address is generated for the first time */ -} dmAdvNewAddrIndEvt_t; - -/*! Union of DM callback event data types */ -typedef union -{ - wsfMsgHdr_t hdr; - hciLeAdvReportEvt_t scanReport; - hciLeConnCmplEvt_t connOpen; - hciLeConnUpdateCmplEvt_t connUpdate; - hciDisconnectCmplEvt_t connClose; - dmSecPairCmplIndEvt_t pairCmpl; - dmSecEncryptIndEvt_t encryptInd; - dmSecAuthReqIndEvt_t authReq; - dmSecPairIndEvt_t pairInd; - dmSecSlaveIndEvt_t slaveInd; - dmSecKeyIndEvt_t keyInd; - dmSecOobCalcIndEvt_t oobCalcInd; - dmSecCnfIndEvt_t cnfInd; - hciLeLtkReqEvt_t ltkReqInd; - hciVendorSpecEvt_t vendorSpec; - dmAdvNewAddrIndEvt_t advNewAddr; - wsfSecEccMsg_t eccMsg; - hciReadRssiCmdCmplEvt_t readRssi; - hciLeReadPeerResAddrCmdCmplEvt_t readPeerResAddr; - hciLeReadLocalResAddrCmdCmplEvt_t readLocalResAddr; - hciLeSetAddrResEnableCmdCmplEvt_t setAddrResEnable; - hciLeAddDevToResListCmdCmplEvt_t addDevToResList; - hciLeRemDevFromResListCmdCmplEvt_t remDevFromResList; - hciLeClearResListCmdCmplEvt_t clearResList; - hciLeRemConnParamReqEvt_t remConnParamReq; - hciLeDataLenChangeEvt_t dataLenChange; - hciWriteAuthPayloadToCmdCmplEvt_t writeAuthTo; - hciAuthPayloadToExpiredEvt_t authToExpired; -} dmEvt_t; - -/*! Data type for DmSecSetOob */ -typedef struct -{ - uint8_t localRandom[SMP_RAND_LEN]; /*! Random value of the local device */ - uint8_t localConfirm[SMP_CONFIRM_LEN]; /*! Confirm value of the local device */ - uint8_t peerRandom[SMP_RAND_LEN]; /*! Random value of the peer device */ - uint8_t peerConfirm[SMP_CONFIRM_LEN]; /*! Confirm value of the peer device */ -} dmSecLescOobCfg_t; - -/*! Callback type */ -typedef void (*dmCback_t)(dmEvt_t *pDmEvt); - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn DmRegister - * - * \brief Register a callback with DM for scan and advertising events. - * - * \param cback Client callback function. - * - * \return None. - */ -/*************************************************************************************************/ -void DmRegister(dmCback_t cback); - -/*************************************************************************************************/ -/*! - * \fn DmFindAdType - * - * \brief Find an advertising data element in the given advertising or scan response data. - * - * \param adType Advertising data element type to find. - * \param dataLen Data length. - * \param pData Pointer to advertising or scan response data. - * - * \return Pointer to the advertising data element byte array or NULL if not found. - */ -/*************************************************************************************************/ -uint8_t *DmFindAdType(uint8_t adType, uint8_t dataLen, uint8_t *pData); - -/*************************************************************************************************/ -/*! - * \fn DmAdvInit - * - * \brief Initialize DM advertising. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmAdvStart - * - * \brief Start advertising using the given advertising type and duration. - * - * \param advType Advertising type. - * \param duration The advertising duration, in milliseconds. - * \param peerAddrType Peer address type. - * \param pPeerAddr Peer address. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvStart(uint8_t advType, uint16_t duration, uint8_t peerAddrType, uint8_t *pPeerAddr); - -/*************************************************************************************************/ -/*! - * \fn DmAdvStop - * - * \brief Stop advertising. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvStop(void); - -/*************************************************************************************************/ -/*! - * \fn DmAdvSetInterval - * - * \brief Set the minimum and maximum advertising intervals. - * - * \param intervalMin Minimum advertising interval. - * \param intervalMax Maximum advertising interval. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvSetInterval(uint16_t intervalMin, uint16_t intervalMax); - -/*************************************************************************************************/ -/*! - * \fn DmAdvSetChannelMap - * - * \brief Include or exclude certain channels from the advertising channel map. - * - * \param channelMap Advertising channel map. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvSetChannelMap(uint8_t channelMap); - -/*************************************************************************************************/ -/*! - * \fn DmAdvSetData - * - * \brief Set the advertising or scan response data to the given data. - * - * \param location Data location. - * \param len Length of the data. Maximum length is 31 bytes. - * \param pData Pointer to the data. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvSetData(uint8_t location, uint8_t len, uint8_t *pData); - -/*************************************************************************************************/ -/*! - * \fn DmAdvSetAddrType - * - * \brief Set the local address type used while advertising. This function can be used to - * configure advertising to use a random address. - * - * \param addrType Address type. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvSetAddrType(uint8_t addrType); - -/*************************************************************************************************/ -/*! - * \fn DmAdvSetAdValue - * - * \brief Set the value of an advertising data element in the given advertising or - * scan response data. If the element already exists in the data then it is replaced - * with the new value. If the element does not exist in the data it is appended - * to it, space permitting. - * - * \param adType Advertising data element type. - * \param len Length of the value. Maximum length is 29 bytes. - * \param pValue Pointer to the value. - * \param pAdvDataLen Advertising or scan response data length. The new length is returned - * in this parameter. - * \param pAdvData Pointer to advertising or scan response data. - * - * \return TRUE if the element was successfully added to the data, FALSE otherwise. - */ -/*************************************************************************************************/ -bool_t DmAdvSetAdValue(uint8_t adType, uint8_t len, uint8_t *pValue, uint8_t *pAdvDataLen, - uint8_t *pAdvData); - -/*************************************************************************************************/ -/*! - * \fn DmAdvSetName - * - * \brief Set the device name in the given advertising or scan response data. If the - * name can only fit in the data if it is shortened, the name is shortened - * and the AD type is changed to DM_ADV_TYPE_SHORT_NAME. - * - * \param len Length of the name. Maximum length is 29 bytes. - * \param pValue Pointer to the name in UTF-8 format. - * \param pAdvDataLen Advertising or scan response data length. The new length is returned - * in this parameter. - * \param pAdvData Pointer to advertising or scan response data. - * - * \return TRUE if the element was successfully added to the data, FALSE otherwise. - */ -/*************************************************************************************************/ -bool_t DmAdvSetName(uint8_t len, uint8_t *pValue, uint8_t *pAdvDataLen, uint8_t *pAdvData); - -/*************************************************************************************************/ -/*! - * \fn DmAdvPrivInit - * - * \brief Initialize private advertising. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvPrivInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmAdvPrivStart - * - * \brief Start using a private resolvable address. - * - * \param changeInterval Interval between automatic address changes, in seconds. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvPrivStart(uint16_t changeInterval); - -/*************************************************************************************************/ -/*! - * \fn DmAdvPrivStop - * - * \brief Stop using a private resolvable address. - * - * \return None. - */ -/*************************************************************************************************/ -void DmAdvPrivStop(void); - -/*************************************************************************************************/ -/*! - * \fn DmScanInit - * - * \brief Initialize DM scanning. - * - * \return None. - */ -/*************************************************************************************************/ -void DmScanInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmScanStart - * - * \brief Start scanning. - * - * \param mode Discoverability mode. - * \param scanType Scan type. - * \param filterDup Filter duplicates. Set to TRUE to filter duplicate responses received - * from the same device. Set to FALSE to receive all responses. - * \param duration The scan duration, in milliseconds. If set to zero, scanning will - * continue until DmScanStop() is called. - * - * \return None. - */ -/*************************************************************************************************/ -void DmScanStart(uint8_t mode, uint8_t scanType, bool_t filterDup, uint16_t duration); - -/*************************************************************************************************/ -/*! - * \fn DmScanStop - * - * \brief Stop scanning. - * - * \return None. - */ -/*************************************************************************************************/ -void DmScanStop(void); - -/*************************************************************************************************/ -/*! - * \fn DmScanSetInterval - * - * \brief Set the scan interval and window. - * - * \param scanInterval The scan interval. - * \param scanWindow The scan window. - * - * \return None. - */ -/*************************************************************************************************/ -void DmScanSetInterval(uint16_t scanInterval, uint16_t scanWindow); - -/*************************************************************************************************/ -/*! - * \fn DmScanSetAddrType - * - * \brief Set the local address type used while scanning. This function can be used to - * configure scanning to use a random address. - * - * \param addrType Address type. - * - * \return None. - */ -/*************************************************************************************************/ -void DmScanSetAddrType(uint8_t addrType); - -/*************************************************************************************************/ -/*! - * \fn DmConnInit - * - * \brief Initialize DM connection manager. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmConnMasterInit - * - * \brief Initialize DM connection manager for operation as master. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnMasterInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmConnSlaveInit - * - * \brief Initialize DM connection manager for operation as slave. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnSlaveInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmConnRegister - * - * \brief Register with the DM connection manager. - * - * \param clientId The client identifier. - * \param cback Client callback function. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnRegister(uint8_t clientId, dmCback_t cback); - -/*************************************************************************************************/ -/*! - * \fn DmConnOpen - * - * \brief Open a connection to a peer device with the given address. - * - * \param clientId The client identifier. - * \param addrType Address type. - * \param pAddr Peer device address. - * - * \return Connection identifier. - */ -/*************************************************************************************************/ -dmConnId_t DmConnOpen(uint8_t clientId, uint8_t addrType, uint8_t *pAddr); - -/*************************************************************************************************/ -/*! - * \fn DmConnClose - * - * \brief Close the connection with the give connection identifier. - * - * \param clientId The client identifier. - * \param connId Connection identifier. - * \param reason Reason connection is being closed. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnClose(uint8_t clientId, dmConnId_t connId, uint8_t reason); - -/*************************************************************************************************/ -/*! - * \fn DmConnAccept - * - * \brief Accept a connection from the given peer device by initiating directed advertising. - * - * \param clientId The client identifier. - * \param advType Advertising type. - * \param addrType Address type. - * \param pAddr Peer device address. - * - * \return Connection identifier. - */ -/*************************************************************************************************/ -dmConnId_t DmConnAccept(uint8_t clientId, uint8_t advType, uint8_t addrType, uint8_t *pAddr); - -/*************************************************************************************************/ -/*! - * \fn DmConnUpdate - * - * \brief Update the connection parameters of an open connection - * - * \param connId Connection identifier. - * \param pConnSpec Connection specification. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnUpdate(dmConnId_t connId, hciConnSpec_t *pConnSpec); - -/*************************************************************************************************/ -/*! - * \fn DmConnSetScanInterval - * - * \brief Set the scan interval and window for created connections created with DmConnOpen(). - * - * \param scanInterval The scan interval. - * \param scanWindow The scan window. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnSetScanInterval(uint16_t scanInterval, uint16_t scanWindow); - -/*************************************************************************************************/ -/*! - * \fn DmConnSetConnSpec - * - * \brief Set the connection specification parameters for connections created with DmConnOpen(). - * - * \param pConnSpec Connection spec parameters. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnSetConnSpec(hciConnSpec_t *pConnSpec); - -/*************************************************************************************************/ -/*! - * \fn DmConnSetAddrType - * - * \brief Set the local address type used for connections created with DmConnOpen(). - * - * \param addrType Address type. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnSetAddrType(uint8_t addrType); - -/*************************************************************************************************/ -/*! - * \fn DmConnSetIdle - * - * \brief Configure a bit in the connection idle state mask as busy or idle. - * - * \param connId Connection identifier. - * \param idleMask Bit in the idle state mask to configure. - * \param idle DM_CONN_BUSY or DM_CONN_IDLE. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnSetIdle(dmConnId_t connId, uint16_t idleMask, uint8_t idle); - -/*************************************************************************************************/ -/*! - * \fn DmConnCheckIdle - * - * \brief Check if a connection is idle. - * - * \param connId Connection identifier. - * - * \return Zero if connection is idle, nonzero if busy. - */ -/*************************************************************************************************/ -uint16_t DmConnCheckIdle(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn DmConnReadRssi - * - * \brief Read RSSI of a given connection. - * - * \param connId Connection identifier. - * - * \return None. - */ -/*************************************************************************************************/ -void DmConnReadRssi(dmConnId_t connId); - -/*************************************************************************************************/ -/*! -* \fn DmRemoteConnParamReqReply -* -* \brief Reply to the HCI remote connection parameter request event. This command is used to -* indicate that the Host has accepted the remote device’s request to change connection -* parameters. -* -* \param connId Connection identifier. -* \param pConnSpec Connection specification. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmRemoteConnParamReqReply(dmConnId_t connId, hciConnSpec_t *pConnSpec); - -/*************************************************************************************************/ -/*! -* \fn DmRemoteConnParamReqNegReply -* -* \brief Negative reply to the HCI remote connection parameter request event. This command -* is used to indicate that the Host has rejected the remote device’s request to change -* connection parameters. -* -* \param connId Connection identifier. -* \param reason Reason for rejection. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmRemoteConnParamReqNegReply(dmConnId_t connId, uint8_t reason); - -/*************************************************************************************************/ -/*! -* \fn DmConnSetDataLen -* -* \brief Set data length for a given connection. -* -* \param connId Connection identifier. -* \param txOctets Maximum number of payload octets for a Data PDU. -* \param txTime Maximum number of microseconds for a Data PDU. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmConnSetDataLen(dmConnId_t connId, uint16_t txOctets, uint16_t txTime); - -/*************************************************************************************************/ -/*! -* \fn DmWriteAuthPayloadTimeout -* -* \brief Set authenticated payload timeout for a given connection. -* -* \param connId Connection identifier. -* \param timeout Timeout period in units of 10ms -* -* \return None. -*/ -/*************************************************************************************************/ -void DmWriteAuthPayloadTimeout(dmConnId_t connId, uint16_t timeout); - -/*************************************************************************************************/ -/*! - * \fn DmDevReset - * - * \brief Reset the device. - * - * \return None. - */ -/*************************************************************************************************/ -void DmDevReset(void); - -/*************************************************************************************************/ -/*! - * \fn DmDevRole - * - * \brief Return the device role indicating master or slave. - * - * \return Device role. - */ -/*************************************************************************************************/ -uint8_t DmDevRole(void); - -/*************************************************************************************************/ -/*! - * \fn DmDevSetRandAddr - * - * \brief Set the random address to be used by the local device. - * - * \param pAddr Random address. - * - * \return None. - */ -/*************************************************************************************************/ -void DmDevSetRandAddr(uint8_t *pAddr); - -/*************************************************************************************************/ -/*! - * \fn DmDevWhiteListAdd - * - * \brief Add a peer device to the white list. Note that this function cannot be called - * while advertising, scanning, or connecting with white list filtering active. - * - * \param addrType Address type. - * \param pAddr Peer device address. - * - * \return None. - */ -/*************************************************************************************************/ -void DmDevWhiteListAdd(uint8_t addrType, uint8_t *pAddr); - -/*************************************************************************************************/ -/*! - * \fn DmDevWhiteListRemove - * - * \brief Remove a peer device from the white list. Note that this function cannot be called - * while advertising, scanning, or connecting with white list filtering active. - * - * \param addrType Address type. - * \param pAddr Peer device address. - * - * \return None. - */ -/*************************************************************************************************/ -void DmDevWhiteListRemove(uint8_t addrType, uint8_t *pAddr); - -/*************************************************************************************************/ -/*! - * \fn DmDevWhiteListClear - * - * \brief Clear the white list. Note that this function cannot be called while - * advertising, scanning, or connecting with white list filtering active. - * - * \return None. - */ -/*************************************************************************************************/ -void DmDevWhiteListClear(void); - -/*************************************************************************************************/ -/*! - * \fn DmDevSetFilterPolicy - * - * \brief Set the Advertising, Scanning or Initiator filter policy. - * - * \param mode Policy mode. - * \param policy Filter policy. - * - * \return TRUE if the filter policy was successfully set, FALSE otherwise. - */ -/*************************************************************************************************/ -bool_t DmDevSetFilterPolicy(uint8_t mode, uint8_t policy); - -/*************************************************************************************************/ -/*! - * \fn DmDevVsInit - * - * \brief Vendor-specific controller initialization function. - * - * \param param Vendor-specific parameter. - * - * \return None. - */ -/*************************************************************************************************/ -void DmDevVsInit(uint8_t param); - -/*************************************************************************************************/ -/*! - * \fn DmSecInit - * - * \brief Initialize DM security. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmSecLescInit - * - * \brief Initialize DM LE Secure Connections security. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecLescInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmSecPairReq - * - * \brief This function is called by a master device to initiate pairing. - * - * \param connId DM connection ID. - * \param oob Out-of-band pairing data present or not present. - * \param auth Authentication and bonding flags. - * \param iKeyDist Initiator key distribution flags. - * \param rKeyDist Responder key distribution flags. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecPairReq(dmConnId_t connId, bool_t oob, uint8_t auth, uint8_t iKeyDist, uint8_t rKeyDist); - -/*************************************************************************************************/ -/*! - * \fn DmSecPairRsp - * - * \brief This function is called by a slave device to proceed with pairing after a - * DM_SEC_PAIR_IND event is received. - * - * \param connId DM connection ID. - * \param oob Out-of-band pairing data present or not present. - * \param auth Authentication and bonding flags. - * \param iKeyDist Initiator key distribution flags. - * \param rKeyDist Responder key distribution flags. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecPairRsp(dmConnId_t connId, bool_t oob, uint8_t auth, uint8_t iKeyDist, uint8_t rKeyDist); - -/*************************************************************************************************/ -/*! - * \fn DmSecCancelReq - * - * \brief This function is called to cancel the pairing process. - * - * \param connId DM connection ID. - * \param reason Failure reason. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecCancelReq(dmConnId_t connId, uint8_t reason); - -/*************************************************************************************************/ -/*! - * \fn DmSecAuthRsp - * - * \brief This function is called in response to a DM_SEC_AUTH_REQ_IND event to provide - * PIN or OOB data during pairing. - * - * \param connId DM connection ID. - * \param authDataLen Length of PIN or OOB data. - * \param pAuthData pointer to PIN or OOB data. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecAuthRsp(dmConnId_t connId, uint8_t authDataLen, uint8_t *pAuthData); - -/*************************************************************************************************/ -/*! - * \fn DmSecSlaveReq - * - * \brief This function is called by a slave device to request that the master initiates - * pairing or link encryption. - * - * \param connId DM connection ID. - * \param auth Authentication flags. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecSlaveReq(dmConnId_t connId, uint8_t auth); - -/*************************************************************************************************/ -/*! - * \fn DmSecEncryptReq - * - * \brief This function is called by a master device to initiate link encryption. - * - * \param connId DM connection ID. - * \param secLevel Security level of pairing when LTK was exchanged. - * \param pLtk Pointer to LTK parameter structure. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecEncryptReq(dmConnId_t connId, uint8_t secLevel, dmSecLtk_t *pLtk); - -/*************************************************************************************************/ -/*! - * \fn DmSecLtkRsp - * - * \brief This function is called by a slave in response to a DM_SEC_LTK_REQ_IND event - * to provide the long term key used for encryption. - * - * \param connId DM connection ID. - * \param keyFound TRUE if key found. - * \param secLevel Security level of pairing when key was exchanged. - * \param pKey Pointer to the key, if found. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecLtkRsp(dmConnId_t connId, bool_t keyFound, uint8_t secLevel, uint8_t *pKey); - -/*************************************************************************************************/ -/*! - * \fn DmSecSetLocalCsrk - * - * \brief This function sets the local CSRK used by the device. - * - * \param pCsrk Pointer to CSRK. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecSetLocalCsrk(uint8_t *pCsrk); - -/*************************************************************************************************/ -/*! - * \fn DmSecSetLocalIrk - * - * \brief This function sets the local IRK used by the device. - * - * \param pCsrk Pointer to IRK. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecSetLocalIrk(uint8_t *pIrk); - -/*************************************************************************************************/ -/*! - * \fn DmPrivInit - * - * \brief Initialize DM privacy module. - * - * \return None. - */ -/*************************************************************************************************/ -void DmPrivInit(void); - -/*************************************************************************************************/ -/*! - * \fn DmPrivResolveAddr - * - * \brief Resolve a private resolvable address. When complete the client's callback function - * is called with a DM_PRIV_RESOLVED_ADDR_IND event. The client must wait to receive - * this event before executing this function again. - * - * \param pAddr Peer device address. - * \param pIrk The peer's identity resolving key. - * \param param Client-defined parameter returned with callback event. - * - * \return None. - */ -/*************************************************************************************************/ -void DmPrivResolveAddr(uint8_t *pAddr, uint8_t *pIrk, uint16_t param); - -/*************************************************************************************************/ -/*! -* \fn DmPrivAddDevToResList -* -* \brief Add device to resolving list. When complete the client's callback function -* is called with a DM_PRIV_ADD_DEV_TO_RES_LIST_IND event. The client must wait -* to receive this event before executing this function again. -* -* Note: This command cannot be used when address translation is enabled in the LL and: -* - Advertising is enabled -* - Scanning is enabled -* - Create connection command is outstanding -* -* Note: If the local or peer IRK associated with the peer Identity Address is all -* zeros then the LL will use or accept the local or peer Identity Address. -* -* Note: 'enableLlPriv' should be set to TRUE when the last device is being added -* to resolving list to enable address resolution in LL. -* -* \param addrType Peer identity address type. -* \param pIdentityAddr Peer identity address. -* \param pPeerIrk The peer's identity resolving key. -* \param pLocalIrk The local identity resolving key. -* \param enableLlPriv Set to TRUE to enable address resolution in LL. -* \param param client-defined parameter returned with callback event. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmPrivAddDevToResList(uint8_t addrType, const uint8_t *pIdentityAddr, uint8_t *pPeerIrk, - uint8_t *pLocalIrk, bool_t enableLlPriv, uint16_t param); - -/*************************************************************************************************/ -/*! -* \fn DmPrivRemDevFromResList -* -* \brief Remove device from resolving list. When complete the client's callback function -* is called with a DM_PRIV_REM_DEV_FROM_RES_LIST_IND event. The client must wait to -* receive this event before executing this function again. -* -* Note: This command cannot be used when address translation is enabled in the LL and: -* - Advertising is enabled -* - Scanning is enabled -* - Create connection command is outstanding -* -* \param addrType Peer identity address type. -* \param pIdentityAddr Peer identity address. -* \param param client-defined parameter returned with callback event. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmPrivRemDevFromResList(uint8_t addrType, const uint8_t *pIdentityAddr, uint16_t param); - -/*************************************************************************************************/ -/*! -* \fn DmPrivClearResList -* -* \brief Clear resolving list. When complete the client's callback function is called with a -* DM_PRIV_CLEAR_RES_LIST_IND event. The client must wait to receive this event before -* executing this function again. -* -* Note: This command cannot be used when address translation is enabled in the LL and: -* - Advertising is enabled -* - Scanning is enabled -* - Create connection command is outstanding -* -* Note: Address resolution in LL will be disabled when resolving list's cleared -* successfully. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmPrivClearResList(void); - -/*************************************************************************************************/ -/*! -* \fn DmPrivReadPeerResolvableAddr -* -* \brief HCI read peer resolvable address command. When complete the client's callback -* function is called with a DM_PRIV_READ_PEER_RES_ADDR_IND event. The client must -* wait to receive this event before executing this function again. -* -* \param addrType Peer identity address type. -* \param pIdentityAddr Peer identity address. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmPrivReadPeerResolvableAddr(uint8_t addrType, const uint8_t *pIdentityAddr); - -/*************************************************************************************************/ -/*! -* \fn DmPrivReadLocalResolvableAddr -* -* \brief Read local resolvable address command. When complete the client's callback -* function is called with a DM_PRIV_READ_LOCAL_RES_ADDR_IND event. The client must -* wait to receive this event before executing this function again. -* -* \param addrType Peer identity address type. -* \param pIdentityAddr Peer identity address. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmPrivReadLocalResolvableAddr(uint8_t addrType, const uint8_t *pIdentityAddr); - -/*************************************************************************************************/ -/*! -* \fn DmPrivSetAddrResEnable -* -* \brief Enable or disable address resolution in LL. When complete the client's callback -* function is called with a DM_PRIV_SET_ADDR_RES_ENABLE_IND event. The client must -* wait to receive this event before executing this function again. -* -* Note: This command can be used at any time except when: -* - Advertising is enabled -* - Scanning is enabled -* - Create connection command is outstanding -* -* \param enable Set to TRUE to enable address resolution or FALSE to disable it. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmPrivSetAddrResEnable(bool_t enable); - -/*************************************************************************************************/ -/*! -* \fn DmPrivSetResolvablePrivateAddrTimeout -* -* \brief Set resolvable private address timeout command. -* -* \param rpaTimeout Timeout measured in seconds. -* -* \return None. -*/ -/*************************************************************************************************/ -void DmPrivSetResolvablePrivateAddrTimeout(uint16_t rpaTimeout); - -/*************************************************************************************************/ -/*! -* \fn DmLlPrivEnabled -* -* \brief Whether LL Privacy is enabled. -* -* \return TRUE if LL Privacy is enabled. FALSE, otherwise. -*/ -/*************************************************************************************************/ -bool_t DmLlPrivEnabled(void); - -/*************************************************************************************************/ -/*! -* \fn DmLlAddrType -* -* \brief Map an address type to a type used by LL. -* -* \param addrType Address type used by Host. -* -* \return Address type used by LL. -*/ -/*************************************************************************************************/ -uint8_t DmLlAddrType(uint8_t addrType); - -/*************************************************************************************************/ -/*! -* \fn DmHostAddrType -* -* \brief Map an address type to a type used by Host. -* -* \param addrType Address type used by LL. -* -* \return Address type used by Host. -*/ -/*************************************************************************************************/ -uint8_t DmHostAddrType(uint8_t addrType); - -/*************************************************************************************************/ -/*! - * \fn DmL2cConnUpdateCnf - * - * \brief For internal use only. L2C calls this function to send the result of an L2CAP - * connection update response to DM. - * - * \param handle Connection handle. - * \param reason Connection update response reason code. - * \return None. - */ -/*************************************************************************************************/ -void DmL2cConnUpdateCnf(uint16_t handle, uint16_t reason); - -/*************************************************************************************************/ -/*! - * \fn DmL2cConnUpdateInd - * - * \brief For internal use only. L2C calls this function when it receives a connection update - * request from a peer device. - * - * \param identifier Identifier value. - * \param handle Connection handle. - * \param pConnSpec Connection spec parameters. - * \return None. - */ -/*************************************************************************************************/ -void DmL2cConnUpdateInd(uint8_t identifier, uint16_t handle, hciConnSpec_t *pConnSpec); - -/*************************************************************************************************/ -/*! - * \fn DmConnIdByHandle - * - * \brief For internal use only. Find the connection ID with matching handle. - * - * \param handle Handle to find. - * - * \return Connection ID or DM_CONN_ID_NONE if error. - */ -/*************************************************************************************************/ -dmConnId_t DmConnIdByHandle(uint16_t handle); - -/*************************************************************************************************/ -/*! - * \fn DmConnInUse - * - * \brief For internal use only. Return TRUE if the connection is in use. - * - * \param connId Connection ID. - * - * \return TRUE if the connection is in use, FALSE otherwise. - */ -/*************************************************************************************************/ -bool_t DmConnInUse(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn DmConnPeerAddrType - * - * \brief For internal use only. Return the peer address type. - * - * \param connId Connection ID. - * - * \return Peer address type. - */ -/*************************************************************************************************/ -uint8_t DmConnPeerAddrType(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn DmConnPeerAddr - * - * \brief For internal use only. Return the peer device address. - * - * \param connId Connection ID. - * - * \return Pointer to peer device address. - */ -/*************************************************************************************************/ -uint8_t *DmConnPeerAddr(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn DmConnLocalAddrType - * - * \brief For internal use only. Return the local address type. - * - * \param connId Connection ID. - * - * \return Local address type. - */ -/*************************************************************************************************/ -uint8_t DmConnLocalAddrType(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn DmConnLocalAddr - * - * \brief For internal use only. Return the local address. - * - * \param connId Connection ID. - * - * \return Pointer to local address. - */ -/*************************************************************************************************/ -uint8_t *DmConnLocalAddr(dmConnId_t connId); - -/*************************************************************************************************/ -/*! -* \fn DmConnPeerRpa -* -* \brief For internal use only. Return the peer resolvable private address (RPA). -* -* \param connId Connection ID. -* -* \return Pointer to peer RPA. -*/ -/*************************************************************************************************/ -uint8_t *DmConnPeerRpa(dmConnId_t connId); - -/*************************************************************************************************/ -/*! -* \fn DmConnLocalRpa -* -* \brief For internal use only. Return the local resolvable private address (RPA). -* -* \param connId Connection ID. -* -* \return Pointer to local RPA. -*/ -/*************************************************************************************************/ -uint8_t *DmConnLocalRpa(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn DmConnSecLevel - * - * \brief For internal use only. Return the security level of the connection. - * - * \param connId Connection ID. - * - * \return Security level of the connection. - */ -/*************************************************************************************************/ -uint8_t DmConnSecLevel(dmConnId_t connId); - -/*************************************************************************************************/ -/*! - * \fn DmSmpEncryptReq - * - * \brief For internal use only. This function is called by SMP to request encryption. - * - * \param connId DM connection ID. - * \param secLevel Security level of pairing when key was exchanged. - * \param pKey Pointer to key. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSmpEncryptReq(dmConnId_t connId, uint8_t secLevel, uint8_t *pKey); - -/*************************************************************************************************/ -/*! - * \fn DmSmpCbackExec - * - * \brief For internal use only. Execute DM callback from SMP procedures. - * - * \param pDmEvt Pointer to callback event data. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSmpCbackExec(dmEvt_t *pDmEvt); - -/*************************************************************************************************/ -/*! - * \fn DmSecGetLocalCsrk - * - * \brief For internal use only. This function gets the local CSRK used by the device. - * - * \return Pointer to CSRK. - */ -/*************************************************************************************************/ -uint8_t *DmSecGetLocalCsrk(void); - -/*************************************************************************************************/ -/*! - * \fn DmSecGetLocalIrk - * - * \brief For internal use only. This function gets the local IRK used by the device. - * - * \return Pointer to IRK. - */ -/*************************************************************************************************/ -uint8_t *DmSecGetLocalIrk(void); - -/*************************************************************************************************/ -/*! - * \fn DmSecGenerateEccKeyReq - * - * \brief This function generates an ECC key for use with LESC security. - * - * \return none. - */ -/*************************************************************************************************/ -void DmSecGenerateEccKeyReq(void); - -/*************************************************************************************************/ -/*! - * \fn DmSecSetEccKey - * - * \brief This function sets the ECC key for use with LESC security. - * - * \param pKey Pointer to key. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecSetEccKey(wsfSecEccKey_t *pKey); - -/*************************************************************************************************/ -/*! - * \fn DmSecGetEccKey - * - * \brief This function gets the local ECC key for use with LESC security. - * - * \return Pointer to local ECC key. - */ -/*************************************************************************************************/ -wsfSecEccKey_t *DmSecGetEccKey(void); - -/*************************************************************************************************/ -/*! - * \fn DmSecSetDebugEccKey - * - * \brief This function sets the ECC key for use with LESC security to standard debug keys values. - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecSetDebugEccKey(void); - -/*************************************************************************************************/ -/*! - * \fn DmSecSetOob - * - * \brief This function configures the DM to use OOB pairing for the given connection. - * The pRand and pConfirm contain the Random and Confirm values exchanged via - * out of band methods. - * - * \param connId ID of the connection - * \param pConfig Pointer to OOB configuration. - * - * \return Pointer to IRK. - */ -/*************************************************************************************************/ -void DmSecSetOob(dmConnId_t connId, dmSecLescOobCfg_t *pConfig); - -/*************************************************************************************************/ -/*! - * \fn DmSecCalcOobReq - * - * \brief This function calculates the local random and confirm values used in LESC OOB pairing. - * The operation's result is posted as a DM_SEC_CALC_OOB_IND event to the application's DM - * callback handler. The local rand and confirm values are exchanged with the peer via - * out-of-band (OOB) methods and passed into the DmSecSetOob after DM_CONN_OPEN_IND. - * - * \param pRand Random value used in calculation. - * \param pPubKeyX X component of the local public key. - * - * \return none. - */ -/*************************************************************************************************/ -void DmSecCalcOobReq(uint8_t *pRand, uint8_t *pPubKeyX); - -/*************************************************************************************************/ -/*! - * \fn DmSecCompareRsp - * - * \brief This function is called by the application in response to a DM_SEC_COMPARE_IND event. - * The valid parameter indicates if the compare value of the DM_SEC_COMPARE_IND was valid. - * - * \param connId ID of the connection - * \param valid TRUE if compare value was valid - * - * \return None. - */ -/*************************************************************************************************/ -void DmSecCompareRsp(dmConnId_t connId, bool_t valid); - -/*************************************************************************************************/ -/*! - * \fn DmSecGetCompareValue - * - * \brief This function returns the 6-digit compare value for the specified 128-bit confirm value. - * - * \param pConfirm Pointer to 128-bit comfirm value. - * - * \return Six-digit compare value. - */ -/*************************************************************************************************/ -uint32_t DmSecGetCompareValue(uint8_t *pConfirm); - -#ifdef __cplusplus -}; -#endif - -#endif /* DM_API_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/dm_handler.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/dm_handler.h deleted file mode 100644 index 4c7dbf298e4..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/dm_handler.h +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file dm_handler.h - * - * \brief Interface to DM event handler. - * - * $Date: 2012-03-29 13:24:04 -0700 (Thu, 29 Mar 2012) $ - * $Revision: 287 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef DM_HANDLER_H -#define DM_HANDLER_H - -#include "wsf_os.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn DmHandlerInit - * - * \brief DM handler init function called during system initialization. - * - * \param handlerID WSF handler ID for DM. - * - * \return None. - */ -/*************************************************************************************************/ -void DmHandlerInit(wsfHandlerId_t handlerId); - - -/*************************************************************************************************/ -/*! - * \fn DmHandler - * - * \brief WSF event handler for DM. - * - * \param event WSF event mask. - * \param pMsg WSF message. - * - * \return None. - */ -/*************************************************************************************************/ -void DmHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); - -#ifdef __cplusplus -}; -#endif - -#endif /* DM_HANDLER_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/hci_api.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/hci_api.h deleted file mode 100644 index b6ea50e5ab4..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/hci_api.h +++ /dev/null @@ -1,596 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hci_api.h - * - * \brief HCI subsystem API. - * - * $Date: 2016-04-05 14:14:53 -0700 (Tue, 05 Apr 2016) $ - * $Revision: 6646 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef HCI_API_H -#define HCI_API_H - -#include "wsf_types.h" -#include "hci_defs.h" -#include "wsf_os.h" -#include "bda.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Internal event values for the HCI event and sec callbacks */ -#define HCI_RESET_SEQ_CMPL_CBACK_EVT 0 /*! Reset sequence complete */ -#define HCI_LE_CONN_CMPL_CBACK_EVT 1 /*! LE connection complete */ -#define HCI_LE_ENHANCED_CONN_CMPL_CBACK_EVT 2 /*! LE enhanced connection complete */ -#define HCI_DISCONNECT_CMPL_CBACK_EVT 3 /*! LE disconnect complete */ -#define HCI_LE_CONN_UPDATE_CMPL_CBACK_EVT 4 /*! LE connection update complete */ -#define HCI_LE_CREATE_CONN_CANCEL_CMD_CMPL_CBACK_EVT 5 /*! LE create connection cancel command complete */ -#define HCI_LE_ADV_REPORT_CBACK_EVT 6 /*! LE advertising report */ -#define HCI_READ_RSSI_CMD_CMPL_CBACK_EVT 7 /*! Read RSSI command complete */ -#define HCI_LE_READ_CHAN_MAP_CMD_CMPL_CBACK_EVT 8 /*! LE Read channel map command complete */ -#define HCI_READ_TX_PWR_LVL_CMD_CMPL_CBACK_EVT 9 /*! Read transmit power level command complete */ -#define HCI_READ_REMOTE_VER_INFO_CMPL_CBACK_EVT 10 /*! Read remote version information complete */ -#define HCI_LE_READ_REMOTE_FEAT_CMPL_CBACK_EVT 11 /*! LE read remote features complete */ -#define HCI_LE_LTK_REQ_REPL_CMD_CMPL_CBACK_EVT 12 /*! LE LTK request reply command complete */ -#define HCI_LE_LTK_REQ_NEG_REPL_CMD_CMPL_CBACK_EVT 13 /*! LE LTK request negative reply command complete */ -#define HCI_ENC_KEY_REFRESH_CMPL_CBACK_EVT 14 /*! Encryption key refresh complete */ -#define HCI_ENC_CHANGE_CBACK_EVT 15 /*! Encryption change */ -#define HCI_LE_LTK_REQ_CBACK_EVT 16 /*! LE LTK request */ -#define HCI_VENDOR_SPEC_CMD_STATUS_CBACK_EVT 17 /*! Vendor specific command status */ -#define HCI_VENDOR_SPEC_CMD_CMPL_CBACK_EVT 18 /*! Vendor specific command complete */ -#define HCI_VENDOR_SPEC_CBACK_EVT 19 /*! Vendor specific */ -#define HCI_HW_ERROR_CBACK_EVT 20 /*! Hardware error */ -#define HCI_LE_ADD_DEV_TO_RES_LIST_CMD_CMPL_CBACK_EVT 21 /*! LE add device to resolving list command complete */ -#define HCI_LE_REM_DEV_FROM_RES_LIST_CMD_CMPL_CBACK_EVT 22 /*! LE remove device from resolving command complete */ -#define HCI_LE_CLEAR_RES_LIST_CMD_CMPL_CBACK_EVT 23 /*! LE clear resolving list command complete */ -#define HCI_LE_READ_PEER_RES_ADDR_CMD_CMPL_CBACK_EVT 24 /*! LE read peer resolving address command complete */ -#define HCI_LE_READ_LOCAL_RES_ADDR_CMD_CMPL_CBACK_EVT 25 /*! LE read local resolving address command complete */ -#define HCI_LE_SET_ADDR_RES_ENABLE_CMD_CMPL_CBACK_EVT 26 /*! LE set address resolving enable command complete */ -#define HCI_LE_ENCRYPT_CMD_CMPL_CBACK_EVT 27 /*! LE encrypt command complete */ -#define HCI_LE_RAND_CMD_CMPL_CBACK_EVT 28 /*! LE rand command complete */ -#define HCI_LE_REM_CONN_PARAM_REP_CMD_CMPL_CBACK_EVT 29 /*! LE remote connection parameter request reply complete */ -#define HCI_LE_REM_CONN_PARAM_NEG_REP_CMD_CMPL_CBACK_EVT 30 /*! LE remote connection parameter request negative reply complete */ -#define HCI_LE_READ_DEF_DATA_LEN_CMD_CMPL_CBACK_EVT 31 /*! LE read suggested default data length command complete */ -#define HCI_LE_WRITE_DEF_DATA_LEN_CMD_CMPL_CBACK_EVT 32 /*! LE write suggested default data length command complete */ -#define HCI_LE_SET_DATA_LEN_CMD_CMPL_CBACK_EVT 33 /*! LE set data length command complete */ -#define HCI_LE_READ_MAX_DATA_LEN_CMD_CMPL_CBACK_EVT 34 /*! LE read maximum data length command complete */ -#define HCI_LE_REM_CONN_PARAM_REQ_CBACK_EVT 35 /*! LE remote connection parameter request */ -#define HCI_LE_DATA_LEN_CHANGE_CBACK_EVT 36 /*! LE data length change */ -#define HCI_LE_READ_LOCAL_P256_PUB_KEY_CMPL_CBACK_EVT 37 /*! LE read local P-256 public key */ -#define HCI_LE_GENERATE_DHKEY_CMPL_CBACK_EVT 38 /*! LE generate DHKey complete */ -#define HCI_WRITE_AUTH_PAYLOAD_TO_CMD_CMPL_CBACK_EVT 39 /*! Write authenticated payload timeout command complete */ -#define HCI_AUTH_PAYLOAD_TO_EXPIRED_CBACK_EVT 40 /*! Authenticated payload timeout expired event */ - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Connection specification type */ -typedef struct -{ - uint16_t connIntervalMin; - uint16_t connIntervalMax; - uint16_t connLatency; - uint16_t supTimeout; - uint16_t minCeLen; - uint16_t maxCeLen; -} hciConnSpec_t; - -/*! LE connection complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; - uint8_t role; - uint8_t addrType; - bdAddr_t peerAddr; - uint16_t connInterval; - uint16_t connLatency; - uint16_t supTimeout; - uint8_t clockAccuracy; - - /* enhanced fields */ - bdAddr_t localRpa; - bdAddr_t peerRpa; -} hciLeConnCmplEvt_t; - -/*! Disconnect complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; - uint8_t reason; -} hciDisconnectCmplEvt_t; - -/*! LE connection update complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; - uint16_t connInterval; - uint16_t connLatency; - uint16_t supTimeout; -} hciLeConnUpdateCmplEvt_t; - -/*! LE create connection cancel command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; -} hciLeCreateConnCancelCmdCmplEvt_t; - -/*! LE advertising report event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t *pData; - uint8_t len; - int8_t rssi; - uint8_t eventType; - uint8_t addrType; - bdAddr_t addr; - - /* direct fields */ - uint8_t directAddrType; - bdAddr_t directAddr; -} hciLeAdvReportEvt_t; - -/*! Read RSSI command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; - int8_t rssi; -} hciReadRssiCmdCmplEvt_t; - -/*! LE Read channel map command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; - uint8_t chanMap[HCI_CHAN_MAP_LEN]; -} hciReadChanMapCmdCmplEvt_t; - -/*! Read transmit power level command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint8_t handle; - int8_t pwrLvl; -} hciReadTxPwrLvlCmdCmplEvt_t; - -/*! Read remote version information complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; - uint8_t version; - uint16_t mfrName; - uint16_t subversion; -} hciReadRemoteVerInfoCmplEvt_t; - -/*! LE read remote features complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; - uint8_t features[HCI_FEAT_LEN]; -} hciLeReadRemoteFeatCmplEvt_t; - -/*! LE LTK request reply command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; -} hciLeLtkReqReplCmdCmplEvt_t; - -/*! LE LTK request negative reply command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; -} hciLeLtkReqNegReplCmdCmplEvt_t; - -/*! Encryption key refresh complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; -} hciEncKeyRefreshCmpl_t; - -/*! Encryption change event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; - uint8_t enabled; -} hciEncChangeEvt_t; - -/*! LE LTK request event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint16_t handle; - uint8_t randNum[HCI_RAND_LEN]; - uint16_t encDiversifier; -} hciLeLtkReqEvt_t; - -/*! Vendor specific command status event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint16_t opcode; -} hciVendorSpecCmdStatusEvt_t; - -/*! Vendor specific command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint16_t opcode; - uint8_t param[1]; -} hciVendorSpecCmdCmplEvt_t; - -/*! Vendor specific event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t param[1]; -} hciVendorSpecEvt_t; - -/*! Hardware error event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t code; -} hciHwErrorEvt_t; - -/*! LE encrypt command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint8_t data[HCI_ENCRYPT_DATA_LEN]; -} hciLeEncryptCmdCmplEvt_t; - -/*! LE rand command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint8_t randNum[HCI_RAND_LEN]; -} hciLeRandCmdCmplEvt_t; - -/*! LE remote connection parameter request reply command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; -} hciLeRemConnParamRepEvt_t; - -/*! LE remote connection parameter request negative reply command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; -} hciLeRemConnParamNegRepEvt_t; - -/*! LE read suggested default data len command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t suggestedMaxTxOctets; - uint16_t suggestedMaxTxTime; -} hciLeReadDefDataLenEvt_t; - -/*! LE write suggested default data len command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; -} hciLeWriteDefDataLenEvt_t; - -/*! LE set data len command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; -} hciLeSetDataLenEvt_t; - -/*! LE read maximum data len command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t supportedMaxTxOctets; - uint16_t supportedMaxTxTime; - uint16_t supportedMaxRxOctets; - uint16_t supportedMaxRxTime; -} hciLeReadMaxDataLenEvt_t; - -/*! LE remote connetion parameter request event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint16_t handle; - uint16_t intervalMin; - uint16_t intervalMax; - uint16_t latency; - uint16_t timeout; -} hciLeRemConnParamReqEvt_t; - -/*! LE data length change event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint16_t handle; - uint16_t maxTxOctets; - uint16_t maxTxTime; - uint16_t maxRxOctets; - uint16_t maxRxTime; -} hciLeDataLenChangeEvt_t; - -/*! LE local p256 ecc key command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint8_t key[HCI_P256_KEY_LEN]; -} hciLeP256CmplEvt_t; - -/*! LE generate DH key command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint8_t key[HCI_DH_KEY_LEN]; -} hciLeGenDhKeyEvt_t; - -/*! LE read peer resolving address command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint8_t peerRpa[BDA_ADDR_LEN]; -} hciLeReadPeerResAddrCmdCmplEvt_t; - -/*! LE read local resolving address command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint8_t localRpa[BDA_ADDR_LEN]; -} hciLeReadLocalResAddrCmdCmplEvt_t; - -/*! LE set address resolving enable command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; -} hciLeSetAddrResEnableCmdCmplEvt_t; - -/*! LE add device to resolving list command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; -} hciLeAddDevToResListCmdCmplEvt_t; - -/*! LE remove device from resolving list command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; -} hciLeRemDevFromResListCmdCmplEvt_t; - -/*! LE clear resolving list command complete event */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; -} hciLeClearResListCmdCmplEvt_t; - -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t status; - uint16_t handle; -} hciWriteAuthPayloadToCmdCmplEvt_t; - -typedef struct -{ - wsfMsgHdr_t hdr; - uint16_t handle; -} hciAuthPayloadToExpiredEvt_t; - -/*! Union of all event types */ -typedef union -{ - wsfMsgHdr_t hdr; - wsfMsgHdr_t resetSeqCmpl; - hciLeConnCmplEvt_t leConnCmpl; - hciDisconnectCmplEvt_t disconnectCmpl; - hciLeConnUpdateCmplEvt_t leConnUpdateCmpl; - hciLeCreateConnCancelCmdCmplEvt_t leCreateConnCancelCmdCmpl; - hciLeAdvReportEvt_t leAdvReport; - hciReadRssiCmdCmplEvt_t readRssiCmdCmpl; - hciReadChanMapCmdCmplEvt_t readChanMapCmdCmpl; - hciReadTxPwrLvlCmdCmplEvt_t readTxPwrLvlCmdCmpl; - hciReadRemoteVerInfoCmplEvt_t readRemoteVerInfoCmpl; - hciLeReadRemoteFeatCmplEvt_t leReadRemoteFeatCmpl; - hciLeLtkReqReplCmdCmplEvt_t leLtkReqReplCmdCmpl; - hciLeLtkReqNegReplCmdCmplEvt_t leLtkReqNegReplCmdCmpl; - hciEncKeyRefreshCmpl_t encKeyRefreshCmpl; - hciEncChangeEvt_t encChange; - hciLeLtkReqEvt_t leLtkReq; - hciVendorSpecCmdStatusEvt_t vendorSpecCmdStatus; - hciVendorSpecCmdCmplEvt_t vendorSpecCmdCmpl; - hciVendorSpecEvt_t vendorSpec; - hciHwErrorEvt_t hwError; - hciLeEncryptCmdCmplEvt_t leEncryptCmdCmpl; - hciLeRandCmdCmplEvt_t leRandCmdCmpl; - hciLeReadPeerResAddrCmdCmplEvt_t leReadPeerResAddrCmdCmpl; - hciLeReadLocalResAddrCmdCmplEvt_t leReadLocalResAddrCmdCmpl; - hciLeSetAddrResEnableCmdCmplEvt_t leSetAddrResEnableCmdCmpl; - hciLeAddDevToResListCmdCmplEvt_t leAddDevToResListCmdCmpl; - hciLeRemDevFromResListCmdCmplEvt_t leRemDevFromResListCmdCmpl; - hciLeClearResListCmdCmplEvt_t leClearResListCmdCmpl; - hciLeRemConnParamRepEvt_t leRemConnParamRepCmdCmpl; - hciLeRemConnParamNegRepEvt_t leRemConnParamNegRepCmdCmpl; - hciLeReadDefDataLenEvt_t leReadDefDataLenCmdCmpl; - hciLeWriteDefDataLenEvt_t leWriteDefDataLenCmdCmpl; - hciLeSetDataLenEvt_t leSetDataLenCmdCmpl; - hciLeReadMaxDataLenEvt_t leReadMaxDataLenCmdCmpl; - hciLeRemConnParamReqEvt_t leRemConnParamReq; - hciLeDataLenChangeEvt_t leDataLenChange; - hciLeP256CmplEvt_t leP256; - hciLeGenDhKeyEvt_t leGenDHKey; - hciWriteAuthPayloadToCmdCmplEvt_t writeAuthPayloadToCmdCmpl; - hciAuthPayloadToExpiredEvt_t authPayloadToExpired; -} hciEvt_t; - -/************************************************************************************************** - Callback Function Types -**************************************************************************************************/ - -typedef void (*hciEvtCback_t)(hciEvt_t *pEvent); -typedef void (*hciSecCback_t)(hciEvt_t *pEvent); -typedef void (*hciAclCback_t)(uint8_t *pData); -typedef void (*hciFlowCback_t)(uint16_t handle, bool_t flowDisabled); - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*! Initialization, registration, and reset */ -void HciEvtRegister(hciEvtCback_t evtCback); -void HciSecRegister(hciSecCback_t secCback); -void HciAclRegister(hciAclCback_t aclCback, hciFlowCback_t flowCback); -void HciResetSequence(void); -void HciVsInit(uint8_t param); -void HciCoreInit(void); -void HciCoreHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); -void HciSetMaxRxAclLen(uint16_t len); -void HciSetAclQueueWatermarks(uint8_t queueHi, uint8_t queueLo); -void HciSetLeSupFeat(uint8_t feat, bool_t flag); - -/*! Optimization interface */ -uint8_t *HciGetBdAddr(void); -uint8_t HciGetWhiteListSize(void); -int8_t HciGetAdvTxPwr(void); -uint16_t HciGetBufSize(void); -uint8_t HciGetNumBufs(void); -uint8_t *HciGetSupStates(void); -uint8_t HciGetLeSupFeat(void); -uint16_t HciGetMaxRxAclLen(void); -uint8_t HciGetResolvingListSize(void); -bool_t HciLlPrivacySupported(void); - -/*! ACL data interface */ -void HciSendAclData(uint8_t *pAclData); - -/*! Command interface */ -void HciDisconnectCmd(uint16_t handle, uint8_t reason); -void HciLeAddDevWhiteListCmd(uint8_t addrType, uint8_t *pAddr); -void HciLeClearWhiteListCmd(void); -void HciLeConnUpdateCmd(uint16_t handle, hciConnSpec_t *pConnSpec); -void HciLeCreateConnCmd(uint16_t scanInterval, uint16_t scanWindow, uint8_t filterPolicy, - uint8_t peerAddrType, uint8_t *pPeerAddr, uint8_t ownAddrType, - hciConnSpec_t *pConnSpec); -void HciLeCreateConnCancelCmd(void); -void HciLeEncryptCmd(uint8_t *pKey, uint8_t *pData); -void HciLeLtkReqNegReplCmd(uint16_t handle); -void HciLeLtkReqReplCmd(uint16_t handle, uint8_t *pKey); -void HciLeRandCmd(void); -void HciLeReadAdvTXPowerCmd(void); -void HciLeReadBufSizeCmd(void); -void HciLeReadChanMapCmd(uint16_t handle); -void HciLeReadLocalSupFeatCmd(void); -void HciLeReadRemoteFeatCmd(uint16_t handle); -void HciLeReadSupStatesCmd(void); -void HciLeReadWhiteListSizeCmd(void); -void HciLeRemoveDevWhiteListCmd(uint8_t addrType, uint8_t *pAddr); -void HciLeSetAdvEnableCmd(uint8_t enable); -void HciLeSetAdvDataCmd(uint8_t len, uint8_t *pData); -void HciLeSetAdvParamCmd(uint16_t advIntervalMin, uint16_t advIntervalMax, uint8_t advType, - uint8_t ownAddrType, uint8_t peerAddrType, uint8_t *pPeerAddr, - uint8_t advChanMap, uint8_t advFiltPolicy); -void HciLeSetEventMaskCmd(uint8_t *pLeEventMask); -void HciLeSetHostChanClassCmd(uint8_t *pChanMap); -void HciLeSetRandAddrCmd(uint8_t *pAddr); -void HciLeSetScanEnableCmd(uint8_t enable, uint8_t filterDup); -void HciLeSetScanParamCmd(uint8_t scanType, uint16_t scanInterval, uint16_t scanWindow, - uint8_t ownAddrType, uint8_t scanFiltPolicy); -void HciLeSetScanRespDataCmd(uint8_t len, uint8_t *pData); -void HciLeStartEncryptionCmd(uint16_t handle, uint8_t *pRand, uint16_t diversifier, uint8_t *pKey); -void HciReadBdAddrCmd(void); -void HciReadBufSizeCmd(void); -void HciReadLocalSupFeatCmd(void); -void HciReadLocalVerInfoCmd(void); -void HciReadRemoteVerInfoCmd(uint16_t handle); -void HciReadRssiCmd(uint16_t handle); -void HciReadTxPwrLvlCmd(uint16_t handle, uint8_t type); -void HciResetCmd(void); -void HciSetEventMaskCmd(uint8_t *pEventMask); -void HciSetEventMaskPage2Cmd(uint8_t *pEventMask); -void HciReadAuthPayloadTimeout(uint16_t handle); -void HciWriteAuthPayloadTimeout(uint16_t handle, uint16_t timeout); -void HciLeAddDeviceToResolvingListCmd(uint8_t peerAddrType, const uint8_t *pPeerIdentityAddr, - const uint8_t *pPeerIrk, const uint8_t *pLocalIrk); -void HciLeRemoveDeviceFromResolvingList(uint8_t peerAddrType, const uint8_t *pPeerIdentityAddr); -void HciLeClearResolvingList(void); -void HciLeReadResolvingListSize(void); -void HciLeReadPeerResolvableAddr(uint8_t addrType, const uint8_t *pIdentityAddr); -void HciLeReadLocalResolvableAddr(uint8_t addrType, const uint8_t *pIdentityAddr); -void HciLeSetAddrResolutionEnable(uint8_t enable); -void HciLeSetResolvablePrivateAddrTimeout(uint16_t rpaTimeout); -void HciVendorSpecificCmd(uint16_t opcode, uint8_t len, uint8_t *pData); - -void HciLeRemoteConnParamReqReply(uint16_t handle, uint16_t intervalMin, uint16_t intervalMax, uint16_t latency, - uint16_t timeout, uint16_t minCeLen, uint16_t maxCeLen); -void HciLeRemoteConnParamReqNegReply(uint16_t handle, uint8_t reason); -void HciLeSetDataLen(uint16_t handle, uint16_t txOctets, uint16_t txTime); -void HciLeReadDefDataLen(void); -void HciLeWriteDefDataLen(uint16_t suggestedMaxTxOctets, uint16_t suggestedMaxTxTime); -void HciLeReadLocalP256PubKey(void); -void HciLeGenerateDHKey(uint8_t *pPubKeyX, uint8_t *pPubKeyY); -void HciLeReadMaxDataLen(void); -void HciWriteAuthPayloadTimeout(uint16_t handle, uint16_t timeout); - -#ifdef __cplusplus -}; -#endif - -#endif /* HCI_API_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/hci_handler.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/hci_handler.h deleted file mode 100644 index 4589f782985..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/hci_handler.h +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file hci_handler.h - * - * \brief Interface to HCI event handler. - * - * $Date: 2012-03-29 13:24:04 -0700 (Thu, 29 Mar 2012) $ - * $Revision: 287 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef HCI_HANDLER_H -#define HCI_HANDLER_H - -#include "wsf_os.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn HciHandlerInit - * - * \brief HCI handler init function called during system initialization. - * - * \param handlerID WSF handler ID for HCI. - * - * \return None. - */ -/*************************************************************************************************/ -void HciHandlerInit(wsfHandlerId_t handlerId); - - -/*************************************************************************************************/ -/*! - * \fn HciHandler - * - * \brief WSF event handler for HCI. - * - * \param event WSF event mask. - * \param pMsg WSF message. - * - * \return None. - */ -/*************************************************************************************************/ -void HciHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); - -#ifdef __cplusplus -}; -#endif - -#endif /* HCI_HANDLER_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_api.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_api.h deleted file mode 100644 index 7a951bf554d..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_api.h +++ /dev/null @@ -1,439 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file l2c_api.h - * - * \brief L2CAP subsystem API. - * - * $Date: 2015-10-09 09:08:23 -0700 (Fri, 09 Oct 2015) $ - * $Revision: 4164 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef L2C_API_H -#define L2C_API_H - -#include "dm_api.h" -#include "l2c_defs.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Control callback message events */ -#define L2C_CTRL_FLOW_ENABLE_IND 0 /*! Data flow enabled */ -#define L2C_CTRL_FLOW_DISABLE_IND 1 /*! Data flow disabled */ - -/*! Invalid channel registration ID for connection oriented channels */ -#define L2C_COC_REG_ID_NONE 0 - -/*! Invalid channel ID for connection oriented channels */ -#define L2C_COC_CID_NONE 0 - -/*! Connection oriented channel initiator/acceptor role */ -#define L2C_COC_ROLE_NONE 0x00 /*! No role (unallocated) */ -#define L2C_COC_ROLE_INITIATOR 0x01 /*! Channel initiator */ -#define L2C_COC_ROLE_ACCEPTOR 0x02 /*! Channel acceptor */ - -/*! Connection oriented channel data confirm status values */ -#define L2C_COC_DATA_SUCCESS 0 /*! Data request successful */ -#define L2C_COC_DATA_ERR_MEMORY 1 /*! Out of memory */ -#define L2C_COC_DATA_ERR_OVERFLOW 2 /*! Transaction overflow */ - -/*! Connection oriented channel callback events */ -#define L2C_COC_CBACK_START 0x40 /*! L2C callback event starting value */ -enum -{ - L2C_COC_CONNECT_IND = L2C_COC_CBACK_START, /*! Channel connect indication */ - L2C_COC_DISCONNECT_IND, /*! Channel disconnect indication */ - L2C_COC_DATA_IND, /*! Received data indication */ - L2C_COC_DATA_CNF /*! Transmit data confirm */ -}; - -#define L2C_COC_CBACK_CBACK_END L2C_COC_DATA_CNF /*! L2C callback event ending value */ - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Connection oriented channel registration ID */ -typedef uint16_t l2cCocRegId_t; - -/*! Connection oriented channel registration structure */ -typedef struct -{ - uint16_t psm; /*! Protocol service multiplexer */ - uint16_t mps; /*! Maximum receive PDU fragment size */ - uint16_t mtu; /*! Maximum receive data packet size */ - uint16_t credits; /*! Data packet receive credits for this channel */ - bool_t authoriz; /*! TRUE if authorization is required */ - uint8_t secLevel; /*! Channel minimum security level requirements */ - uint8_t role; /*! Channel initiator/acceptor role */ -} l2cCocReg_t; - -/* Connection oriented channel connect indication structure */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header structure */ - uint16_t cid; /*! Local channel ID */ - uint16_t peerMtu; /*! Data packet MTU peer can receive */ - uint16_t psm; /*! Connected PSM */ -} l2cCocConnectInd_t; - -/* Connection oriented channel disconnect indication structure */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header structure */ - uint16_t cid; /*! Local channel ID */ - uint16_t result; /*! Connection failure result code */ -} l2cCocDisconnectInd_t; - -/* Connection oriented channel data indication structure */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header structure */ - uint16_t cid; /*! Local channel ID */ - uint8_t *pData; /*! Pointer to packet data */ - uint16_t dataLen; /*! packet data length */ -} l2cCocDataInd_t; - -/* Connection oriented channel disconnect indication structure */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! Header structure */ - uint16_t cid; /*! Local channel ID */ -} l2cCocDataCnf_t; - -/*! - * Connection oriented channel event structure - * - * Connection oriented channel callback header parameters: - * - * \param hdr.event Callback event - * \param hdr.param DM connection ID - * \param hdr.status Event status (L2C_COC_DATA_CNF only) - */ -typedef union -{ - wsfMsgHdr_t hdr; /*! Header structure */ - l2cCocConnectInd_t connectInd; /*! Channel connect indication */ - l2cCocDisconnectInd_t disconnectInd; /*! Channel disconnect indication */ - l2cCocDataInd_t dataInd; /*! Received data indication */ - l2cCocDataCnf_t dataCnf; /*! Transmit data confirm */ -} l2cCocEvt_t; - -/*! Configurable parameters */ -typedef struct -{ - uint16_t reqTimeout; /*! Request timeout in seconds */ -} l2cCfg_t; - -/************************************************************************************************** - Global Variables; -**************************************************************************************************/ - -/*! Configuration pointer */ -extern l2cCfg_t *pL2cCfg; - -/************************************************************************************************** - Callback Function Types -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn l2cDataCback_t - * - * \brief This callback function sends a received L2CAP packet to the client. - * - * \param handle The connection handle. - * \param len The length of the L2CAP payload data in pPacket. - * \param pPacket A buffer containing the packet. - * - * \return None. - */ -/*************************************************************************************************/ -typedef void (*l2cDataCback_t)(uint16_t handle, uint16_t len, uint8_t *pPacket); - -/*************************************************************************************************/ -/*! - * \fn l2cCtrlCback_t - * - * \brief This callback function sends control messages to the client. - * - * \param pMsg Pointer to message structure. - * - * \return None. - */ -/*************************************************************************************************/ -typedef void (*l2cCtrlCback_t)(wsfMsgHdr_t *pMsg); - -/*************************************************************************************************/ -/*! - * \fn l2cCocCback_t - * - * \brief This callback function sends data and other events to connection oriented - * channels clients. - * - * \param pMsg Pointer to message structure. - * - * \return None. - */ -/*************************************************************************************************/ -typedef void (*l2cCocCback_t)(l2cCocEvt_t *pMsg); - -/*************************************************************************************************/ -/*! - * \fn l2cCocAuthorCback_t - * - * \brief This callback function is used for authoriztion of connection oriented channels. - * - * \param connId DM connection ID. - * \param regId The registration instance requiring authorization. - * \param psm The PSM of the registration instance. - * - * \return L2C_CONN_SUCCESS if authorization is successful, any other value for failure. - */ -/*************************************************************************************************/ -typedef uint16_t (*l2cCocAuthorCback_t)(dmConnId_t connId, l2cCocRegId_t regId, uint16_t psm); - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn L2cInit - * - * \brief Initialize L2C subsystem. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cInit(void); - -/*************************************************************************************************/ -/*! - * \fn L2cMasterInit - * - * \brief Initialize L2C for operation as a Bluetooth LE master. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cMasterInit(void); - -/*************************************************************************************************/ -/*! - * \fn L2cSlaveInit - * - * \brief Initialize L2C for operation as a Bluetooth LE slave. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cSlaveInit(void); - -/*************************************************************************************************/ -/*! - * \fn L2cSlaveInit - * - * \brief Initialize L2C for operation with connection-oriented channels. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocInit(void); - -/*************************************************************************************************/ -/*! - * \fn L2cRegister - * - * \brief called by the L2C client, such as ATT or SMP, to register for the given CID. - * - * \param cid channel identifier. - * \param dataCback Callback function for L2CAP data received for this CID. - * \param ctrlCback Callback function for control events for this CID. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cRegister(uint16_t cid, l2cDataCback_t dataCback, l2cCtrlCback_t ctrlCback); - -/*************************************************************************************************/ -/*! - * \fn L2cDataReq - * - * \brief Send an L2CAP data packet on the given CID. - * - * \param cid The channel identifier. - * \param handle The connection handle. The client receives this handle from DM. - * \param len The length of the payload data in pPacket. - * \param pPacket A buffer containing the packet. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cDataReq(uint16_t cid, uint16_t handle, uint16_t len, uint8_t *pL2cPacket); - -/*************************************************************************************************/ -/*! - * \fn L2cCocInit - * - * \brief Initialize L2C connection oriented channel subsystem. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocInit(void); - -/*************************************************************************************************/ -/*! - * \fn L2cCocRegister - * - * \brief Register to use a connection oriented channel, as either a channel acceptor, - * initiator, or both. If registering as channel acceptor then the PSM is specified. - * After registering a connection can be established by the client using this - * registration instance. - * - * \param cback Client callback function. - * \param pReg Registration parameter structure. - * - * \return Registration instance ID or L2C_COC_REG_ID_NONE if registration failed. - */ -/*************************************************************************************************/ -l2cCocRegId_t L2cCocRegister(l2cCocCback_t cback, l2cCocReg_t *pReg); - -/*************************************************************************************************/ -/*! - * \fn L2cCocDeregister - * - * \brief Deregister and deallocate a connection oriented channel registration instance. - * This function should only be called if there are no active channels using this - * registration instance. - * - * \param regId Registration instance ID. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocDeregister(l2cCocRegId_t regId); - -/*************************************************************************************************/ -/*! - * \fn L2cCocConnectReq - * - * \brief Initiate a connection to the given peer PSM. - * - * \param connId DM connection ID. - * \param regId The associated registration instance. - * \param psm Peer PSM. - * - * \return Local CID or L2C_COC_CID_NONE none if failure. - */ -/*************************************************************************************************/ -uint16_t L2cCocConnectReq(dmConnId_t connId, l2cCocRegId_t regId, uint16_t psm); - -/*************************************************************************************************/ -/*! - * \fn L2cCocDisconnectReq - * - * \brief Disconnect the channel for the given CID. - * - * \param cid Channel ID. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocDisconnectReq(uint16_t cid); - -/*************************************************************************************************/ -/*! - * \fn L2cCocDataReq - * - * \brief Send an L2CAP data packet on the given connection oriented CID. - * - * \param cid The local channel identifier. - * \param len The length of the payload data in pPacket. - * \param pPacket Packet payload data. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocDataReq(uint16_t cid, uint16_t len, uint8_t *pPayload); - -/*************************************************************************************************/ -/*! - * \fn L2cCocErrorTest - * - * \brief For testing purposes only. - * - * \param result Result code - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocErrorTest(uint16_t result); - -/*************************************************************************************************/ -/*! - * \fn L2cCocCreditSendTest - * - * \brief For testing purposes only. - * - * \param cid The local channel identifier. - * \param credits Credits to send. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocCreditSendTest(uint16_t cid, uint16_t credits); - -/*************************************************************************************************/ -/*! - * \fn L2cDmConnUpdateReq - * - * \brief For internal use only. This function is called by DM to send an L2CAP - * connection update request. - * - * \param handle The connection handle. - * \param pConnSpec Pointer to the connection specification structure. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cDmConnUpdateReq(uint16_t handle, hciConnSpec_t *pConnSpec); - -/*************************************************************************************************/ -/*! - * \fn L2cDmConnUpdateRsp - * - * \brief For internal use only. This function is called by DM to send an L2CAP - * connection update response. - * - * \param identifier Identifier value previously passed from L2C to DM. - * \param handle The connection handle. - * \param result Connection update response result. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cDmConnUpdateRsp(uint8_t identifier, uint16_t handle, uint16_t result); - -#ifdef __cplusplus -}; -#endif - -#endif /* L2C_API_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_defs.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_defs.h deleted file mode 100644 index 193ad424b23..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_defs.h +++ /dev/null @@ -1,112 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file l2c_defs.h - * - * \brief L2CAP constants and definitions from the Bluetooth specification. - * - * $Date: 2015-06-12 04:19:18 -0700 (Fri, 12 Jun 2015) $ - * $Revision: 3061 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef L2C_DEFS_H -#define L2C_DEFS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Packet definitions */ -#define L2C_HDR_LEN 4 /*! L2CAP packet header length */ -#define L2C_MIN_MTU 23 /*! Minimum packet payload MTU for LE */ -#define L2C_SIG_HDR_LEN 4 /*! L2CAP signaling command header length */ -#define L2C_LE_SDU_HDR_LEN 2 /*! L2CAP LE SDU data header length */ - -/*! Start of L2CAP payload in an HCI ACL packet buffer */ -#define L2C_PAYLOAD_START (HCI_ACL_HDR_LEN + L2C_HDR_LEN) - -/*! L2CAP signaling packet base length, including HCI header */ -#define L2C_SIG_PKT_BASE_LEN (HCI_ACL_HDR_LEN + L2C_HDR_LEN + L2C_SIG_HDR_LEN) - -/*! L2CAP LE SDU packet base length, including HCI header */ -#define L2C_LE_SDU_PKT_BASE_LEN (HCI_ACL_HDR_LEN + L2C_HDR_LEN + L2C_LE_SDU_HDR_LEN) - -/*! Signaling packet parameter lengths */ -#define L2C_SIG_CONN_UPDATE_REQ_LEN 8 -#define L2C_SIG_CONN_UPDATE_RSP_LEN 2 -#define L2C_SIG_CMD_REJ_LEN 2 -#define L2C_SIG_DISCONN_REQ_LEN 4 -#define L2C_SIG_DISCONN_RSP_LEN 4 -#define L2C_SIG_LE_CONN_REQ_LEN 10 -#define L2C_SIG_LE_CONN_RSP_LEN 10 -#define L2C_SIG_FLOW_CTRL_CREDIT_LEN 4 - -/*! Connection identifiers */ -#define L2C_CID_ATT 0x0004 /*! CID for attribute protocol */ -#define L2C_CID_LE_SIGNALING 0x0005 /*! CID for LE signaling */ -#define L2C_CID_SMP 0x0006 /*! CID for security manager protocol */ - -/*! Signaling codes */ -#define L2C_SIG_CMD_REJ 0x01 /*! Comand reject */ -#define L2C_SIG_DISCONNECT_REQ 0x06 /*! Disconnect request */ -#define L2C_SIG_DISCONNECT_RSP 0x07 /*! Disconnect response */ -#define L2C_SIG_CONN_UPDATE_REQ 0x12 /*! Connection parameter update request */ -#define L2C_SIG_CONN_UPDATE_RSP 0x13 /*! Connection parameter update response */ -#define L2C_SIG_LE_CONNECT_REQ 0x14 /*! LE credit based connection request */ -#define L2C_SIG_LE_CONNECT_RSP 0x15 /*! LE credit based connection response */ -#define L2C_SIG_FLOW_CTRL_CREDIT 0x16 /*! LE flow control credit */ - -/*! Signaling response code flag */ -#define L2C_SIG_RSP_FLAG 0x01 - -/*! Command reject reason codes */ -#define L2C_REJ_NOT_UNDERSTOOD 0x0000 /*! Command not understood */ -#define L2C_REJ_MTU_EXCEEDED 0x0001 /*! Signaling MTU exceeded */ -#define L2C_REJ_INVALID_CID 0x0002 /*! Invalid CID in request */ - -/*! Connection parameter update result */ -#define L2C_CONN_PARAM_ACCEPTED 0x0000 /*! Connection parameters accepted */ -#define L2C_CONN_PARAM_REJECTED 0x0001 /*! Connection parameters rejected */ - -/*! LE connection result */ -#define L2C_CONN_SUCCESS 0x0000 /*! Connection successful */ -#define L2C_CONN_NONE 0x0001 /*! No connection result value available */ -#define L2C_CONN_FAIL_PSM 0x0002 /*! Connection refused LE_PSM not supported */ -#define L2C_CONN_FAIL_RES 0x0004 /*! Connection refused no resources available */ -#define L2C_CONN_FAIL_AUTH 0x0005 /*! Connection refused insufficient authentication */ -#define L2C_CONN_FAIL_AUTHORIZ 0x0006 /*! Connection refused insufficient authorization */ -#define L2C_CONN_FAIL_KEY_SIZE 0x0007 /*! Connection refused insufficient encryption key size */ -#define L2C_CONN_FAIL_ENC 0x0008 /*! Connection Refused insufficient encryption */ - -/*! LE connection result proprietary codes */ -#define L2C_CONN_FAIL_TIMEOUT 0xF000 /*! Request timeout */ - -/*! Signaling parameter value ranges */ -#define L2C_PSM_MIN 0x0001 -#define L2C_PSM_MAX 0x00FF -#define L2C_CID_DYN_MIN 0x0040 -#define L2C_CID_DYN_MAX 0x007F -#define L2C_MTU_MIN 0x0017 -#define L2C_MPS_MIN 0x0017 -#define L2C_MPS_MAX 0xFFFD -#define L2C_CREDITS_MAX 0xFFFF - -#ifdef __cplusplus -}; -#endif - -#endif /* L2C_DEFS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_handler.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_handler.h deleted file mode 100644 index f909da5c77f..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/l2c_handler.h +++ /dev/null @@ -1,93 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file l2c_handler.h - * - * \brief L2CAP handler interface. - * - * $Date $ - * $Revision $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef L2C_HANDLER_H -#define L2C_HANDLER_H - -#include "wsf_os.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn L2cSlaveHandlerInit - * - * \brief Event handler initialization function for L2C when operating as a slave. - * - * \param handlerId ID for this event handler. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cSlaveHandlerInit(wsfHandlerId_t handlerId); - -/*************************************************************************************************/ -/*! - * \fn L2cSlaveHandler - * - * \brief The WSF event handler for L2C when operating as a slave. - * - * \param event Event mask. - * \param pMsg Pointer to message. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cSlaveHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); - -/*************************************************************************************************/ -/*! - * \fn L2cCocHandlerInit - * - * \brief Event handler initialization function for L2C with connection oriented channels. - * - * \param handlerId ID for this event handler. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocHandlerInit(wsfHandlerId_t handlerId); - -/*************************************************************************************************/ -/*! - * \fn L2cCocHandler - * - * \brief The WSF event handler for L2C with connection oriented channels. - * - * \param event Event mask. - * \param pMsg Pointer to message. - * - * \return None. - */ -/*************************************************************************************************/ -void L2cCocHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); - -#ifdef __cplusplus -}; -#endif - -#endif /* L2C_HANDLER_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_api.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_api.h deleted file mode 100644 index 4e165e6297b..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_api.h +++ /dev/null @@ -1,238 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file smp_api.h - * - * \brief SMP subsystem API. - * - * $Date: 2015-06-12 04:19:18 -0700 (Fri, 12 Jun 2015) $ - * $Revision: 3061 $ - * - * Copyright (c) 2010 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef SMP_API_H -#define SMP_API_H - -#include "wsf_os.h" -#include "smp_defs.h" -#include "dm_api.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Event handler messages for SMP state machines */ -enum -{ - SMP_MSG_API_PAIR_REQ = 1, /*! API pairing request */ - SMP_MSG_API_PAIR_RSP, /*! API pairing response */ - SMP_MSG_API_CANCEL_REQ, /*! API cancel request */ - SMP_MSG_API_AUTH_RSP, /*! API pin response */ - SMP_MSG_API_SECURITY_REQ, /*! API security request */ - SMP_MSG_CMD_PKT, /*! SMP command packet received */ - SMP_MSG_CMD_PAIRING_FAILED, /*! SMP pairing failed packet received */ - SMP_MSG_DM_ENCRYPT_CMPL, /*! Link encrypted */ - SMP_MSG_DM_ENCRYPT_FAILED, /*! Link encryption failed */ - SMP_MSG_DM_CONN_CLOSE, /*! Connection closed */ - SMP_MSG_WSF_AES_CMPL, /*! AES calculation complete */ - SMP_MSG_INT_SEND_NEXT_KEY, /*! Send next key to be distributed */ - SMP_MSG_INT_MAX_ATTEMPTS, /*! Maximum pairing attempts reached */ - SMP_MSG_INT_PAIRING_CMPL, /*! Pairing complete */ - SMP_MSG_INT_TIMEOUT, /*! Pairing protocol timeout */ - SMP_MSG_INT_LESC, /*! Pair with Secure Connections */ - SMP_MSG_INT_LEGACY, /*! Pair with Legacy Security */ - SMP_MSG_INT_JW_NC, /*! LESC Just-Works/Numeric Comparison pairing */ - SMP_MSG_INT_PASSKEY, /*! LESC Passkey pairing */ - SMP_MSG_INT_OOB, /*! LESC Out-of-Band Pairing */ - SMP_MSG_API_USER_CONFIRM, /*! User confirms valid numeric comparison */ - SMP_MSG_API_USER_KEYPRESS, /*! User keypress in passkey pairing */ - SMP_MSG_API_KEYPRESS_CMPL, /*! User keypress complete in passkey pairing */ - SMP_MSG_WSF_ECC_CMPL, /*! WSF ECC operation complete */ - SMP_MSG_INT_PK_NEXT, /*! Continue to next passkey bit */ - SMP_MSG_INT_PK_CMPL, /*! Passkey operation complete */ - SMP_MSG_WSF_CMAC_CMPL, /*! WSF CMAC operation complete */ - SMP_MSG_DH_CHECK_FAILURE, /*! WSF CMAC operation complete */ - SMP_NUM_MSGS -}; - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Configurable parameters */ -typedef struct -{ - uint16_t attemptTimeout; /*! 'Repeated attempts' timeout in msec */ - uint8_t ioCap; /*! I/O Capability */ - uint8_t minKeyLen; /*! Minimum encryption key length */ - uint8_t maxKeyLen; /*! Maximum encryption key length */ - uint8_t maxAttempts; /*! Attempts to trigger 'repeated attempts' timeout */ - uint8_t auth; /*! Device authentication requirements */ -} smpCfg_t; - -/*! Data type for SMP_MSG_API_PAIR_REQ and SMP_MSG_API_PAIR_RSP */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t oob; - uint8_t auth; - uint8_t iKeyDist; - uint8_t rKeyDist; -} smpDmPair_t; - -/*! Data type for SMP_MSG_API_AUTH_RSP */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t authData[SMP_OOB_LEN]; - uint8_t authDataLen; -} smpDmAuthRsp_t; - -/*! Data type for SMP_MSG_API_USER_KEYPRESS */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t keypress; -} smpDmKeypress_t; - -/*! Data type for SMP_MSG_API_SECURITY_REQ */ -typedef struct -{ - wsfMsgHdr_t hdr; - uint8_t auth; -} smpDmSecurityReq_t; - -/*! Union SMP DM message data types */ -typedef union -{ - wsfMsgHdr_t hdr; - smpDmPair_t pair; - smpDmAuthRsp_t authRsp; - smpDmSecurityReq_t securityReq; - smpDmKeypress_t keypress; -} smpDmMsg_t; - -/************************************************************************************************** - Global Variables; -**************************************************************************************************/ - -/*! Configuration pointer */ -extern smpCfg_t *pSmpCfg; - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn SmpiInit - * - * \brief Initialize SMP initiator role. - * - * \return None. - */ -/*************************************************************************************************/ -void SmpiInit(void); - -/*************************************************************************************************/ -/*! - * \fn SmprInit - * - * \brief Initialize SMP responder role. - * - * \return None. - */ -/*************************************************************************************************/ -void SmprInit(void); - -/*************************************************************************************************/ -/*! - * \fn SmpiScInit - * - * \brief Initialize SMP initiator role utilizing BTLE Secure Connections. - * - * \return None. - */ -/*************************************************************************************************/ -void SmpiScInit(void); - -/*************************************************************************************************/ -/*! - * \fn SmprScInit - * - * \brief Initialize SMP responder role utilizing BTLE Secure Connections. - * - * \return None. - */ -/*************************************************************************************************/ -void SmprScInit(void); - -/*************************************************************************************************/ -/*! - * \fn SmpNonInit - * - * \brief Use this SMP init function when SMP is not supported. - * - * \return None. - */ -/*************************************************************************************************/ -void SmpNonInit(void); - -/*************************************************************************************************/ -/*! - * \fn SmpDmMsgSend - * - * \brief This function is called by DM to send a message to SMP. - * - * \param pMsg Pointer to message structure. - * - * \return None. - */ -/*************************************************************************************************/ -void SmpDmMsgSend(smpDmMsg_t *pMsg); - -/*************************************************************************************************/ -/*! - * \fn SmpDmEncryptInd - * - * \brief This function is called by DM to notify SMP of encrypted link status. - * - * \param pMsg Pointer to HCI message structure. - * - * \return None. - */ -/*************************************************************************************************/ -void SmpDmEncryptInd(wsfMsgHdr_t *pMsg); - -/*************************************************************************************************/ -/*! - * \fn SmpDmGetStk - * - * \brief Return the STK for the given connection. - * - * \param connId Connection identifier. - * \param pSecLevel Returns the security level of pairing when STK was created. - * - * \return Pointer to STK or NULL if not available. - */ -/*************************************************************************************************/ -uint8_t *SmpDmGetStk(dmConnId_t connId, uint8_t *pSecLevel); - -#ifdef __cplusplus -}; -#endif - -#endif /* SMP_API_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_defs.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_defs.h deleted file mode 100644 index 5bcad4467da..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_defs.h +++ /dev/null @@ -1,152 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file smp_defs.h - * - * \brief Security manager constants and definitions from the Bluetooth specification. - * - * $Date: 2015-10-15 10:06:43 -0700 (Thu, 15 Oct 2015) $ - * $Revision: 4216 $ - * - * Copyright (c) 2010 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef SMP_DEFS_H -#define SMP_DEFS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! PDU format */ -#define SMP_HDR_LEN 1 /*! Attribute PDU header length */ - -/*! Protocol timeout */ -#define SMP_TIMEOUT 30 /*! Protocol timeout in seconds */ - -/*! Encryption key size */ -#define SMP_KEY_SIZE_MAX 16 /*! Maximum encryption key size */ -#define SMP_KEY_SIZE_MIN 7 /*! Minimum encryption key size */ - -/*! OOB and PIN data lengths in bytes */ -#define SMP_OOB_LEN 16 -#define SMP_PIN_LEN 3 - -/*! Error codes */ -#define SMP_ERR_PASSKEY_ENTRY 0x01 /*! User input of passkey failed */ -#define SMP_ERR_OOB 0x02 /*! OOB data is not available */ -#define SMP_ERR_AUTH_REQ 0x03 /*! Authentication requirements cannot be met */ -#define SMP_ERR_CONFIRM_VALUE 0x04 /*! Confirm value does not match */ -#define SMP_ERR_PAIRING_NOT_SUP 0x05 /*! Pairing is not supported by the device */ -#define SMP_ERR_ENC_KEY_SIZE 0x06 /*! Insufficient encryption key size */ -#define SMP_ERR_COMMAND_NOT_SUP 0x07 /*! Command not supported */ -#define SMP_ERR_UNSPECIFIED 0x08 /*! Unspecified reason */ -#define SMP_ERR_ATTEMPTS 0x09 /*! Repeated attempts */ -#define SMP_ERR_INVALID_PARAM 0x0A /*! Invalid parameter or command length */ -#define SMP_ERR_DH_KEY_CHECK 0x0B /*! DH Key check did not match */ -#define SMP_ERR_NUMERIC_COMPARISON 0x0C /*! Numeric comparison did not match */ -#define SMP_ERR_BR_EDR_IN_PROGRESS 0x0D /*! BR/EDR in progress */ -#define SMP_ERR_CROSS_TRANSPORT 0x0E /*! BR/EDR Cross transport key generation not allowed */ - -/*! Proprietary internal error codes */ -#define SMP_ERR_MEMORY 0xE0 /*! Out of memory */ -#define SMP_ERR_TIMEOUT 0xE1 /*! Transaction timeout */ - -/*! Command codes */ -#define SMP_CMD_PAIR_REQ 0x01 /*! Pairing Request */ -#define SMP_CMD_PAIR_RSP 0x02 /*! Pairing Response */ -#define SMP_CMD_PAIR_CNF 0x03 /*! Pairing Confirm */ -#define SMP_CMD_PAIR_RAND 0x04 /*! Pairing Random */ -#define SMP_CMD_PAIR_FAIL 0x05 /*! Pairing Failed */ -#define SMP_CMD_ENC_INFO 0x06 /*! Encryption Information */ -#define SMP_CMD_MASTER_ID 0x07 /*! Master Identification */ -#define SMP_CMD_ID_INFO 0x08 /*! Identity Information */ -#define SMP_CMD_ID_ADDR_INFO 0x09 /*! Identity Address Information */ -#define SMP_CMD_SIGN_INFO 0x0A /*! Signing Information */ -#define SMP_CMD_SECURITY_REQ 0x0B /*! Security Request */ -#define SMP_CMD_PUBLIC_KEY 0x0C /*! Public Key */ -#define SMP_CMD_DHKEY_CHECK 0x0D /*! DH Key Check */ -#define SMP_CMD_KEYPRESS 0x0E /*! User Key Press */ -#define SMP_CMD_MAX 0x0F /*! Command code maximum */ - -/*! Command packet lengths */ -#define SMP_PAIR_REQ_LEN 7 -#define SMP_PAIR_RSP_LEN 7 -#define SMP_PAIR_CNF_LEN 17 -#define SMP_PAIR_RAND_LEN 17 -#define SMP_PAIR_FAIL_LEN 2 -#define SMP_ENC_INFO_LEN 17 -#define SMP_MASTER_ID_LEN 11 -#define SMP_ID_INFO_LEN 17 -#define SMP_ID_ADDR_INFO_LEN 8 -#define SMP_SIGN_INFO_LEN 17 -#define SMP_SECURITY_REQ_LEN 2 -#define SMP_PUB_KEY_MSG_LEN (1 + 2*SMP_PUB_KEY_LEN) -#define SMP_DHKEY_CHECK_MSG_LEN (1 + SMP_DHKEY_CHECK_LEN) -#define SMP_KEYPRESS_MSG_LEN 2 - -/*! I/O capabilities */ -#define SMP_IO_DISP_ONLY 0x00 /*! DisplayOnly */ -#define SMP_IO_DISP_YES_NO 0x01 /*! DisplayYesNo */ -#define SMP_IO_KEY_ONLY 0x02 /*! KeyboardOnly */ -#define SMP_IO_NO_IN_NO_OUT 0x03 /*! NoInputNoOutput */ -#define SMP_IO_KEY_DISP 0x04 /*! KeyboardDisplay */ - -/*! OOB data present */ -#define SMP_OOB_DATA_NONE 0x00 -#define SMP_OOB_DATA_PRESENT 0x01 - -/*! Authentication/security properties bit mask */ -#define SMP_AUTH_BOND_MASK 0x03 /*! Mask for bonding bits */ -#define SMP_AUTH_BOND_FLAG 0x01 /*! Bonding requested */ -#define SMP_AUTH_MITM_FLAG 0x04 /*! MITM (authenticated pairing) requested */ -#define SMP_AUTH_SC_FLAG 0x08 /*! LE Secure Connections requested */ -#define SMP_AUTH_KP_FLAG 0x10 /*! Keypress notifications requested */ - -/*! Key distribution bit mask */ -#define SMP_KEY_DIST_ENC 0x01 /*! Distribute LTK */ -#define SMP_KEY_DIST_ID 0x02 /*! Distribute IRK */ -#define SMP_KEY_DIST_SIGN 0x04 /*! Distribute CSRK */ -#define SMP_KEY_DIST_MASK (SMP_KEY_DIST_ENC | SMP_KEY_DIST_ID | SMP_KEY_DIST_SIGN) - -/*! LESC Passkey keypress types */ -#define SMP_PASSKEY_ENTRY_STARTED 0x00 /*! Passkey entry started keypress type */ -#define SMP_PASSKEY_DIGIT_ENTERED 0x01 /*! Passkey digit entered keypress type */ -#define SMP_PASSKEY_DIGIT_ERASED 0x02 /*! Passkey digit erased keypress type */ -#define SMP_PASSKEY_CLEARED 0x03 /*! Passkey cleared keypress type */ -#define SMP_PASSKEY_ENTRY_COMPLETED 0x04 /*! Passkey entry complete keypress type */ - -/*! Various parameter lengths */ -#define SMP_RAND_LEN 16 -#define SMP_CONFIRM_LEN 16 -#define SMP_KEY_LEN 16 -#define SMP_RAND8_LEN 8 -#define SMP_PRIVATE_KEY_LEN 32 -#define SMP_PUB_KEY_LEN 32 -#define SMP_DHKEY_LEN 32 -#define SMP_DHKEY_CHECK_LEN 16 - -/* CMAC Input Lengths */ -#define SMP_F4_TEXT_LEN (SMP_PUB_KEY_LEN * 2 + 1) -#define SMP_G2_TEXT_LEN (SMP_PUB_KEY_LEN * 2 + SMP_RAND_LEN) -#define SMP_F5_TKEY_TEXT_LEN (SMP_DHKEY_LEN) -#define SMP_F5_TEXT_LEN (9 + 2*BDA_ADDR_LEN + 2*SMP_RAND_LEN) -#define SMP_F6_TEXT_LEN (2*BDA_ADDR_LEN + 3*SMP_RAND_LEN + 5) - -#ifdef __cplusplus -}; -#endif - -#endif /* SMP_DEFS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_handler.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_handler.h deleted file mode 100644 index 6e7d9266739..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/stack/include/smp_handler.h +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file smp_handler.h - * - * \brief Interface to SMP event handler. - * - * $Date: 2012-03-29 13:24:04 -0700 (Thu, 29 Mar 2012) $ - * $Revision: 287 $ - * - * Copyright (c) 2010 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef SMP_HANDLER_H -#define SMP_HANDLER_H - -#include "wsf_os.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn SmpHandlerInit - * - * \brief SMP handler init function called during system initialization. - * - * \param handlerID WSF handler ID for SMP. - * - * \return None. - */ -/*************************************************************************************************/ -void SmpHandlerInit(wsfHandlerId_t handlerId); - - -/*************************************************************************************************/ -/*! - * \fn SmpHandler - * - * \brief WSF event handler for SMP. - * - * \param event WSF event mask. - * \param pMsg WSF message. - * - * \return None. - */ -/*************************************************************************************************/ -void SmpHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); - -#ifdef __cplusplus -}; -#endif - -#endif /* SMP_HANDLER_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/bda.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/bda.h deleted file mode 100644 index 9f481867b63..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/bda.h +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file bda.h - * - * \brief Bluetooth device address utilities. - * - * $Date: 2016-02-18 16:07:11 -0800 (Thu, 18 Feb 2016) $ - * $Revision: 5910 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef BDA_H -#define BDA_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! BD address length */ -#define BDA_ADDR_LEN 6 - -/*! BD address string length */ -#define BDA_ADDR_STR_LEN (BDA_ADDR_LEN * 2) - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! BD address data type */ -typedef uint8_t bdAddr_t[BDA_ADDR_LEN]; - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn BdaCpy - * - * \brief Copy a BD address from source to destination. - * - * \param pDst Pointer to destination. - * \param pSrc Pointer to source. - * - * \return None. - */ -/*************************************************************************************************/ -void BdaCpy(uint8_t *pDst, const uint8_t *pSrc); - - -/*************************************************************************************************/ -/*! - * \fn BdaCmp - * - * \brief Compare two BD addresses. - * - * \param pAddr1 First address. - * \param pAddr2 Second address. - * - * \return TRUE if addresses match, FALSE otherwise. - */ -/*************************************************************************************************/ -bool_t BdaCmp(const uint8_t *pAddr1, const uint8_t *pAddr2); - -/*************************************************************************************************/ -/*! - * \fn BdaClr - * - * \brief Set a BD address to all zeros. - * - * \param pDst Pointer to destination. - * - * \return pDst + BDA_ADDR_LEN - */ -/*************************************************************************************************/ -uint8_t *BdaClr(uint8_t *pDst); - -/*************************************************************************************************/ -/*! -* \fn BdaIsZeros -* -* \brief Check if a BD address is all zeros. -* -* \param pAddr Pointer to address. -* -* \return TRUE if address is all zeros, FALSE otherwise. -*/ -/*************************************************************************************************/ -bool_t BdaIsZeros(const uint8_t *pAddr); - -/*************************************************************************************************/ -/*! - * \fn Bda2Str - * - * \brief Convert a BD address to a string. - * - * \param pAddr Pointer to BD address. - * - * \return Pointer to string. - */ -/*************************************************************************************************/ -char *Bda2Str(const uint8_t *pAddr); - -#ifdef __cplusplus -}; -#endif - -#endif /* BDA_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/bstream.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/bstream.h deleted file mode 100644 index 49aa7a67cdc..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/bstream.h +++ /dev/null @@ -1,143 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file bstream.h - * - * \brief Byte stream to integer conversion macros. - * - * $Date: 2015-10-25 12:07:49 -0700 (Sun, 25 Oct 2015) $ - * $Revision: 4298 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef BSTREAM_H -#define BSTREAM_H - -#include "bda.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! - * Macros for converting a little endian byte buffer to integers. - */ -#define BYTES_TO_UINT16(n, p) {n = ((uint16_t)(p)[0] + ((uint16_t)(p)[1] << 8));} - -#define BYTES_TO_UINT24(n, p) {n = ((uint16_t)(p)[0] + ((uint16_t)(p)[1] << 8) + \ - ((uint16_t)(p)[2] << 16));} - -#define BYTES_TO_UINT32(n, p) {n = ((uint32_t)(p)[0] + ((uint32_t)(p)[1] << 8) + \ - ((uint32_t)(p)[2] << 16) + ((uint32_t)(p)[3] << 24));} - -#define BYTES_TO_UINT40(n, p) {n = ((uint64_t)(p)[0] + ((uint64_t)(p)[1] << 8) + \ - ((uint64_t)(p)[2] << 16) + ((uint64_t)(p)[3] << 24) + \ - ((uint64_t)(p)[4] << 32));} - -#define BYTES_TO_UINT64(n, p) {n = ((uint64_t)(p)[0] + ((uint64_t)(p)[1] << 8) + \ - ((uint64_t)(p)[2] << 16) + ((uint64_t)(p)[3] << 24) + \ - ((uint64_t)(p)[4] << 32) + ((uint64_t)(p)[5] << 40) + \ - ((uint64_t)(p)[6] << 48) + ((uint64_t)(p)[7] << 56));} - -/*! - * Macros for converting little endian integers to array of bytes - */ -#define UINT16_TO_BYTES(n) ((uint8_t) (n)), ((uint8_t)((n) >> 8)) - -/*! - * Macros for converting little endian integers to single bytes - */ -#define UINT16_TO_BYTE0(n) ((uint8_t) (n)) -#define UINT16_TO_BYTE1(n) ((uint8_t) ((n) >> 8)) - -#define UINT32_TO_BYTE0(n) ((uint8_t) (n)) -#define UINT32_TO_BYTE1(n) ((uint8_t) ((n) >> 8)) -#define UINT32_TO_BYTE2(n) ((uint8_t) ((n) >> 16)) -#define UINT32_TO_BYTE3(n) ((uint8_t) ((n) >> 24)) - -/*! - * Macros for converting a little endian byte stream to integers, with increment. - */ -#define BSTREAM_TO_INT8(n, p) {n = (int8_t)(*(p)++);} -#define BSTREAM_TO_UINT8(n, p) {n = (uint8_t)(*(p)++);} -#define BSTREAM_TO_UINT16(n, p) {BYTES_TO_UINT16(n, p); p += 2;} -#define BSTREAM_TO_UINT24(n, p) {BYTES_TO_UINT24(n, p); p += 3;} -#define BSTREAM_TO_UINT32(n, p) {BYTES_TO_UINT32(n, p); p += 4;} -#define BSTREAM_TO_UINT40(n, p) {BYTES_TO_UINT40(n, p); p += 5;} -#define BSTREAM_TO_UINT64(n, p) {n = BstreamToUint64(p); p += 8;} -#define BSTREAM_TO_BDA(bda, p) {BdaCpy(bda, p); p += BDA_ADDR_LEN;} -#define BSTREAM_TO_BDA64(bda, p) {bda = BstreamToBda64(p); p += BDA_ADDR_LEN;} - -/*! - * Macros for converting integers to a little endian byte stream, with increment. - */ -#define UINT8_TO_BSTREAM(p, n) {*(p)++ = (uint8_t)(n);} -#define UINT16_TO_BSTREAM(p, n) {*(p)++ = (uint8_t)(n); *(p)++ = (uint8_t)((n) >> 8);} -#define UINT24_TO_BSTREAM(p, n) {*(p)++ = (uint8_t)(n); *(p)++ = (uint8_t)((n) >> 8); \ - *(p)++ = (uint8_t)((n) >> 16);} -#define UINT32_TO_BSTREAM(p, n) {*(p)++ = (uint8_t)(n); *(p)++ = (uint8_t)((n) >> 8); \ - *(p)++ = (uint8_t)((n) >> 16); *(p)++ = (uint8_t)((n) >> 24);} -#define UINT40_TO_BSTREAM(p, n) {*(p)++ = (uint8_t)(n); *(p)++ = (uint8_t)((n) >> 8); \ - *(p)++ = (uint8_t)((n) >> 16); *(p)++ = (uint8_t)((n) >> 24); \ - *(p)++ = (uint8_t)((n) >> 32);} -#define UINT64_TO_BSTREAM(p, n) {Uint64ToBstream(p, n); p += sizeof(uint64_t);} -#define BDA_TO_BSTREAM(p, bda) {BdaCpy(p, bda); p += BDA_ADDR_LEN;} -#define BDA64_TO_BSTREAM(p, bda) {Bda64ToBstream(p, bda); p += BDA_ADDR_LEN;} - -/*! - * Macros for converting integers to a little endian byte stream, without increment. - */ -#define UINT16_TO_BUF(p, n) {(p)[0] = (uint8_t)(n); (p)[1] = (uint8_t)((n) >> 8);} -#define UINT32_TO_BUF(p, n) {(p)[0] = (uint8_t)(n); (p)[1] = (uint8_t)((n) >> 8); \ - (p)[2] = (uint8_t)((n) >> 16); (p)[3] = (uint8_t)((n) >> 24);} - -/*! - * Macros for comparing a little endian byte buffer to integers. - */ -#define BYTES_UINT16_CMP(p, n) ((p)[1] == UINT16_TO_BYTE1(n) && (p)[0] == UINT16_TO_BYTE0(n)) - -/*! - * Macros for IEEE FLOAT type: exponent = byte 3, mantissa = bytes 2-0 - */ -#define FLT_TO_UINT32(m, e) ((m) | ((int32_t)(e) << 24)) -#define UINT32_TO_FLT(m, e, n) {m = UINT32_TO_FLT_M(n); e = UINT32_TO_FLT_E(n);} -#define UINT32_TO_FLT_M(n) ((((n) & 0x00FFFFFF) >= 0x00800000) ? \ - ((int32_t)(((n) | 0xFF000000))) : ((int32_t)((n) & 0x00FFFFFF))) -#define UINT32_TO_FLT_E(n) ((int8_t)(n >> 24)) -/*! - * Macros for IEEE SFLOAT type: exponent = bits 15-12, mantissa = bits 11-0 - */ -#define SFLT_TO_UINT16(m, e) ((m) | ((int16_t)(e) << 12)) -#define UINT16_TO_SFLT(m, e, n) {m = UINT16_TO_SFLT_M(n); e = UINT16_TO_SFLT_E(n);} -#define UINT16_TO_SFLT_M(n) ((((n) & 0x0FFF) >= 0x0800) ? \ - ((int16_t)(((n) | 0xF000))) : ((int16_t)((n) & 0x0FFF))) -#define UINT16_TO_SFLT_E(n) (((n >> 12) >= 0x0008) ? \ - ((int8_t)(((n >> 12) | 0xF0))) : ((int8_t)(n >> 12))) - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -uint64_t BstreamToBda64(const uint8_t *p); -uint64_t BstreamToUint64(const uint8_t *p); -void Bda64ToBstream(uint8_t *p, uint64_t bda); -void Uint64ToBstream(uint8_t *p, uint64_t n); - -#ifdef __cplusplus -}; -#endif - -#endif /* BSTREAM_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/utils.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/utils.h deleted file mode 100644 index 90f8b65f3bf..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/util/utils.h +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file utils.h - * - * \brief Utility functions. - * - * Copyright (c) 2015 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact ARM, Ltd. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ - -#ifndef __UTILS_H -#define __UTILS_H - -/*************************************************************************************************** -** INCLUDES -***************************************************************************************************/ - -#include -#include - -#include "wsf_types.h" - -#if defined(__GNUC__) || defined(__CC_ARM) -#define PRINTF_ATTRIBUTE(a, b) __attribute__((format(printf, a, b))) -#else -#define PRINTF_ATTRIBUTE(a, b) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************************************************************************** -** DEFINES -***************************************************************************************************/ - -#define UTIL_MAC_ADDR_LEN 6 - -/*------------------------------------------------------------------------------------------------*/ - -#define UTIL_IS_DIGIT(c) ((c >= '0') && (c <= '9')) -#define UTIL_IS_XDIGIT(c) (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) || \ - ((c >= 'A') && (c <= 'F'))) - -/*------------------------------------------------------------------------------------------------*/ - -#define UTIL_DIGIT_TO_INT(c) (((c >= '0') && (c <= '9')) ? (uint8_t)(c - '0') : 0u) -#define UTIL_XDIGIT_TO_INT(c) (((c >= '0') && (c <= '9')) ? (uint8_t)(c - '0') : \ - ((c >= 'a') && (c <= 'f')) ? (uint8_t)(c - 'a' + 10u) : \ - ((c >= 'A') && (c <= 'F')) ? (uint8_t)(c - 'A' + 10u) : 0u) - -/*************************************************************************************************** -** FUNCTIONS -***************************************************************************************************/ - -/*-------------------------------------------------------------------------------------------------- -** Util_VSNPrintf() -** -** DESCRIPTION: Print formatted output to string. -** -** PARAMETERS: s Pointer to string that will receive outoput -** size Maximum number of characters to store in s -** format Pointer to format string -** ap Variable arguments -** -** RETURNS: Number of characters stored in s -**------------------------------------------------------------------------------------------------*/ -int Util_VSNPrintf(char *s, size_t size, const char *format, va_list ap) PRINTF_ATTRIBUTE(3, 0); - -/*-------------------------------------------------------------------------------------------------- -** Util_SNPrintf() -** -** DESCRIPTION: Print formatted output to string. -** -** PARAMETERS: s Pointer to string that will receive outoput -** size Maximum number of characters to store in s -** format Pointer to format string -** ap Variable arguments -** -** RETURNS: Number of characters stored in s -**------------------------------------------------------------------------------------------------*/ -int Util_SNPrintf (char *s, size_t size, const char *format, ...) PRINTF_ATTRIBUTE(3, 4); - -/*-------------------------------------------------------------------------------------------------- -** Util_ParseMacAddr() -** -** DESCRIPTION: Parse MAC address from string. -** -** PARAMETERS: s Pointer to string to parse -** addr Pointer to buffer that will receive MAC address -** -** RETURNS: Number of characters consumed from string -**------------------------------------------------------------------------------------------------*/ -int32_t Util_ParseMacAddr(const char *s, uint8_t (*addr)[UTIL_MAC_ADDR_LEN]); - -/*-------------------------------------------------------------------------------------------------- -** Util_ParseUInt() -** -** DESCRIPTION: Parse unsigned integer from string. -** -** PARAMETERS: s Pointer to string to parse -** u Pointer to variable that will receive integer -** base Base of integer (between 2 and 36, inclusive) or 0, for automatic detection -** -** RETURNS: Number of characters consumed from string -**------------------------------------------------------------------------------------------------*/ -int32_t Util_ParseUInt(const char *s, uint32_t *u, uint32_t base); - -#ifdef __cplusplus -} -#endif - -#endif /* __UTILS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_assert.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_assert.h deleted file mode 100644 index fd8b242bc11..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_assert.h +++ /dev/null @@ -1,79 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_assert.h - * - * \brief Assert macro. - * - * $Date: 2015-10-05 09:54:16 -0700 (Mon, 05 Oct 2015) $ - * $Revision: 4112 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_ASSERT_H -#define WSF_ASSERT_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Prototypes -**************************************************************************************************/ - -#if WSF_TOKEN_ENABLED == TRUE -void WsfAssert(uint16_t modId, uint16_t line); -#else -void WsfAssert(const char *pFile, uint16_t line); -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \def WSF_ASSERT - * - * \brief Run-time assert macro. The assert executes when the expression is FALSE. - * - * \param expr Boolean expression to be tested. - */ -/*************************************************************************************************/ -#if WSF_ASSERT_ENABLED == TRUE -#if WSF_TOKEN_ENABLED == TRUE -#define WSF_ASSERT(expr) if (!(expr)) {WsfAssert(MODULE_ID, (uint16_t) __LINE__);} -#else -#define WSF_ASSERT(expr) if (!(expr)) {WsfAssert(__FILE__, (uint16_t) __LINE__);} -#endif -#else -#define WSF_ASSERT(expr) -#endif - -/*************************************************************************************************/ -/*! - * \def WSF_CT_ASSERT - * - * \brief Compile-time assert macro. This macro causes a compiler error when the - * expression is FALSE. Note that this macro is generally used at file scope to - * test constant expressions. Errors may result of it is used in executing code. - * - * \param expr Boolean expression to be tested. - */ -/*************************************************************************************************/ -#define WSF_CT_ASSERT(expr) extern char wsf_ct_assert[(expr) ? 1 : -1] - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_ASSERT_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_os_int.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_os_int.h deleted file mode 100644 index fcc32e7725b..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_os_int.h +++ /dev/null @@ -1,105 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_os_int.h - * - * \brief Software foundation OS platform-specific interface file. - * - * $Date: 2012-10-01 13:53:07 -0700 (Mon, 01 Oct 2012) $ - * $Revision: 357 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_OS_INT_H -#define WSF_OS_INT_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/* Task events */ -#define WSF_MSG_QUEUE_EVENT 0x01 /* Message queued for event handler */ -#define WSF_TIMER_EVENT 0x02 /* Timer expired for event handler */ -#define WSF_HANDLER_EVENT 0x04 /* Event set for event handler */ - -/* Derive task from handler ID */ -#define WSF_TASK_FROM_ID(handlerID) (((handlerID) >> 4) & 0x0F) - -/* Derive handler from handler ID */ -#define WSF_HANDLER_FROM_ID(handlerID) ((handlerID) & 0x0F) - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/* Event handler ID data type */ -typedef uint8_t wsfHandlerId_t; - -/* Event handler event mask data type */ -typedef uint8_t wsfEventMask_t; - -/* Task ID data type */ -typedef wsfHandlerId_t wsfTaskId_t; - -/* Task event mask data type */ -typedef uint8_t wsfTaskEvent_t; - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn wsfOsReadyToSleep - * - * \brief Check if WSF is ready to sleep. - * - * \param None. - * - * \return Return TRUE if there are no pending WSF task events set, FALSE otherwise. - */ -/*************************************************************************************************/ -bool_t wsfOsReadyToSleep(void); - -/*************************************************************************************************/ -/*! - * \fn wsfOsDispatcher - * - * \brief Event dispatched. Designed to be called repeatedly from infinite loop. - * - * \param None. - * - * \return None. - */ -/*************************************************************************************************/ -void wsfOsDispatcher(void); - -/*************************************************************************************************/ -/*! - * \fn WsfOsShutdown - * - * \brief Shutdown OS. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfOsShutdown(void); - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_OS_INT_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_trace.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_trace.h deleted file mode 100644 index 1043b45428e..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_trace.h +++ /dev/null @@ -1,223 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_trace.h - * - * \brief Trace message interface. - * - * $Date: 2016-02-27 09:05:32 -0800 (Sat, 27 Feb 2016) $ - * $Revision: 6074 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_TRACE_H -#define WSF_TRACE_H - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! \brief Token event handler. */ -typedef void (*WsfTokenHandler_t)(void); - -/************************************************************************************************** - Function Prototypes -**************************************************************************************************/ - -void WsfTrace(const char *pStr, ...); -void WsfToken(uint32_t tok, uint32_t var); -void WsfTraceEnable(bool_t enable); - -/* Token management. */ -bool_t WsfTokenService(void); -uint8_t WsfTokenIOWrite(uint8_t *pBuf, uint8_t len); - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -#ifdef TOKEN_GENERATION - -#define WSF_TOKEN(subsys, stat, msg) \ - __WSF_TOKEN_DEFINE__( \ - /* token: */ MODULE_ID, __LINE__, \ - /* origin: */ __FILE__, subsys, \ - /* message: */ stat, msg) - -#define WSF_TRACE0(subsys, stat, msg) WSF_TOKEN(subsys, stat, msg) -#define WSF_TRACE1(subsys, stat, msg, var1) WSF_TOKEN(subsys, stat, msg) -#define WSF_TRACE2(subsys, stat, msg, var1, var2) WSF_TOKEN(subsys, stat, msg) -#define WSF_TRACE3(subsys, stat, msg, var1, var2, var3) WSF_TOKEN(subsys, stat, msg) - -#elif WSF_TRACE_ENABLED == TRUE - -#define WSF_TRACE0(subsys, stat, msg) WsfTrace(msg) -#define WSF_TRACE1(subsys, stat, msg, var1) WsfTrace(msg, var1) -#define WSF_TRACE2(subsys, stat, msg, var1, var2) WsfTrace(msg, var1, var2) -#define WSF_TRACE3(subsys, stat, msg, var1, var2, var3) WsfTrace(msg, var1, var2, var3) - -#elif WSF_TOKEN_ENABLED == TRUE - -#define WSF_TRACE0(subsys, stat, msg) \ - WsfToken(((__LINE__ & 0xFFF) << 16) | MODULE_ID, 0) -#define WSF_TRACE1(subsys, stat, msg, var1) \ - WsfToken(((__LINE__ & 0xFFF) << 16) | MODULE_ID, (uint32_t)(var1)) -#define WSF_TRACE2(subsys, stat, msg, var1, var2) \ - WsfToken(((__LINE__ & 0xFFF) << 16) | MODULE_ID, (uint32_t)(((var2) << 16) | ((var1) & 0xFFFF))) -#define WSF_TRACE3(subsys, stat, msg, var1, var2, var3) \ - WsfToken(((__LINE__ & 0xFFF) << 16) | MODULE_ID, (uint32_t)((((var3) & 0xFFFF) << 16) | (((var2) & 0xFF) << 8) | ((var1) & 0xFF))) - -#else - -#define WSF_TRACE0(subsys, stat, msg) -#define WSF_TRACE1(subsys, stat, msg, var1) -#define WSF_TRACE2(subsys, stat, msg, var1, var2) -#define WSF_TRACE3(subsys, stat, msg, var1, var2, var3) - -#endif - -#define WSF_TRACE_INFO0(msg) -#define WSF_TRACE_INFO1(msg, var1) -#define WSF_TRACE_INFO2(msg, var1, var2) -#define WSF_TRACE_INFO3(msg, var1, var2, var3) -#define WSF_TRACE_WARN0(msg) WSF_TRACE0("WSF", "WARN", msg) -#define WSF_TRACE_WARN1(msg, var1) WSF_TRACE1("WSF", "WARN", msg, var1) -#define WSF_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("WSF", "WARN", msg, var1, var2) -#define WSF_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("WSF", "WARN", msg, var1, var2, var3) -#define WSF_TRACE_ERR0(msg) WSF_TRACE0("WSF", "ERR", msg) -#define WSF_TRACE_ERR1(msg, var1) WSF_TRACE1("WSF", "ERR", msg, var1) -#define WSF_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("WSF", "ERR", msg, var1, var2) -#define WSF_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("WSF", "ERR", msg, var1, var2, var3) -#define WSF_TRACE_ALLOC0(msg) -#define WSF_TRACE_ALLOC1(msg, var1) -#define WSF_TRACE_ALLOC2(msg, var1, var2) -#define WSF_TRACE_ALLOC3(msg, var1, var2, var3) -#define WSF_TRACE_FREE0(msg) -#define WSF_TRACE_FREE1(msg, var1) -#define WSF_TRACE_FREE2(msg, var1, var2) -#define WSF_TRACE_FREE3(msg, var1, var2, var3) -#define WSF_TRACE_MSG0(msg) -#define WSF_TRACE_MSG1(msg, var1) -#define WSF_TRACE_MSG2(msg, var1, var2) -#define WSF_TRACE_MSG3(msg, var1, var2, var3) - -#define HCI_TRACE_INFO0(msg) WSF_TRACE0("HCI", "INFO", msg) -#define HCI_TRACE_INFO1(msg, var1) WSF_TRACE1("HCI", "INFO", msg, var1) -#define HCI_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("HCI", "INFO", msg, var1, var2) -#define HCI_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("HCI", "INFO", msg, var1, var2, var3) -#define HCI_TRACE_WARN0(msg) WSF_TRACE0("HCI", "WARN", msg) -#define HCI_TRACE_WARN1(msg, var1) WSF_TRACE1("HCI", "WARN", msg, var1) -#define HCI_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("HCI", "WARN", msg, var1, var2) -#define HCI_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("HCI", "WARN", msg, var1, var2, var3) -#define HCI_TRACE_ERR0(msg) WSF_TRACE0("HCI", "ERR", msg) -#define HCI_TRACE_ERR1(msg, var1) WSF_TRACE1("HCI", "ERR", msg, var1) -#define HCI_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("HCI", "ERR", msg, var1, var2) -#define HCI_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("HCI", "ERR", msg, var1, var2, var3) - -#define HCI_PDUMP_CMD(len, pBuf) -#define HCI_PDUMP_EVT(len, pBuf) -#define HCI_PDUMP_TX_ACL(len, pBuf) -#define HCI_PDUMP_RX_ACL(len, pBuf) - -#define DM_TRACE_INFO0(msg) WSF_TRACE0("DM", "INFO", msg) -#define DM_TRACE_INFO1(msg, var1) WSF_TRACE1("DM", "INFO", msg, var1) -#define DM_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("DM", "INFO", msg, var1, var2) -#define DM_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("DM", "INFO", msg, var1, var2, var3) -#define DM_TRACE_WARN0(msg) WSF_TRACE0("DM", "WARN", msg) -#define DM_TRACE_WARN1(msg, var1) WSF_TRACE1("DM", "WARN", msg, var1) -#define DM_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("DM", "WARN", msg, var1, var2) -#define DM_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("DM", "WARN", msg, var1, var2, var3) -#define DM_TRACE_ERR0(msg) WSF_TRACE0("DM", "ERR", msg) -#define DM_TRACE_ERR1(msg, var1) WSF_TRACE1("DM", "ERR", msg, var1) -#define DM_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("DM", "ERR", msg, var1, var2) -#define DM_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("DM", "ERR", msg, var1, var2, var3) -#define DM_TRACE_ALLOC0(msg) WSF_TRACE0("DM", "ALLOC", msg) -#define DM_TRACE_ALLOC1(msg, var1) WSF_TRACE1("DM", "ALLOC", msg, var1) -#define DM_TRACE_ALLOC2(msg, var1, var2) WSF_TRACE2("DM", "ALLOC", msg, var1, var2) -#define DM_TRACE_ALLOC3(msg, var1, var2, var3) WSF_TRACE3("DM", "ALLOC", msg, var1, var2, var3) -#define DM_TRACE_FREE0(msg) WSF_TRACE0("DM", "FREE", msg) -#define DM_TRACE_FREE1(msg, var1) WSF_TRACE1("DM", "FREE", msg, var1) -#define DM_TRACE_FREE2(msg, var1, var2) WSF_TRACE2("DM", "FREE", msg, var1, var2) -#define DM_TRACE_FREE3(msg, var1, var2, var3) WSF_TRACE3("DM", "FREE", msg, var1, var2, var3) - -#define L2C_TRACE_INFO0(msg) WSF_TRACE0("L2C", "INFO", msg) -#define L2C_TRACE_INFO1(msg, var1) WSF_TRACE1("L2C", "INFO", msg, var1) -#define L2C_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("L2C", "INFO", msg, var1, var2) -#define L2C_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("L2C", "INFO", msg, var1, var2, var3) -#define L2C_TRACE_WARN0(msg) WSF_TRACE0("L2C", "WARN", msg) -#define L2C_TRACE_WARN1(msg, var1) WSF_TRACE1("L2C", "WARN", msg, var1) -#define L2C_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("L2C", "WARN", msg, var1, var2) -#define L2C_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("L2C", "WARN", msg, var1, var2, var3) -#define L2C_TRACE_ERR0(msg) WSF_TRACE0("L2C", "ERR", msg) -#define L2C_TRACE_ERR1(msg, var1) WSF_TRACE1("L2C", "ERR", msg, var1) -#define L2C_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("L2C", "ERR", msg, var1, var2) -#define L2C_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("L2C", "ERR", msg, var1, var2, var3) - -#define ATT_TRACE_INFO0(msg) WSF_TRACE0("ATT", "INFO", msg) -#define ATT_TRACE_INFO1(msg, var1) WSF_TRACE1("ATT", "INFO", msg, var1) -#define ATT_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("ATT", "INFO", msg, var1, var2) -#define ATT_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("ATT", "INFO", msg, var1, var2, var3) -#define ATT_TRACE_WARN0(msg) WSF_TRACE0("ATT", "WARN", msg) -#define ATT_TRACE_WARN1(msg, var1) WSF_TRACE1("ATT", "WARN", msg, var1) -#define ATT_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("ATT", "WARN", msg, var1, var2) -#define ATT_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("ATT", "WARN", msg, var1, var2, var3) -#define ATT_TRACE_ERR0(msg) WSF_TRACE0("ATT", "ERR", msg) -#define ATT_TRACE_ERR1(msg, var1) WSF_TRACE1("ATT", "ERR", msg, var1) -#define ATT_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("ATT", "ERR", msg, var1, var2) -#define ATT_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("ATT", "ERR", msg, var1, var2, var3) - -#define SMP_TRACE_INFO0(msg) WSF_TRACE0("SMP", "INFO", msg) -#define SMP_TRACE_INFO1(msg, var1) WSF_TRACE1("SMP", "INFO", msg, var1) -#define SMP_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("SMP", "INFO", msg, var1, var2) -#define SMP_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("SMP", "INFO", msg, var1, var2, var3) -#define SMP_TRACE_WARN0(msg) WSF_TRACE0("SMP", "WARN", msg) -#define SMP_TRACE_WARN1(msg, var1) WSF_TRACE1("SMP", "WARN", msg, var1) -#define SMP_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("SMP", "WARN", msg, var1, var2) -#define SMP_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("SMP", "WARN", msg, var1, var2, var3) -#define SMP_TRACE_ERR0(msg) WSF_TRACE0("SMP", "ERR", msg) -#define SMP_TRACE_ERR1(msg, var1) WSF_TRACE1("SMP", "ERR", msg, var1) -#define SMP_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("SMP", "ERR", msg, var1, var2) -#define SMP_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("SMP", "ERR", msg, var1, var2, var3) - -#define APP_TRACE_INFO0(msg) WSF_TRACE0("APP", "INFO", msg) -#define APP_TRACE_INFO1(msg, var1) WSF_TRACE1("APP", "INFO", msg, var1) -#define APP_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("APP", "INFO", msg, var1, var2) -#define APP_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("APP", "INFO", msg, var1, var2, var3) -#define APP_TRACE_WARN0(msg) WSF_TRACE0("APP", "WARN", msg) -#define APP_TRACE_WARN1(msg, var1) WSF_TRACE1("APP", "WARN", msg, var1) -#define APP_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("APP", "WARN", msg, var1, var2) -#define APP_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("APP", "WARN", msg, var1, var2, var3) -#define APP_TRACE_ERR0(msg) WSF_TRACE0("APP", "ERR", msg) -#define APP_TRACE_ERR1(msg, var1) WSF_TRACE1("APP", "ERR", msg, var1) -#define APP_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("APP", "ERR", msg, var1, var2) -#define APP_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("APP", "ERR", msg, var1, var2, var3) - -#define LL_TRACE_INFO0(msg) WSF_TRACE0("LL", "INFO", msg) -#define LL_TRACE_INFO1(msg, var1) WSF_TRACE1("LL", "INFO", msg, var1) -#define LL_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("LL", "INFO", msg, var1, var2) -#define LL_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("LL", "INFO", msg, var1, var2, var3) -#define LL_TRACE_WARN0(msg) WSF_TRACE0("LL", "WARN", msg) -#define LL_TRACE_WARN1(msg, var1) WSF_TRACE1("LL", "WARN", msg, var1) -#define LL_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("LL", "WARN", msg, var1, var2) -#define LL_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("LL", "WARN", msg, var1, var2, var3) -#define LL_TRACE_ERR0(msg) WSF_TRACE0("LL", "ERR", msg) -#define LL_TRACE_ERR1(msg, var1) WSF_TRACE1("LL", "ERR", msg, var1) -#define LL_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("LL", "ERR", msg, var1, var2) -#define LL_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("LL", "ERR", msg, var1, var2, var3) - -#if (WSF_TRACE_ENABLED == TRUE) || (WSF_TOKEN_ENABLED == TRUE) -#define LL_TRACE_ENABLE(ena) WsfTraceEnable(ena) -#else -#define LL_TRACE_ENABLE(ena) -#endif - -#endif /* WSF_TRACE_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_types.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_types.h deleted file mode 100644 index 7d5ce3f39e6..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/generic/wsf_types.h +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_types.h - * - * \brief Platform-independent data types. - * - * $Date: 2015-05-14 14:58:23 -0700 (Thu, 14 May 2015) $ - * $Revision: 2837 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_TYPES_H -#define WSF_TYPES_H - -#include -#include - -#endif /* WSF_TYPES_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_buf.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_buf.h deleted file mode 100644 index 4b86c58fd07..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_buf.h +++ /dev/null @@ -1,171 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_buf.h - * - * \brief Buffer pool service. - * - * $Date: 2015-12-20 15:10:41 -0800 (Sun, 20 Dec 2015) $ - * $Revision: 4927 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_BUF_H -#define WSF_BUF_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Length of the buffer statistics array */ -#define WSF_BUF_STATS_MAX_LEN 128 - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Buffer pool descriptor structure */ -typedef struct -{ - uint16_t len; /*! length of buffers in pool */ - uint8_t num; /*! number of buffers in pool */ -} wsfBufPoolDesc_t; - -/*! Pool statistics */ -typedef struct -{ - uint16_t bufSize; /*!< Pool buffer size. */ - uint8_t numBuf; /*!< Total number of buffers. */ - uint8_t numAlloc; /*!< Number of outstanding allocations. */ - uint8_t maxAlloc; /*!< High allocation watermark. */ -} WsfBufPoolStat_t; - - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn WsfBufInit - * - * \brief Initialize the buffer pool service. This function should only be called once - * upon system initialization. - * - * \param bufMemLen Length in bytes of memory pointed to by pBufMem. - * \param pBufMem Memory in which to store the pools used by the buffer pool service. - * \param numPools Number of buffer pools. - * \param pDesc Array of buffer pool descriptors, one for each pool. - * - * \return Amount of pBufMem used or 0 for failures. - */ -/*************************************************************************************************/ -uint16_t WsfBufInit(uint16_t bufMemLen, uint8_t *pBufMem, uint8_t numPools, wsfBufPoolDesc_t *pDesc); - -/*************************************************************************************************/ -/*! - * \fn WsfBufAlloc - * - * \brief Allocate a buffer. - * - * \param len Length of buffer to allocate. - * - * \return Pointer to allocated buffer or NULL if allocation fails. - */ -/*************************************************************************************************/ -void *WsfBufAlloc(uint16_t len); - -/*************************************************************************************************/ -/*! - * \fn WsfBufFree - * - * \brief Free a buffer. - * - * \param pBuf Buffer to free. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfBufFree(void *pBuf); - -/*************************************************************************************************/ -/*! - * \fn WsfBufGetMaxAlloc - * - * \brief Diagnostic function to get maximum allocated buffers from a pool. - * - * \param pool Buffer pool number. - * - * \return Number of allocated buffers. - */ -/*************************************************************************************************/ -uint8_t WsfBufGetMaxAlloc(uint8_t pool); - -/*************************************************************************************************/ -/*! - * \fn WsfBufGetNumAlloc - * - * \brief Diagnostic function to get the number of currently allocated buffers in a pool. - * - * \param pool Buffer pool number. - * - * \return Number of allocated buffers. - */ -/*************************************************************************************************/ -uint8_t WsfBufGetNumAlloc(uint8_t pool); - -/*************************************************************************************************/ -/*! - * \fn WsfBufGetAllocStats - * - * \brief Diagnostic function to get the buffer allocation statistics. - * - * \return Buffer allocation statistics array. - */ -/*************************************************************************************************/ -uint8_t *WsfBufGetAllocStats(void); - -/*************************************************************************************************/ -/*! - * \fn WsfBufGetNumPool - * - * \brief Get number of pools. - * - * \return Number of pools. - */ -/*************************************************************************************************/ -uint8_t WsfBufGetNumPool(void); - -/*************************************************************************************************/ -/*! - * \fn WsfBufGetPoolStats - * - * \brief Get statistics for each pool. - * - * \param pStat Buffer to store the statistics. - * \param numPool Number of pool elements. - * - * \return Pool statistics. - */ -/*************************************************************************************************/ -void WsfBufGetPoolStats(WsfBufPoolStat_t *pStat, uint8_t numPool); - - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_BUF_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_math.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_math.h deleted file mode 100644 index 5d0ad4bf6d4..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_math.h +++ /dev/null @@ -1,188 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_math.h - * - * \brief Common math utilities. - * - * $Date: 2016-04-05 14:14:53 -0700 (Tue, 05 Apr 2016) $ - * $Revision: 6646 $ - * - * Copyright (c) 2013 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_MATH_H -#define WSF_MATH_H - -#include "wsf_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! \brief Returns the minimum of two values. */ -#define WSF_MIN(a,b) ((a) < (b) ? (a) : (b)) - -/*! \brief Returns the maximum of two values. */ -#define WSF_MAX(a,b) ((a) > (b) ? (a) : (b)) - -/*! \brief ECC key length. */ -#define WSF_MATH_ECC_KEY_LEN 32 - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! \brief ECC service callback. */ -typedef void (*WsfMathEccServiceCback_t)(uint8_t op); - -/*! \brief ECC operations. */ -enum -{ - WSF_MATH_ECC_OP_GENERATE_P256_KEY_PAIR, /*!< Generate P-256 key pair. */ - WSF_MATH_ECC_OP_GENERATE_DH_KEY /*!< Generate Diffie-Hellman key. */ -}; - - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn WsfMathInit - * - * \brief Initialize math routines. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMathInit(void); - -/*************************************************************************************************/ -/*! - * \fn WsfRandNum - * - * \brief Generate random number. - * - * \return 32-bit random number. - */ -/*************************************************************************************************/ -uint32_t WsfRandNum(void); - -/*************************************************************************************************/ -/*! - * \fn WsfAesEcb - * - * \brief Calculate AES ECB. - * - * \param pKey Encryption key. - * \param pOut Output data. - * \param pIn Input data. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfAesEcb(const uint8_t *pKey, uint8_t *pOut, const uint8_t *pIn); - -/*************************************************************************************************/ -/*! - * \brief Set service callback for ECC generation. - * - * \param cback Callback to invoke when driver needs servicing. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMathEccSetServiceCback(WsfMathEccServiceCback_t cback); - -/*************************************************************************************************/ -/*! - * \brief Start generating P-256 key pair. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMathEccGenerateP256KeyPairStart(void); - -/*************************************************************************************************/ -/*! - * \brief Start generating P-256 public key with a specified private key. - * - * \param pPrivKey Private key. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMathEccGenerateP256PublicKeyStart(const uint8_t *pPrivKey); - -/*************************************************************************************************/ -/*! - * \brief Continue generating P-256 key pair. - * - * \return TRUE if key generation complete. - */ -/*************************************************************************************************/ -bool_t WsfMathEccGenerateP256KeyPairContinue(void); - -/*************************************************************************************************/ -/*! - * \brief Get results from generating P-256 key pair. - * - * \param pPubKey Storage for public key. - * \param pPrivKey Storage for private key. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMathEccGenerateP256KeyPairComplete(uint8_t *pPubKey, uint8_t *pPrivKey); - -/*************************************************************************************************/ -/*! - * \brief Start generating Diffie-Hellman key. - * - * \param pPublicKey Public key. - * \param pPrivateKey Private key. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMathEccGenerateDhKeyStart(const uint8_t *pPubKey, const uint8_t *pPrivKey); - -/*************************************************************************************************/ -/*! - * \brief Continue generating Diffie-Hellman key. - * - * \return TRUE if Diffie-Hellman key generation complete. - */ -/*************************************************************************************************/ -bool_t WsfMathEccGenerateDhKeyContinue(void); - -/*************************************************************************************************/ -/*! - * \brief Get results from generating Diffie-Hellman key. - * - * \param pDhKey Storage for Diffie-Hellman key. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMathEccGenerateDhKeyComplete(uint8_t *pDhKey); - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_MATH_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_msg.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_msg.h deleted file mode 100644 index b3ffe387ab3..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_msg.h +++ /dev/null @@ -1,123 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_msg.h - * - * \brief Message passing service. - * - * $Date: 2013-07-02 15:08:09 -0700 (Tue, 02 Jul 2013) $ - * $Revision: 779 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_MSG_H -#define WSF_MSG_H - -#include "wsf_queue.h" -#include "wsf_os.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn WsfMsgAlloc - * - * \brief Allocate a message buffer to be sent with WsfMsgSend(). - * - * \param len Message length in bytes. - * - * \return Pointer to message buffer or NULL if allocation failed. - */ -/*************************************************************************************************/ -void *WsfMsgAlloc(uint16_t len); - -/*************************************************************************************************/ -/*! - * \fn WsfMsgFree - * - * \brief Free a message buffer allocated with WsfMsgAlloc(). - * - * \param pMsg Pointer to message buffer. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMsgFree(void *pMsg); - -/*************************************************************************************************/ -/*! - * \fn WsfMsgSend - * - * \brief Send a message to an event handler. - * - * \param handlerId Event handler ID. - * \param pMsg Pointer to message buffer. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMsgSend(wsfHandlerId_t handlerId, void *pMsg); - -/*************************************************************************************************/ -/*! - * \fn WsfMsgEnq - * - * \brief Enqueue a message. - * - * \param pQueue Pointer to queue. - * \param handerId Set message handler ID to this value. - * \param pElem Pointer to message buffer. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfMsgEnq(wsfQueue_t *pQueue, wsfHandlerId_t handlerId, void *pMsg); - -/*************************************************************************************************/ -/*! - * \fn WsfMsgDeq - * - * \brief Dequeue a message. - * - * \param pQueue Pointer to queue. - * \param pHandlerId Handler ID of returned message; this is a return parameter. - * - * \return Pointer to message that has been dequeued or NULL if queue is empty. - */ -/*************************************************************************************************/ -void *WsfMsgDeq(wsfQueue_t *pQueue, wsfHandlerId_t *pHandlerId); - -/*************************************************************************************************/ -/*! - * \fn WsfMsgPeek - * - * \brief Get the next message without removing it from the queue. - * - * \param pQueue Pointer to queue. - * \param pHandlerId Handler ID of returned message; this is a return parameter. - * - * \return Pointer to the next message on the queue or NULL if queue is empty. - */ -/*************************************************************************************************/ -void *WsfMsgPeek(wsfQueue_t *pQueue, wsfHandlerId_t *pHandlerId); - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_MSG_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_os.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_os.h deleted file mode 100644 index 26a254a62fb..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_os.h +++ /dev/null @@ -1,147 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_os.h - * - * \brief Software foundation OS API. - * - * $Date: 2014-08-08 06:30:50 -0700 (Fri, 08 Aug 2014) $ - * $Revision: 1725 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_OS_H -#define WSF_OS_H - -#include "wsf_os_int.h" -#include "wsf_queue.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Common message structure passed to event handler */ -typedef struct -{ - uint16_t param; /*! General purpose parameter passed to event handler */ - uint8_t event; /*! General purpose event value passed to event handler */ - uint8_t status; /*! General purpose status value passed to event handler */ -} wsfMsgHdr_t; - -/************************************************************************************************** - Callback Function Types -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn wsfEventHandler_t - * - * \brief Event handler callback function. - * - * \param event Mask of events set for the event handler. - * \param pMsg Pointer to message for the event handler. - * - * \return None. - */ -/*************************************************************************************************/ -typedef void (*wsfEventHandler_t)(wsfEventMask_t event, wsfMsgHdr_t *pMsg); - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn WsfSetEvent - * - * \brief Set an event for an event handler. - * - * \param handlerId Handler ID. - * \param event Event or events to set. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfSetEvent(wsfHandlerId_t handlerId, wsfEventMask_t event); - -/*************************************************************************************************/ -/*! - * \fn WsfTaskLock - * - * \brief Lock task scheduling. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfTaskLock(void); - -/*************************************************************************************************/ -/*! - * \fn WsfTaskUnlock - * - * \brief Unlock task scheduling. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfTaskUnlock(void); - -/*************************************************************************************************/ -/*! - * \fn WsfTaskSetReady - * - * \brief Set the task used by the given handler as ready to run. - * - * \param handlerId Event handler ID. - * \param event Task event mask. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfTaskSetReady(wsfHandlerId_t handlerId, wsfTaskEvent_t event); - -/*************************************************************************************************/ -/*! - * \fn WsfTaskMsgQueue - * - * \brief Return the task message queue used by the given handler. - * - * \param handlerId Event handler ID. - * - * \return Task message queue. - */ -/*************************************************************************************************/ -wsfQueue_t *WsfTaskMsgQueue(wsfHandlerId_t handlerId); - -/*************************************************************************************************/ -/*! - * \fn WsfOsSetNextHandler - * - * \brief Set the next WSF handler function in the WSF OS handler array. This function - * should only be called as part of the OS initialization procedure. - * - * \param handler WSF handler function. - * - * \return WSF handler ID for this handler. - */ -/*************************************************************************************************/ -wsfHandlerId_t WsfOsSetNextHandler(wsfEventHandler_t handler); - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_OS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_queue.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_queue.h deleted file mode 100644 index a306a9b57c7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_queue.h +++ /dev/null @@ -1,155 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_queue.h - * - * \brief General purpose queue service. - * - * $Date: 2011-10-14 21:35:03 -0700 (Fri, 14 Oct 2011) $ - * $Revision: 191 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_QUEUE_H -#define WSF_QUEUE_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! Initialize a queue */ -#define WSF_QUEUE_INIT(pQueue) {(pQueue)->pHead = NULL; (pQueue)->pTail = NULL;} - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Queue structure */ -typedef struct -{ - void *pHead; /*! head of queue */ - void *pTail; /*! tail of queue */ -} wsfQueue_t; - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn WsfQueueEnq - * - * \brief Enqueue an element to the tail of a queue. - * - * \param pQueue Pointer to queue. - * \param pElem Pointer to element. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfQueueEnq(wsfQueue_t *pQueue, void *pElem); - -/*************************************************************************************************/ -/*! - * \fn WsfQueueDeq - * - * \brief Dequeue an element from the head of a queue. - * - * \param pQueue Pointer to queue. - * - * \return Pointer to element that has been dequeued or NULL if queue is empty. - */ -/*************************************************************************************************/ -void *WsfQueueDeq(wsfQueue_t *pQueue); - -/*************************************************************************************************/ -/*! - * \fn WsfQueuePush - * - * \brief Push an element to the head of a queue. - * - * \param pQueue Pointer to queue. - * \param pElem Pointer to element. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfQueuePush(wsfQueue_t *pQueue, void *pElem); - -/*************************************************************************************************/ -/*! - * \fn WsfQueueInsert - * - * \brief Insert an element into a queue. This function is typically used when iterating - * over a queue. - * - * \param pQueue Pointer to queue. - * \param pElem Pointer to element to be inserted. - * \param pPrev Pointer to previous element in the queue before element to be inserted. - * Note: set pPrev to NULL if pElem is first element in queue. - * \return None. - */ -/*************************************************************************************************/ -void WsfQueueInsert(wsfQueue_t *pQueue, void *pElem, void *pPrev); - -/*************************************************************************************************/ -/*! - * \fn WsfQueueRemove - * - * \brief Remove an element from a queue. This function is typically used when iterating - * over a queue. - * - * \param pQueue Pointer to queue. - * \param pElem Pointer to element to be removed. - * \param pPrev Pointer to previous element in the queue before element to be removed. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfQueueRemove(wsfQueue_t *pQueue, void *pElem, void *pPrev); - -/*************************************************************************************************/ -/*! - * \fn WsfQueueCount - * - * \brief Count the number of elements in a queue. - * - * \param pQueue Pointer to queue. - * - * \return Number of elements in queue. - */ -/*************************************************************************************************/ -uint16_t WsfQueueCount(wsfQueue_t *pQueue); - -/*************************************************************************************************/ -/*! - * \fn WsfQueueEmpty - * - * \brief Return TRUE if queue is empty. - * - * \param pQueue Pointer to queue. - * - * \return TRUE if queue is empty, FALSE otherwise. - */ -/*************************************************************************************************/ -bool_t WsfQueueEmpty(wsfQueue_t *pQueue); - - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_QUEUE_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_sec.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_sec.h deleted file mode 100644 index 4662e3ea516..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_sec.h +++ /dev/null @@ -1,243 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_sec.h - * - * \brief AES and random number security service API. - * - * $Date: 2015-10-15 11:57:57 -0700 (Thu, 15 Oct 2015) $ - * $Revision: 4218 $ - * - * Copyright (c) 2010 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_SEC_H -#define WSF_SEC_H - -#include "wsf_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -/*! CMAC algorithm key length */ -#define WSF_CMAC_KEY_LEN 16 - -/*! CMAC algorithm result length */ -#define WSF_CMAC_HASH_LEN 16 - -/*! ECC algorithm key length */ -#define WSF_ECC_KEY_LEN 32 - -/*! Invalid AES Token */ -#define WSF_TOKEN_INVALID 0xFF - -/************************************************************************************************** - Data Types -**************************************************************************************************/ -/*! AES Security callback parameters structure */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! header */ - uint8_t *pCiphertext; /*! pointer to 16 bytes of ciphertext data */ -} wsfSecMsg_t; - -/*! AES Security callback are the same as wsfSecMsg_t */ -typedef wsfSecMsg_t wsfSecAes_t; - -/*! CMAC Security callback are the same as wsfSecMsg_t */ -typedef wsfSecMsg_t wsfSecCmacMsg_t; - -/*! ECC Security public/private key pair */ -typedef struct -{ - uint8_t pubKey_x[WSF_ECC_KEY_LEN]; /*! x component of ecc public key */ - uint8_t pubKey_y[WSF_ECC_KEY_LEN]; /*! y component of ecc public key */ - uint8_t privKey[WSF_ECC_KEY_LEN]; /*! ecc private key */ -} wsfSecEccKey_t; - -/*! ECC security DH Key shared secret */ -typedef struct -{ - uint8_t secret[WSF_ECC_KEY_LEN]; /*! DH Key Shared secret */ -} wsfSecEccSharedSec_t; - - -/*! ECC Security callback parameters structure */ -typedef struct -{ - wsfMsgHdr_t hdr; /*! header */ - union - { - wsfSecEccSharedSec_t sharedSecret; /*! shared secret */ - wsfSecEccKey_t key; /*! ecc public/private key pair */ - } data; -} wsfSecEccMsg_t; - - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn WsfSecInit - * - * \brief Initialize the security service. This function should only be called once - * upon system initialization. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfSecInit(void); - -/*************************************************************************************************/ -/*! - * \fn WsfSecRandInit - * - * \brief Initialize the random number service. This function should only be called once - * upon system initialization. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfSecRandInit(void); - -/*************************************************************************************************/ -/*! - * \fn WsfSecAesInit - * - * \brief Initialize the AES service. This function should only be called once - * upon system initialization. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfSecAesInit(void); - -/*************************************************************************************************/ -/*! - * \fn WsfSecCmacInit - * - * \brief Called to initialize CMAC security. This function should only be called once - * upon system initialization. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfSecCmacInit(void); - -/*************************************************************************************************/ -/*! - * \fn WsfSecEccInit - * - * \brief Called to initialize ECC security. This function should only be called once - * upon system initialization. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfSecEccInit(void); - -/*************************************************************************************************/ -/*! - * \fn WsfSecAes - * - * \brief Execute an AES calculation. When the calculation completes, a WSF message will be - * sent to the specified handler. This function returns a token value that - * the client can use to match calls to this function with messages. - * - * \param pKey Pointer to 16 byte key. - * \param pPlaintext Pointer to 16 byte plaintext. - * \param handlerId WSF handler ID. - * \param param Client-defined parameter returned in message. - * \param event Event for client's WSF handler. - * - * \return Token value. - */ -/*************************************************************************************************/ -uint8_t WsfSecAes(uint8_t *pKey, uint8_t *pPlaintext, wsfHandlerId_t handlerId, - uint16_t param, uint8_t event); - -/*************************************************************************************************/ -/*! - * \fn WsfSecAesCmac - * - * \brief Execute the CMAC algorithm. - * - * \param pKey Key used in CMAC operation. - * \param pPlaintext Data to perform CMAC operation over - * \param len Size of pPlaintext in bytes. - * \param handlerId WSF handler ID for client. - * \param param Optional parameter sent to client's WSF handler. - * \param event Event for client's WSF handler. - * - * \return TRUE if successful, else FALSE. - */ -/*************************************************************************************************/ -bool_t WsfSecCmac(const uint8_t *pKey, uint8_t *pPlaintext, uint8_t textLen, wsfHandlerId_t handlerId, - uint16_t param, uint8_t event); - -/*************************************************************************************************/ -/*! - * \fn WsfSecEccGenKey - * - * \brief Generate an ECC key. - * - * \param handlerId WSF handler ID for client. - * \param param Optional parameter sent to client's WSF handler. - * \param event Event for client's WSF handler. - * - * \return TRUE if successful, else FALSE. - */ -/*************************************************************************************************/ -bool_t WsfSecEccGenKey(wsfHandlerId_t handlerId, uint16_t param, uint8_t event); - -/*************************************************************************************************/ -/*! - * \fn WsfSecEccGenSharedSecret - * - * \brief Generate an ECC key. - * - * \param pKey ECC Key structure. - * \param handlerId WSF handler ID for client. - * \param param Optional parameter sent to client's WSF handler. - * \param event Event for client's WSF handler. - * - * \return TRUE if successful, else FALSE. - */ -/*************************************************************************************************/ -bool_t WsfSecEccGenSharedSecret(wsfSecEccKey_t *pKey, wsfHandlerId_t handlerId, uint16_t param, uint8_t event); - -/*************************************************************************************************/ -/*! - * \fn WsfSecRand - * - * \brief This function returns up to 16 bytes of random data to a buffer provided by the - * client. - * - * \param pRand Pointer to returned random data. - * \param randLen Length of random data. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfSecRand(uint8_t *pRand, uint8_t randLen); - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_SEC_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_sec_int.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_sec_int.h deleted file mode 100644 index b078c33509d..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_sec_int.h +++ /dev/null @@ -1,105 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_sec_int.h - * - * \brief Internal security service structures. - * - * $Date: 2015-12-10 09:40:54 -0800 (Thu, 10 Dec 2015) $ - * $Revision: 4754 $ - * - * Copyright (c) 2010 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_SEC_INT_H -#define WSF_SEC_INT_H - -#include "hci_api.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - - -/*! AES, CMAC and HCI algorithm block length */ -#define WSF_SEC_BLOCK_LEN 16 - -/* CMAC constant Rb */ -#define WSF_SEC_CMAC_RB 0x87 - -/*! Multiple of HCI_RAND_LEN to keep in the wsfSecCb_t rand data buffer */ -#define WSF_HCI_RAND_MULT (32 / HCI_RAND_LEN) - -/*! Compile time ECC configuration */ -#define WSF_SEC_ECC_CFG_DEBUG 0 -#define WSF_SEC_ECC_CFG_UECC 1 -#define WSF_SEC_ECC_CFG_HCI 2 - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Enumeration of security operation types */ -enum -{ - WSF_SEC_TYPE_AES, - WSF_SEC_TYPE_CMAC, - WSF_SEC_TYPE_DH, - WSF_SEC_NUM_TYPES -}; - -/*! Security queue element for CMAC operations */ -typedef struct -{ - uint8_t *pPlainText; - uint8_t key[WSF_CMAC_KEY_LEN]; - uint8_t subkey[WSF_CMAC_KEY_LEN]; - uint16_t position; - uint16_t len; - wsfHandlerId_t handlerId; - uint8_t state; -} wsfSecCmacSecCb_t; - -/*! Security queue element */ -typedef struct -{ - wsfSecMsg_t msg; - uint8_t ciphertext[WSF_SEC_BLOCK_LEN]; - uint8_t reserved[WSF_SEC_BLOCK_LEN]; - void *pCb; - uint8_t type; -} wsfSecQueueBuf_t; - -typedef void wsfSecHciCback_t(wsfSecQueueBuf_t *pBuf, hciEvt_t *pEvent, wsfHandlerId_t handlerId); -typedef wsfSecHciCback_t *pWsfSecHciCback_t; - -/* Control block */ -typedef struct -{ - uint8_t rand[HCI_RAND_LEN*WSF_HCI_RAND_MULT]; /* Random data buffer */ - wsfQueue_t queue; /* Queue for AES requests */ - uint8_t token; /* Token value */ - pWsfSecHciCback_t hciCbackTbl[WSF_SEC_NUM_TYPES]; -} wsfSecCb_t; - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_SEC_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_timer.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_timer.h deleted file mode 100644 index c67c9fde775..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/include/wsf_timer.h +++ /dev/null @@ -1,164 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_timer.h - * - * \brief Timer service. - * - * $Date: 2015-09-11 14:14:44 -0700 (Fri, 11 Sep 2015) $ - * $Revision: 3856 $ - * - * Copyright (c) 2009 Wicentric, Inc., all rights reserved. - * Wicentric confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_TIMER_H -#define WSF_TIMER_H - -#include "wsf_os.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************************************** - Macros -**************************************************************************************************/ - -#ifndef WSF_MS_PER_TICK -/*! Default milliseconds per tick rate */ -#define WSF_MS_PER_TICK 10 -#endif - -/************************************************************************************************** - Data Types -**************************************************************************************************/ - -/*! Timer ticks data type */ -typedef uint32_t wsfTimerTicks_t; - -/*! Timer structure */ -typedef struct wsfTimer_tag -{ - struct wsfTimer_tag *pNext; /*! pointer to next timer in queue */ - wsfTimerTicks_t ticks; /*! number of ticks until expiration */ - wsfHandlerId_t handlerId; /*! event handler for this timer */ - bool_t isStarted; /*! TRUE if timer has been started */ - wsfMsgHdr_t msg; /*! application-defined timer event parameters */ -} wsfTimer_t; - - -/************************************************************************************************** - Function Declarations -**************************************************************************************************/ - -/*************************************************************************************************/ -/*! - * \fn WsfTimerInit - * - * \brief Initialize the timer service. This function should only be called once - * upon system initialization. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfTimerInit(void); - -/*************************************************************************************************/ -/*! - * \fn WsfTimerStartSec - * - * \brief Start a timer in units of seconds. Before this function is called parameter - * pTimer->handlerId must be set to the event handler for this timer and parameter - * pTimer->msg must be set to any application-defined timer event parameters. - * - * \param pTimer Pointer to timer. - * \param sec Seconds until expiration. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfTimerStartSec(wsfTimer_t *pTimer, wsfTimerTicks_t sec); - -/*************************************************************************************************/ -/*! - * \fn WsfTimerStartMs - * - * \brief Start a timer in units of milliseconds. - * - * \param pTimer Pointer to timer. - * \param ms Milliseconds until expiration. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfTimerStartMs(wsfTimer_t *pTimer, wsfTimerTicks_t ms); - -/*************************************************************************************************/ -/*! - * \fn WsfTimerStop - * - * \brief Stop a timer. - * - * \param pTimer Pointer to timer. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfTimerStop(wsfTimer_t *pTimer); - -/*************************************************************************************************/ -/*! - * \fn WsfTimerUpdate - * - * \brief Update the timer service with the number of elapsed ticks. This function is - * typically called only from timer porting code. - * - * \param ticks Number of ticks since last update. - * - * \return None. - */ -/*************************************************************************************************/ -void WsfTimerUpdate(wsfTimerTicks_t ticks); - -/*************************************************************************************************/ -/*! - * \fn WsfTimerNextExpiration - * - * \brief Return the number of ticks until the next timer expiration. Note that this - * function can return zero even if a timer is running, indicating the timer - * has expired but has not yet been serviced. - * - * \param pTimerRunning Returns TRUE if a timer is running, FALSE if no timers running. - * - * \return The number of ticks until the next timer expiration. - */ -/*************************************************************************************************/ -wsfTimerTicks_t WsfTimerNextExpiration(bool_t *pTimerRunning); - -/*************************************************************************************************/ -/*! - * \fn WsfTimerServiceExpired - * - * \brief Service expired timers for the given task. This function is typically called only - * WSF OS porting code. - * - * \param taskId OS Task ID of task servicing timers. - * - * \return Pointer to next expired timer or NULL if there are no expired timers. - */ -/*************************************************************************************************/ -wsfTimer_t *WsfTimerServiceExpired(wsfTaskId_t taskId); - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_TIMER_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/mbed-os/wsf_mbed_os.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/mbed-os/wsf_mbed_os.h deleted file mode 100644 index 86461dd4c6f..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/cordio/include/wsf/mbed-os/wsf_mbed_os.h +++ /dev/null @@ -1,39 +0,0 @@ -/*************************************************************************************************/ -/*! - * \file wsf_mbed_os.h - * - * \brief Mbed OS specific callback. - * - * Copyright (c) 2016 ARM, Ltd., all rights reserved. - * ARM confidential and proprietary. - * - * IMPORTANT. Your use of this file is governed by a Software License Agreement - * ("Agreement") that must be accepted in order to download or otherwise receive a - * copy of this file. You may not use or copy this file for any purpose other than - * as described in the Agreement. If you do not agree to all of the terms of the - * Agreement do not use this file and delete all copies in your possession or control; - * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior - * to any use, copying or further distribution of this software. - */ -/*************************************************************************************************/ -#ifndef WSF_MBED_OS_H -#define WSF_MBED_OS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Register MBED OS SignalEvent */ -void mbedOSRegisterSignalEventCallback(uint32_t (*fnSignalEventInput)(void)); - -/* - * Call Mbed OS SignalEvent - * This function is called to signal to the user code when a wsf task is ready - */ -void mbedOSSignalEventCallback(void); - -#ifdef __cplusplus -}; -#endif - -#endif /* WSF_MBED_OS_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device.h deleted file mode 100644 index 0849da0d36f..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device.h +++ /dev/null @@ -1,21 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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_DEVICE_H -#define MBED_DEVICE_H - -#include "objects.h" - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/CMSDK_BEETLE.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/CMSDK_BEETLE.h deleted file mode 100644 index 08ffa4e11bd..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/CMSDK_BEETLE.h +++ /dev/null @@ -1,1027 +0,0 @@ -/* - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * 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 is derivative of CMSIS V5.00 ARMCM3.h - */ - - -#ifndef CMSDK_BEETLE_H -#define CMSDK_BEETLE_H - -#ifdef __cplusplus - extern "C" { -#endif - - -/* ------------------------- Interrupt Number Definition ------------------------ */ - -typedef enum IRQn -{ -/* ------------------- Cortex-M3 Processor Exceptions Numbers ------------------- */ - NonMaskableInt_IRQn = -14, /* 2 Non Maskable Interrupt */ - HardFault_IRQn = -13, /* 3 HardFault Interrupt */ - MemoryManagement_IRQn = -12, /* 4 Memory Management Interrupt */ - BusFault_IRQn = -11, /* 5 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /* 6 Usage Fault Interrupt */ - SVCall_IRQn = -5, /* 11 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /* 12 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /* 14 Pend SV Interrupt */ - SysTick_IRQn = -1, /* 15 System Tick Interrupt */ - -/* --------------------- CMSDK_BEETLE Specific Interrupt Numbers ---------------- */ - UART0_IRQn = 0, /* UART 0 RX and TX Combined Interrupt */ - Spare_IRQn = 1, /* Undefined */ - UART1_IRQn = 2, /* UART 1 RX and TX Combined Interrupt */ - I2C0_IRQn = 3, /* I2C 0 Interrupt */ - I2C1_IRQn = 4, /* I2C 1 Interrupt */ - RTC_IRQn = 5, /* RTC Interrupt */ - PORT0_ALL_IRQn = 6, /* GPIO Port 0 combined Interrupt */ - PORT1_ALL_IRQn = 7, /* GPIO Port 1 combined Interrupt */ - TIMER0_IRQn = 8, /* TIMER 0 Interrupt */ - TIMER1_IRQn = 9, /* TIMER 1 Interrupt */ - DUALTIMER_IRQn = 10, /* Dual Timer Interrupt */ - SPI0_IRQn = 11, /* SPI 0 Interrupt */ - UARTOVF_IRQn = 12, /* UART 0,1,2 Overflow Interrupt */ - SPI1_IRQn = 13, /* SPI 1 Interrupt */ - QSPI_IRQn = 14, /* QUAD SPI Interrupt */ - DMA_IRQn = 15, /* Reserved for DMA Interrup */ - PORT0_0_IRQn = 16, /* All P0 I/O pins used as irq source */ - PORT0_1_IRQn = 17, /* There are 16 pins in total */ - PORT0_2_IRQn = 18, - PORT0_3_IRQn = 19, - PORT0_4_IRQn = 20, - PORT0_5_IRQn = 21, - PORT0_6_IRQn = 22, - PORT0_7_IRQn = 23, - PORT0_8_IRQn = 24, - PORT0_9_IRQn = 25, - PORT0_10_IRQn = 26, - PORT0_11_IRQn = 27, - PORT0_12_IRQn = 28, - PORT0_13_IRQn = 29, - PORT0_14_IRQn = 30, - PORT0_15_IRQn = 31, - SYSERROR_IRQn = 32, /* System Error Interrupt */ - EFLASH_IRQn = 33, /* Embedded Flash Interrupt */ - LLCC_TXCMD_EMPTY_IRQn = 34, /* t.b.a */ - LLCC_TXEVT_EMPTY_IRQn = 35, /* t.b.a */ - LLCC_TXDMAH_DONE_IRQn = 36, /* t.b.a */ - LLCC_TXDMAL_DONE_IRQn = 37, /* t.b.a */ - LLCC_RXCMD_VALID_IRQn = 38, /* t.b.a */ - LLCC_RXEVT_VALID_IRQn = 39, /* t.b.a */ - LLCC_RXDMAH_DONE_IRQn = 40, /* t.b.a */ - LLCC_RXDMAL_DONE_IRQn = 41, /* t.b.a */ - PORT2_ALL_IRQn = 42, /* GPIO Port 2 combined Interrupt */ - PORT3_ALL_IRQn = 43, /* GPIO Port 3 combined Interrupt */ - TRNG_IRQn = 44, /* Random number generator Interrupt */ -} IRQn_Type; - - -/* ================================================================================ */ -/* ================ Processor and Core Peripheral Section ================ */ -/* ================================================================================ */ - -/* -------- Configuration of the Cortex-M3 Processor and Core Peripherals ------- */ -#define __CM3_REV 0x0201U /* Core revision r2p1 */ -#define __MPU_PRESENT 1 /* MPU present */ -#define __VTOR_PRESENT 1 /* VTOR present or not */ -#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 */ - -#include /* Processor and core peripherals */ -#include "system_CMSDK_BEETLE.h" /* System Header */ - - -/* ================================================================================ */ -/* ================ Device Specific Peripheral Section ================ */ -/* ================================================================================ */ - -/* ------------------- Start of section using anonymous unions ------------------ */ -#if defined ( __CC_ARM ) - #pragma push -#pragma anon_unions -#elif defined(__ICCARM__) - #pragma language=extended -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) -/* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning 586 -#else - #warning Not supported compiler type -#endif - -/* ======================================================================== */ -/* ============ LLCC/DMAC v1 ============ */ -/* ======================================================================== */ - -typedef struct -{ - __IO uint32_t BUF_STATE; // +0x00 - __I uint32_t STATUS; // +0x00 - __IO uint32_t PTR_ADDR; // +0x08 - __IO uint32_t PTR_CTRL; // +0x0c - __O uint32_t NXT_ADDR; // +0x10 - __O uint32_t NXT_CTRL; // +0x14 - __I uint32_t rsvd_18[2]; // +0x18 - __IO uint32_t BUF0_ADDR; // +0x20 - __IO uint32_t BUF0_CTRL; // +0x24 - __I uint32_t rsvd_28[2]; // +0x28 - __IO uint32_t BUF1_ADDR; // +0x30 - __IO uint32_t BUF1_CTRL; // +0x34 - __IO uint32_t INTEN; // +0x38 - __IO uint32_t IRQSTATUS; // +0x3c -} DMAC_CHAN_TypeDef; - -// DMA buffer control state machine -#define DMAC_BUFSTATE_MT 0 -#define DMAC_BUFSTATE_A 1 -#define DMAC_BUFSTATE_AB 5 -#define DMAC_BUFSTATE_B 2 -#define DMAC_BUFSTATE_BA 6 -#define DMAC_BUFSTATE_FULL_IDX 2 - -// DMA Control structure MASKs -#define DMAC_CHAN_ADDR_MASK 0xfffffffc -#define DMAC_CHAN_COUNT_MASK 0x0000ffff -#define DMAC_CHAN_SIZE_MASK 0x00030000 -#define DMAC_CHAN_AFIX_MASK 0x00040000 -#define DMAC_CHAN_LOOP_MASK 0x00080000 -#define DMAC_CHAN_ATTR_MASK 0xfff00000 -#define DMAC_CHAN_COUNT_IDX_LO 0 -#define DMAC_CHAN_COUNT_IDX_HI 15 -#define DMAC_CHAN_SIZE_IDX_LO 16 -#define DMAC_CHAN_SIZE_IDX_HI 17 -#define DMAC_CHAN_AFIX_IDX 18 -#define DMAC_CHAN_LOOP_IDX 19 -#define DMAC_CHAN_TRIG_IDX_LO 20 -#define DMAC_CHAN_TRIG_IDX_HI 23 -#define DMAC_CHAN_ATTR_IDX_LO 24 -#define DMAC_CHAN_ATTR_IDX_HI 31 -#define DMAC_CHAN_IRQ_IDX 0 -#define DMAC_CHAN_ERR_IDX 1 - -typedef struct -{ - __I uint32_t ID_MAIN; // +0x0000 - __I uint32_t ID_REV; // +0x0004 - __I uint32_t rsvd_0008[30]; // +0x0008 - __IO uint32_t STANDBY_CTRL; // +0x0080 -} LLCC_CTL_TypeDef; - -typedef struct -{ - __I uint32_t CMD_DATA0; // +0x2000 - __I uint32_t CMD_DATA1; // +0x2004 - __I uint32_t rsvd_008[14]; // +0x2008 - __I uint32_t DMAH_DATA0; // +0x2040 - __I uint32_t DMAH_DATA1; // +0x2044 - __I uint32_t rsvd_048[6]; // +0x2048 - __I uint32_t DMAL_DATA0; // +0x2060 - __I uint32_t DMAL_DATA1; // +0x2064 - __I uint32_t rsvd_068[6]; // +0x2068 - __I uint32_t EVT_DATA0; // +0x2080 - __I uint32_t EVT_DATA1; // +0x2084 - __I uint32_t rsvd_088[14]; // +0x2088 - __I uint32_t INTERRUPT; // +0x20c0 - __IO uint32_t INTENMASK; // +0x20c4 - __IO uint32_t INTENMASK_SET; // +0x20c8 - __IO uint32_t INTENMASK_CLR; // +0x20cc - __I uint32_t REQUEST; // +0x20d0 - __I uint32_t rsvd_0d4[3]; // +0x20d4 - __I uint32_t XFERREQ; // +0x20e0 - __I uint32_t XFERACK; // +0x20e4 - __I uint32_t rsvd_0e8[6]; // +0x20e8 -} LLCC_RXD_TypeDef; - -typedef struct -{ - __IO uint32_t CMD_DATA0; // +0x3000 - __IO uint32_t CMD_DATA1; // +0x3004 - __I uint32_t rsvd_008[14]; // +0x3008 - __IO uint32_t DMAH_DATA0; // +0x3040 - __IO uint32_t DMAH_DATA1; // +0x3044 - __I uint32_t rsvd_048[6]; // +0x3048 - __IO uint32_t DMAL_DATA0; // +0x3060 - __IO uint32_t DMAL_DATA1; // +0x3064 - __I uint32_t rsvd_068[6]; // +0x3068 - __IO uint32_t EVT_DATA0; // +0x3080 - __IO uint32_t EVT_DATA1; // +0x3084 - __I uint32_t rsvd_088[14]; // +0x3088 - __I uint32_t INTERRUPT; // +0x30c0 - __IO uint32_t INTENMASK; // +0x30c4 - __IO uint32_t INTENMASK_SET; // +0x30c8 - __IO uint32_t INTENMASK_CLR; // +0x30cc - __I uint32_t REQUEST; // +0x30d0 - __I uint32_t ACTIVE; // +0x30d4 - __I uint32_t VCREADY; // +0x30d8 - __I uint32_t rsvd_0dc; // +0x30dc - __IO uint32_t XFERREQ; // +0x30e0 - __I uint32_t XFERACK; // +0x30e4 - __I uint32_t rsvd_0e8[6]; // +0x30e8 -} LLCC_TXD_TypeDef; - -// TX?RX buffer handshake/interrupt fields -#define LLCC_CMD0_MASK 0x01 -#define LLCC_CMD1_MASK 0x02 -#define LLCC_CMD_MASK 0x03 -#define LLCC_CMD_IRQ_MASK LLCC_CMD_MASK -#define LLCC_DMAH1_MASK 0x04 -#define LLCC_DMAH2_MASK 0x08 -#define LLCC_DMAH_MASK 0x0c -#define LLCC_DMAL1_MASK 0x10 -#define LLCC_DMAL2_MASK 0x20 -#define LLCC_DMAL_MASK 0x30 -#define LLCC_EVT0_MASK 0x40 -#define LLCC_EVT1_MASK 0x80 -#define LLCC_EVT_IRQ_MASK LLCC_EVT1_MASK -#define LLCC_EVT_MASK 0xc0 -#define LLCC_CMD0_IDX 0 -#define LLCC_CMD1_IDX 1 -#define LLCC_CMD_IDX LLCC_CMD1_IDX -#define LLCC_CMD_IRQ_IDX 1 -#define LLCC_DMAH1_IDX 2 -#define LLCC_DMAH2_IDX 3 -#define LLCC_DMAL1_IDX 4 -#define LLCC_DMAL2_IDX 5 -#define LLCC_EVT0_IDX 6 -#define LLCC_EVT1_IDX 7 -#define LLCC_EVT_IDX LLCC_EVT1_IDX - -/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ -typedef struct -{ - __IO uint32_t DATA; /* Offset: 0x000 (R/W) Data Register */ - __IO uint32_t STATE; /* Offset: 0x004 (R/W) Status Register */ - __IO uint32_t CTRL; /* Offset: 0x008 (R/W) Control Register */ - union { - __I uint32_t INTSTATUS; /* Offset: 0x00C (R/ ) Interrupt Status Register */ - __O uint32_t INTCLEAR; /* Offset: 0x00C ( /W) Interrupt Clear Register */ - }; - __IO uint32_t BAUDDIV; /* Offset: 0x010 (R/W) Baudrate Divider Register */ - -} CMSDK_UART_TypeDef; - -/* CMSDK_UART DATA Register Definitions */ - -#define CMSDK_UART_DATA_Pos 0 /* CMSDK_UART_DATA_Pos: DATA Position */ -#define CMSDK_UART_DATA_Msk (0xFFul << CMSDK_UART_DATA_Pos) /* CMSDK_UART DATA: DATA Mask */ - -#define CMSDK_UART_STATE_RXOR_Pos 3 /* CMSDK_UART STATE: RXOR Position */ -#define CMSDK_UART_STATE_RXOR_Msk (0x1ul << CMSDK_UART_STATE_RXOR_Pos) /* CMSDK_UART STATE: RXOR Mask */ - -#define CMSDK_UART_STATE_TXOR_Pos 2 /* CMSDK_UART STATE: TXOR Position */ -#define CMSDK_UART_STATE_TXOR_Msk (0x1ul << CMSDK_UART_STATE_TXOR_Pos) /* CMSDK_UART STATE: TXOR Mask */ - -#define CMSDK_UART_STATE_RXBF_Pos 1 /* CMSDK_UART STATE: RXBF Position */ -#define CMSDK_UART_STATE_RXBF_Msk (0x1ul << CMSDK_UART_STATE_RXBF_Pos) /* CMSDK_UART STATE: RXBF Mask */ - -#define CMSDK_UART_STATE_TXBF_Pos 0 /* CMSDK_UART STATE: TXBF Position */ -#define CMSDK_UART_STATE_TXBF_Msk (0x1ul << CMSDK_UART_STATE_TXBF_Pos ) /* CMSDK_UART STATE: TXBF Mask */ - -#define CMSDK_UART_CTRL_HSTM_Pos 6 /* CMSDK_UART CTRL: HSTM Position */ -#define CMSDK_UART_CTRL_HSTM_Msk (0x01ul << CMSDK_UART_CTRL_HSTM_Pos) /* CMSDK_UART CTRL: HSTM Mask */ - -#define CMSDK_UART_CTRL_RXORIRQEN_Pos 5 /* CMSDK_UART CTRL: RXORIRQEN Position */ -#define CMSDK_UART_CTRL_RXORIRQEN_Msk (0x01ul << CMSDK_UART_CTRL_RXORIRQEN_Pos) /* CMSDK_UART CTRL: RXORIRQEN Mask */ - -#define CMSDK_UART_CTRL_TXORIRQEN_Pos 4 /* CMSDK_UART CTRL: TXORIRQEN Position */ -#define CMSDK_UART_CTRL_TXORIRQEN_Msk (0x01ul << CMSDK_UART_CTRL_TXORIRQEN_Pos) /* CMSDK_UART CTRL: TXORIRQEN Mask */ - -#define CMSDK_UART_CTRL_RXIRQEN_Pos 3 /* CMSDK_UART CTRL: RXIRQEN Position */ -#define CMSDK_UART_CTRL_RXIRQEN_Msk (0x01ul << CMSDK_UART_CTRL_RXIRQEN_Pos) /* CMSDK_UART CTRL: RXIRQEN Mask */ - -#define CMSDK_UART_CTRL_TXIRQEN_Pos 2 /* CMSDK_UART CTRL: TXIRQEN Position */ -#define CMSDK_UART_CTRL_TXIRQEN_Msk (0x01ul << CMSDK_UART_CTRL_TXIRQEN_Pos) /* CMSDK_UART CTRL: TXIRQEN Mask */ - -#define CMSDK_UART_CTRL_RXEN_Pos 1 /* CMSDK_UART CTRL: RXEN Position */ -#define CMSDK_UART_CTRL_RXEN_Msk (0x01ul << CMSDK_UART_CTRL_RXEN_Pos) /* CMSDK_UART CTRL: RXEN Mask */ - -#define CMSDK_UART_CTRL_TXEN_Pos 0 /* CMSDK_UART CTRL: TXEN Position */ -#define CMSDK_UART_CTRL_TXEN_Msk (0x01ul << CMSDK_UART_CTRL_TXEN_Pos) /* CMSDK_UART CTRL: TXEN Mask */ - -#define CMSDK_UART_INTSTATUS_RXORIRQ_Pos 3 /* CMSDK_UART CTRL: RXORIRQ Position */ -#define CMSDK_UART_INTSTATUS_RXORIRQ_Msk (0x01ul << CMSDK_UART_INTSTATUS_RXORIRQ_Pos) /* CMSDK_UART CTRL: RXORIRQ Mask */ - -#define CMSDK_UART_INTSTATUS_TXORIRQ_Pos 2 /* CMSDK_UART CTRL: TXORIRQ Position */ -#define CMSDK_UART_INTSTATUS_TXORIRQ_Msk (0x01ul << CMSDK_UART_INTSTATUS_TXORIRQ_Pos) /* CMSDK_UART CTRL: TXORIRQ Mask */ - -#define CMSDK_UART_INTSTATUS_RXIRQ_Pos 1 /* CMSDK_UART CTRL: RXIRQ Position */ -#define CMSDK_UART_INTSTATUS_RXIRQ_Msk (0x01ul << CMSDK_UART_INTSTATUS_RXIRQ_Pos) /* CMSDK_UART CTRL: RXIRQ Mask */ - -#define CMSDK_UART_INTSTATUS_TXIRQ_Pos 0 /* CMSDK_UART CTRL: TXIRQ Position */ -#define CMSDK_UART_INTSTATUS_TXIRQ_Msk (0x01ul << CMSDK_UART_INTSTATUS_TXIRQ_Pos) /* CMSDK_UART CTRL: TXIRQ Mask */ - -#define CMSDK_UART_BAUDDIV_Pos 0 /* CMSDK_UART BAUDDIV: BAUDDIV Position */ -#define CMSDK_UART_BAUDDIV_Msk (0xFFFFFul << CMSDK_UART_BAUDDIV_Pos) /* CMSDK_UART BAUDDIV: BAUDDIV Mask */ - - -/*----------------------------- Timer (TIMER) -------------------------------*/ -typedef struct -{ - __IO uint32_t CTRL; /* Offset: 0x000 (R/W) Control Register */ - __IO uint32_t VALUE; /* Offset: 0x004 (R/W) Current Value Register */ - __IO uint32_t RELOAD; /* Offset: 0x008 (R/W) Reload Value Register */ - union { - __I uint32_t INTSTATUS; /* Offset: 0x00C (R/ ) Interrupt Status Register */ - __O uint32_t INTCLEAR; /* Offset: 0x00C ( /W) Interrupt Clear Register */ - }; - -} CMSDK_TIMER_TypeDef; - -/* CMSDK_TIMER CTRL Register Definitions */ - -#define CMSDK_TIMER_CTRL_IRQEN_Pos 3 /* CMSDK_TIMER CTRL: IRQEN Position */ -#define CMSDK_TIMER_CTRL_IRQEN_Msk (0x01ul << CMSDK_TIMER_CTRL_IRQEN_Pos) /* CMSDK_TIMER CTRL: IRQEN Mask */ - -#define CMSDK_TIMER_CTRL_SELEXTCLK_Pos 2 /* CMSDK_TIMER CTRL: SELEXTCLK Position */ -#define CMSDK_TIMER_CTRL_SELEXTCLK_Msk (0x01ul << CMSDK_TIMER_CTRL_SELEXTCLK_Pos) /* CMSDK_TIMER CTRL: SELEXTCLK Mask */ - -#define CMSDK_TIMER_CTRL_SELEXTEN_Pos 1 /* CMSDK_TIMER CTRL: SELEXTEN Position */ -#define CMSDK_TIMER_CTRL_SELEXTEN_Msk (0x01ul << CMSDK_TIMER_CTRL_SELEXTEN_Pos) /* CMSDK_TIMER CTRL: SELEXTEN Mask */ - -#define CMSDK_TIMER_CTRL_EN_Pos 0 /* CMSDK_TIMER CTRL: EN Position */ -#define CMSDK_TIMER_CTRL_EN_Msk (0x01ul << CMSDK_TIMER_CTRL_EN_Pos) /* CMSDK_TIMER CTRL: EN Mask */ - -#define CMSDK_TIMER_VAL_CURRENT_Pos 0 /* CMSDK_TIMER VALUE: CURRENT Position */ -#define CMSDK_TIMER_VAL_CURRENT_Msk (0xFFFFFFFFul << CMSDK_TIMER_VAL_CURRENT_Pos) /* CMSDK_TIMER VALUE: CURRENT Mask */ - -#define CMSDK_TIMER_RELOAD_VAL_Pos 0 /* CMSDK_TIMER RELOAD: RELOAD Position */ -#define CMSDK_TIMER_RELOAD_VAL_Msk (0xFFFFFFFFul << CMSDK_TIMER_RELOAD_VAL_Pos) /* CMSDK_TIMER RELOAD: RELOAD Mask */ - -#define CMSDK_TIMER_INTSTATUS_Pos 0 /* CMSDK_TIMER INTSTATUS: INTSTATUSPosition */ -#define CMSDK_TIMER_INTSTATUS_Msk (0x01ul << CMSDK_TIMER_INTSTATUS_Pos) /* CMSDK_TIMER INTSTATUS: INTSTATUSMask */ - -#define CMSDK_TIMER_INTCLEAR_Pos 0 /* CMSDK_TIMER INTCLEAR: INTCLEAR Position */ -#define CMSDK_TIMER_INTCLEAR_Msk (0x01ul << CMSDK_TIMER_INTCLEAR_Pos) /* CMSDK_TIMER INTCLEAR: INTCLEAR Mask */ - - -/*------------- Timer (TIM) --------------------------------------------------*/ -typedef struct -{ - __IO uint32_t Timer1Load; /* Offset: 0x000 (R/W) Timer 1 Load */ - __I uint32_t Timer1Value; /* Offset: 0x004 (R/ ) Timer 1 Counter Current Value */ - __IO uint32_t Timer1Control; /* Offset: 0x008 (R/W) Timer 1 Control */ - __O uint32_t Timer1IntClr; /* Offset: 0x00C ( /W) Timer 1 Interrupt Clear */ - __I uint32_t Timer1RIS; /* Offset: 0x010 (R/ ) Timer 1 Raw Interrupt Status */ - __I uint32_t Timer1MIS; /* Offset: 0x014 (R/ ) Timer 1 Masked Interrupt Status */ - __IO uint32_t Timer1BGLoad; /* Offset: 0x018 (R/W) Background Load Register */ - uint32_t RESERVED0; - __IO uint32_t Timer2Load; /* Offset: 0x020 (R/W) Timer 2 Load */ - __I uint32_t Timer2Value; /* Offset: 0x024 (R/ ) Timer 2 Counter Current Value */ - __IO uint32_t Timer2Control; /* Offset: 0x028 (R/W) Timer 2 Control */ - __O uint32_t Timer2IntClr; /* Offset: 0x02C ( /W) Timer 2 Interrupt Clear */ - __I uint32_t Timer2RIS; /* Offset: 0x030 (R/ ) Timer 2 Raw Interrupt Status */ - __I uint32_t Timer2MIS; /* Offset: 0x034 (R/ ) Timer 2 Masked Interrupt Status */ - __IO uint32_t Timer2BGLoad; /* Offset: 0x038 (R/W) Background Load Register */ - uint32_t RESERVED1[945]; - __IO uint32_t ITCR; /* Offset: 0xF00 (R/W) Integration Test Control Register */ - __O uint32_t ITOP; /* Offset: 0xF04 ( /W) Integration Test Output Set Register */ -} CMSDK_DUALTIMER_BOTH_TypeDef; - -#define CMSDK_DUALTIMER1_LOAD_Pos 0 /* CMSDK_DUALTIMER1 LOAD: LOAD Position */ -#define CMSDK_DUALTIMER1_LOAD_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER1_LOAD_Pos) /* CMSDK_DUALTIMER1 LOAD: LOAD Mask */ - -#define CMSDK_DUALTIMER1_VALUE_Pos 0 /* CMSDK_DUALTIMER1 VALUE: VALUE Position */ -#define CMSDK_DUALTIMER1_VALUE_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER1_VALUE_Pos) /* CMSDK_DUALTIMER1 VALUE: VALUE Mask */ - -#define CMSDK_DUALTIMER1_CTRL_EN_Pos 7 /* CMSDK_DUALTIMER1 CTRL_EN: CTRL Enable Position */ -#define CMSDK_DUALTIMER1_CTRL_EN_Msk (0x1ul << CMSDK_DUALTIMER1_CTRL_EN_Pos) /* CMSDK_DUALTIMER1 CTRL_EN: CTRL Enable Mask */ - -#define CMSDK_DUALTIMER1_CTRL_MODE_Pos 6 /* CMSDK_DUALTIMER1 CTRL_MODE: CTRL MODE Position */ -#define CMSDK_DUALTIMER1_CTRL_MODE_Msk (0x1ul << CMSDK_DUALTIMER1_CTRL_MODE_Pos) /* CMSDK_DUALTIMER1 CTRL_MODE: CTRL MODE Mask */ - -#define CMSDK_DUALTIMER1_CTRL_INTEN_Pos 5 /* CMSDK_DUALTIMER1 CTRL_INTEN: CTRL Int Enable Position */ -#define CMSDK_DUALTIMER1_CTRL_INTEN_Msk (0x1ul << CMSDK_DUALTIMER1_CTRL_INTEN_Pos) /* CMSDK_DUALTIMER1 CTRL_INTEN: CTRL Int Enable Mask */ - -#define CMSDK_DUALTIMER1_CTRL_PRESCALE_Pos 2 /* CMSDK_DUALTIMER1 CTRL_PRESCALE: CTRL PRESCALE Position */ -#define CMSDK_DUALTIMER1_CTRL_PRESCALE_Msk (0x3ul << CMSDK_DUALTIMER1_CTRL_PRESCALE_Pos) /* CMSDK_DUALTIMER1 CTRL_PRESCALE: CTRL PRESCALE Mask */ - -#define CMSDK_DUALTIMER1_CTRL_SIZE_Pos 1 /* CMSDK_DUALTIMER1 CTRL_SIZE: CTRL SIZE Position */ -#define CMSDK_DUALTIMER1_CTRL_SIZE_Msk (0x1ul << CMSDK_DUALTIMER1_CTRL_SIZE_Pos) /* CMSDK_DUALTIMER1 CTRL_SIZE: CTRL SIZE Mask */ - -#define CMSDK_DUALTIMER1_CTRL_ONESHOOT_Pos 0 /* CMSDK_DUALTIMER1 CTRL_ONESHOOT: CTRL ONESHOOT Position */ -#define CMSDK_DUALTIMER1_CTRL_ONESHOOT_Msk (0x1ul << CMSDK_DUALTIMER1_CTRL_ONESHOOT_Pos) /* CMSDK_DUALTIMER1 CTRL_ONESHOOT: CTRL ONESHOOT Mask */ - -#define CMSDK_DUALTIMER1_INTCLR_Pos 0 /* CMSDK_DUALTIMER1 INTCLR: INT Clear Position */ -#define CMSDK_DUALTIMER1_INTCLR_Msk (0x1ul << CMSDK_DUALTIMER1_INTCLR_Pos) /* CMSDK_DUALTIMER1 INTCLR: INT Clear Mask */ - -#define CMSDK_DUALTIMER1_RAWINTSTAT_Pos 0 /* CMSDK_DUALTIMER1 RAWINTSTAT: Raw Int Status Position */ -#define CMSDK_DUALTIMER1_RAWINTSTAT_Msk (0x1ul << CMSDK_DUALTIMER1_RAWINTSTAT_Pos) /* CMSDK_DUALTIMER1 RAWINTSTAT: Raw Int Status Mask */ - -#define CMSDK_DUALTIMER1_MASKINTSTAT_Pos 0 /* CMSDK_DUALTIMER1 MASKINTSTAT: Mask Int Status Position */ -#define CMSDK_DUALTIMER1_MASKINTSTAT_Msk (0x1ul << CMSDK_DUALTIMER1_MASKINTSTAT_Pos) /* CMSDK_DUALTIMER1 MASKINTSTAT: Mask Int Status Mask */ - -#define CMSDK_DUALTIMER1_BGLOAD_Pos 0 /* CMSDK_DUALTIMER1 BGLOAD: Background Load Position */ -#define CMSDK_DUALTIMER1_BGLOAD_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER1_BGLOAD_Pos) /* CMSDK_DUALTIMER1 BGLOAD: Background Load Mask */ - -#define CMSDK_DUALTIMER2_LOAD_Pos 0 /* CMSDK_DUALTIMER2 LOAD: LOAD Position */ -#define CMSDK_DUALTIMER2_LOAD_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER2_LOAD_Pos) /* CMSDK_DUALTIMER2 LOAD: LOAD Mask */ - -#define CMSDK_DUALTIMER2_VALUE_Pos 0 /* CMSDK_DUALTIMER2 VALUE: VALUE Position */ -#define CMSDK_DUALTIMER2_VALUE_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER2_VALUE_Pos) /* CMSDK_DUALTIMER2 VALUE: VALUE Mask */ - -#define CMSDK_DUALTIMER2_CTRL_EN_Pos 7 /* CMSDK_DUALTIMER2 CTRL_EN: CTRL Enable Position */ -#define CMSDK_DUALTIMER2_CTRL_EN_Msk (0x1ul << CMSDK_DUALTIMER2_CTRL_EN_Pos) /* CMSDK_DUALTIMER2 CTRL_EN: CTRL Enable Mask */ - -#define CMSDK_DUALTIMER2_CTRL_MODE_Pos 6 /* CMSDK_DUALTIMER2 CTRL_MODE: CTRL MODE Position */ -#define CMSDK_DUALTIMER2_CTRL_MODE_Msk (0x1ul << CMSDK_DUALTIMER2_CTRL_MODE_Pos) /* CMSDK_DUALTIMER2 CTRL_MODE: CTRL MODE Mask */ - -#define CMSDK_DUALTIMER2_CTRL_INTEN_Pos 5 /* CMSDK_DUALTIMER2 CTRL_INTEN: CTRL Int Enable Position */ -#define CMSDK_DUALTIMER2_CTRL_INTEN_Msk (0x1ul << CMSDK_DUALTIMER2_CTRL_INTEN_Pos) /* CMSDK_DUALTIMER2 CTRL_INTEN: CTRL Int Enable Mask */ - -#define CMSDK_DUALTIMER2_CTRL_PRESCALE_Pos 2 /* CMSDK_DUALTIMER2 CTRL_PRESCALE: CTRL PRESCALE Position */ -#define CMSDK_DUALTIMER2_CTRL_PRESCALE_Msk (0x3ul << CMSDK_DUALTIMER2_CTRL_PRESCALE_Pos) /* CMSDK_DUALTIMER2 CTRL_PRESCALE: CTRL PRESCALE Mask */ - -#define CMSDK_DUALTIMER2_CTRL_SIZE_Pos 1 /* CMSDK_DUALTIMER2 CTRL_SIZE: CTRL SIZE Position */ -#define CMSDK_DUALTIMER2_CTRL_SIZE_Msk (0x1ul << CMSDK_DUALTIMER2_CTRL_SIZE_Pos) /* CMSDK_DUALTIMER2 CTRL_SIZE: CTRL SIZE Mask */ - -#define CMSDK_DUALTIMER2_CTRL_ONESHOOT_Pos 0 /* CMSDK_DUALTIMER2 CTRL_ONESHOOT: CTRL ONESHOOT Position */ -#define CMSDK_DUALTIMER2_CTRL_ONESHOOT_Msk (0x1ul << CMSDK_DUALTIMER2_CTRL_ONESHOOT_Pos) /* CMSDK_DUALTIMER2 CTRL_ONESHOOT: CTRL ONESHOOT Mask */ - -#define CMSDK_DUALTIMER2_INTCLR_Pos 0 /* CMSDK_DUALTIMER2 INTCLR: INT Clear Position */ -#define CMSDK_DUALTIMER2_INTCLR_Msk (0x1ul << CMSDK_DUALTIMER2_INTCLR_Pos) /* CMSDK_DUALTIMER2 INTCLR: INT Clear Mask */ - -#define CMSDK_DUALTIMER2_RAWINTSTAT_Pos 0 /* CMSDK_DUALTIMER2 RAWINTSTAT: Raw Int Status Position */ -#define CMSDK_DUALTIMER2_RAWINTSTAT_Msk (0x1ul << CMSDK_DUALTIMER2_RAWINTSTAT_Pos) /* CMSDK_DUALTIMER2 RAWINTSTAT: Raw Int Status Mask */ - -#define CMSDK_DUALTIMER2_MASKINTSTAT_Pos 0 /* CMSDK_DUALTIMER2 MASKINTSTAT: Mask Int Status Position */ -#define CMSDK_DUALTIMER2_MASKINTSTAT_Msk (0x1ul << CMSDK_DUALTIMER2_MASKINTSTAT_Pos) /* CMSDK_DUALTIMER2 MASKINTSTAT: Mask Int Status Mask */ - -#define CMSDK_DUALTIMER2_BGLOAD_Pos 0 /* CMSDK_DUALTIMER2 BGLOAD: Background Load Position */ -#define CMSDK_DUALTIMER2_BGLOAD_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER2_BGLOAD_Pos) /* CMSDK_DUALTIMER2 BGLOAD: Background Load Mask */ - - -typedef struct -{ - __IO uint32_t TimerLoad; /* Offset: 0x000 (R/W) Timer Load */ - __I uint32_t TimerValue; /* Offset: 0x000 (R/W) Timer Counter Current Value */ - __IO uint32_t TimerControl; /* Offset: 0x000 (R/W) Timer Control */ - __O uint32_t TimerIntClr; /* Offset: 0x000 (R/W) Timer Interrupt Clear */ - __I uint32_t TimerRIS; /* Offset: 0x000 (R/W) Timer Raw Interrupt Status */ - __I uint32_t TimerMIS; /* Offset: 0x000 (R/W) Timer Masked Interrupt Status */ - __IO uint32_t TimerBGLoad; /* Offset: 0x000 (R/W) Background Load Register */ -} CMSDK_DUALTIMER_SINGLE_TypeDef; - -#define CMSDK_DUALTIMER_LOAD_Pos 0 /* CMSDK_DUALTIMER LOAD: LOAD Position */ -#define CMSDK_DUALTIMER_LOAD_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER_LOAD_Pos) /* CMSDK_DUALTIMER LOAD: LOAD Mask */ - -#define CMSDK_DUALTIMER_VALUE_Pos 0 /* CMSDK_DUALTIMER VALUE: VALUE Position */ -#define CMSDK_DUALTIMER_VALUE_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER_VALUE_Pos) /* CMSDK_DUALTIMER VALUE: VALUE Mask */ - -#define CMSDK_DUALTIMER_CTRL_EN_Pos 7 /* CMSDK_DUALTIMER CTRL_EN: CTRL Enable Position */ -#define CMSDK_DUALTIMER_CTRL_EN_Msk (0x1ul << CMSDK_DUALTIMER_CTRL_EN_Pos) /* CMSDK_DUALTIMER CTRL_EN: CTRL Enable Mask */ - -#define CMSDK_DUALTIMER_CTRL_MODE_Pos 6 /* CMSDK_DUALTIMER CTRL_MODE: CTRL MODE Position */ -#define CMSDK_DUALTIMER_CTRL_MODE_Msk (0x1ul << CMSDK_DUALTIMER_CTRL_MODE_Pos) /* CMSDK_DUALTIMER CTRL_MODE: CTRL MODE Mask */ - -#define CMSDK_DUALTIMER_CTRL_INTEN_Pos 5 /* CMSDK_DUALTIMER CTRL_INTEN: CTRL Int Enable Position */ -#define CMSDK_DUALTIMER_CTRL_INTEN_Msk (0x1ul << CMSDK_DUALTIMER_CTRL_INTEN_Pos) /* CMSDK_DUALTIMER CTRL_INTEN: CTRL Int Enable Mask */ - -#define CMSDK_DUALTIMER_CTRL_PRESCALE_Pos 2 /* CMSDK_DUALTIMER CTRL_PRESCALE: CTRL PRESCALE Position */ -#define CMSDK_DUALTIMER_CTRL_PRESCALE_Msk (0x3ul << CMSDK_DUALTIMER_CTRL_PRESCALE_Pos) /* CMSDK_DUALTIMER CTRL_PRESCALE: CTRL PRESCALE Mask */ - -#define CMSDK_DUALTIMER_CTRL_SIZE_Pos 1 /* CMSDK_DUALTIMER CTRL_SIZE: CTRL SIZE Position */ -#define CMSDK_DUALTIMER_CTRL_SIZE_Msk (0x1ul << CMSDK_DUALTIMER_CTRL_SIZE_Pos) /* CMSDK_DUALTIMER CTRL_SIZE: CTRL SIZE Mask */ - -#define CMSDK_DUALTIMER_CTRL_ONESHOOT_Pos 0 /* CMSDK_DUALTIMER CTRL_ONESHOOT: CTRL ONESHOOT Position */ -#define CMSDK_DUALTIMER_CTRL_ONESHOOT_Msk (0x1ul << CMSDK_DUALTIMER_CTRL_ONESHOOT_Pos) /* CMSDK_DUALTIMER CTRL_ONESHOOT: CTRL ONESHOOT Mask */ - -#define CMSDK_DUALTIMER_INTCLR_Pos 0 /* CMSDK_DUALTIMER INTCLR: INT Clear Position */ -#define CMSDK_DUALTIMER_INTCLR_Msk (0x1ul << CMSDK_DUALTIMER_INTCLR_Pos) /* CMSDK_DUALTIMER INTCLR: INT Clear Mask */ - -#define CMSDK_DUALTIMER_RAWINTSTAT_Pos 0 /* CMSDK_DUALTIMER RAWINTSTAT: Raw Int Status Position */ -#define CMSDK_DUALTIMER_RAWINTSTAT_Msk (0x1ul << CMSDK_DUALTIMER_RAWINTSTAT_Pos) /* CMSDK_DUALTIMER RAWINTSTAT: Raw Int Status Mask */ - -#define CMSDK_DUALTIMER_MASKINTSTAT_Pos 0 /* CMSDK_DUALTIMER MASKINTSTAT: Mask Int Status Position */ -#define CMSDK_DUALTIMER_MASKINTSTAT_Msk (0x1ul << CMSDK_DUALTIMER_MASKINTSTAT_Pos) /* CMSDK_DUALTIMER MASKINTSTAT: Mask Int Status Mask */ - -#define CMSDK_DUALTIMER_BGLOAD_Pos 0 /* CMSDK_DUALTIMER BGLOAD: Background Load Position */ -#define CMSDK_DUALTIMER_BGLOAD_Msk (0xFFFFFFFFul << CMSDK_DUALTIMER_BGLOAD_Pos) /* CMSDK_DUALTIMER BGLOAD: Background Load Mask */ - - -/*-------------------- General Purpose Input Output (GPIO) -------------------*/ -typedef struct -{ - __IO uint32_t DATA; /* Offset: 0x000 (R/W) DATA Register */ - __IO uint32_t DATAOUT; /* Offset: 0x004 (R/W) Data Output Latch Register */ - uint32_t RESERVED0[2]; - __IO uint32_t OUTENABLESET; /* Offset: 0x010 (R/W) Output Enable Set Register */ - __IO uint32_t OUTENABLECLR; /* Offset: 0x014 (R/W) Output Enable Clear Register */ - __IO uint32_t ALTFUNCSET; /* Offset: 0x018 (R/W) Alternate Function Set Register */ - __IO uint32_t ALTFUNCCLR; /* Offset: 0x01C (R/W) Alternate Function Clear Register */ - __IO uint32_t INTENSET; /* Offset: 0x020 (R/W) Interrupt Enable Set Register */ - __IO uint32_t INTENCLR; /* Offset: 0x024 (R/W) Interrupt Enable Clear Register */ - __IO uint32_t INTTYPESET; /* Offset: 0x028 (R/W) Interrupt Type Set Register */ - __IO uint32_t INTTYPECLR; /* Offset: 0x02C (R/W) Interrupt Type Clear Register */ - __IO uint32_t INTPOLSET; /* Offset: 0x030 (R/W) Interrupt Polarity Set Register */ - __IO uint32_t INTPOLCLR; /* Offset: 0x034 (R/W) Interrupt Polarity Clear Register */ - union { - __I uint32_t INTSTATUS; /* Offset: 0x038 (R/ ) Interrupt Status Register */ - __O uint32_t INTCLEAR; /* Offset: 0x038 ( /W) Interrupt Clear Register */ - }; - uint32_t RESERVED1[241]; - __IO uint32_t LB_MASKED[256]; /* Offset: 0x400 - 0x7FC Lower byte Masked Access Register (R/W) */ - __IO uint32_t UB_MASKED[256]; /* Offset: 0x800 - 0xBFC Upper byte Masked Access Register (R/W) */ -} CMSDK_GPIO_TypeDef; - -#define CMSDK_GPIO_DATA_Pos 0 /* CMSDK_GPIO DATA: DATA Position */ -#define CMSDK_GPIO_DATA_Msk (0xFFFFul << CMSDK_GPIO_DATA_Pos) /* CMSDK_GPIO DATA: DATA Mask */ - -#define CMSDK_GPIO_DATAOUT_Pos 0 /* CMSDK_GPIO DATAOUT: DATAOUT Position */ -#define CMSDK_GPIO_DATAOUT_Msk (0xFFFFul << CMSDK_GPIO_DATAOUT_Pos) /* CMSDK_GPIO DATAOUT: DATAOUT Mask */ - -#define CMSDK_GPIO_OUTENSET_Pos 0 /* CMSDK_GPIO OUTEN: OUTEN Position */ -#define CMSDK_GPIO_OUTENSET_Msk (0xFFFFul << CMSDK_GPIO_OUTEN_Pos) /* CMSDK_GPIO OUTEN: OUTEN Mask */ - -#define CMSDK_GPIO_OUTENCLR_Pos 0 /* CMSDK_GPIO OUTEN: OUTEN Position */ -#define CMSDK_GPIO_OUTENCLR_Msk (0xFFFFul << CMSDK_GPIO_OUTEN_Pos) /* CMSDK_GPIO OUTEN: OUTEN Mask */ - -#define CMSDK_GPIO_ALTFUNCSET_Pos 0 /* CMSDK_GPIO ALTFUNC: ALTFUNC Position */ -#define CMSDK_GPIO_ALTFUNCSET_Msk (0xFFFFul << CMSDK_GPIO_ALTFUNC_Pos) /* CMSDK_GPIO ALTFUNC: ALTFUNC Mask */ - -#define CMSDK_GPIO_ALTFUNCCLR_Pos 0 /* CMSDK_GPIO ALTFUNC: ALTFUNC Position */ -#define CMSDK_GPIO_ALTFUNCCLR_Msk (0xFFFFul << CMSDK_GPIO_ALTFUNC_Pos) /* CMSDK_GPIO ALTFUNC: ALTFUNC Mask */ - -#define CMSDK_GPIO_INTENSET_Pos 0 /* CMSDK_GPIO INTEN: INTEN Position */ -#define CMSDK_GPIO_INTENSET_Msk (0xFFFFul << CMSDK_GPIO_INTEN_Pos) /* CMSDK_GPIO INTEN: INTEN Mask */ - -#define CMSDK_GPIO_INTENCLR_Pos 0 /* CMSDK_GPIO INTEN: INTEN Position */ -#define CMSDK_GPIO_INTENCLR_Msk (0xFFFFul << CMSDK_GPIO_INTEN_Pos) /* CMSDK_GPIO INTEN: INTEN Mask */ - -#define CMSDK_GPIO_INTTYPESET_Pos 0 /* CMSDK_GPIO INTTYPE: INTTYPE Position */ -#define CMSDK_GPIO_INTTYPESET_Msk (0xFFFFul << CMSDK_GPIO_INTTYPE_Pos) /* CMSDK_GPIO INTTYPE: INTTYPE Mask */ - -#define CMSDK_GPIO_INTTYPECLR_Pos 0 /* CMSDK_GPIO INTTYPE: INTTYPE Position */ -#define CMSDK_GPIO_INTTYPECLR_Msk (0xFFFFul << CMSDK_GPIO_INTTYPE_Pos) /* CMSDK_GPIO INTTYPE: INTTYPE Mask */ - -#define CMSDK_GPIO_INTPOLSET_Pos 0 /* CMSDK_GPIO INTPOL: INTPOL Position */ -#define CMSDK_GPIO_INTPOLSET_Msk (0xFFFFul << CMSDK_GPIO_INTPOL_Pos) /* CMSDK_GPIO INTPOL: INTPOL Mask */ - -#define CMSDK_GPIO_INTPOLCLR_Pos 0 /* CMSDK_GPIO INTPOL: INTPOL Position */ -#define CMSDK_GPIO_INTPOLCLR_Msk (0xFFFFul << CMSDK_GPIO_INTPOL_Pos) /* CMSDK_GPIO INTPOL: INTPOL Mask */ - -#define CMSDK_GPIO_INTSTATUS_Pos 0 /* CMSDK_GPIO INTSTATUS: INTSTATUS Position */ -#define CMSDK_GPIO_INTSTATUS_Msk (0xFFul << CMSDK_GPIO_INTSTATUS_Pos) /* CMSDK_GPIO INTSTATUS: INTSTATUS Mask */ - -#define CMSDK_GPIO_INTCLEAR_Pos 0 /* CMSDK_GPIO INTCLEAR: INTCLEAR Position */ -#define CMSDK_GPIO_INTCLEAR_Msk (0xFFul << CMSDK_GPIO_INTCLEAR_Pos) /* CMSDK_GPIO INTCLEAR: INTCLEAR Mask */ - -#define CMSDK_GPIO_MASKLOWBYTE_Pos 0 /* CMSDK_GPIO MASKLOWBYTE: MASKLOWBYTE Position */ -#define CMSDK_GPIO_MASKLOWBYTE_Msk (0x00FFul << CMSDK_GPIO_MASKLOWBYTE_Pos) /* CMSDK_GPIO MASKLOWBYTE: MASKLOWBYTE Mask */ - -#define CMSDK_GPIO_MASKHIGHBYTE_Pos 0 /* CMSDK_GPIO MASKHIGHBYTE: MASKHIGHBYTE Position */ -#define CMSDK_GPIO_MASKHIGHBYTE_Msk (0xFF00ul << CMSDK_GPIO_MASKHIGHBYTE_Pos) /* CMSDK_GPIO MASKHIGHBYTE: MASKHIGHBYTE Mask */ - - -/*------------- System Control (SYSCON) --------------------------------------*/ -typedef struct -{ - __IO uint32_t REMAP; /* Offset: 0x000 (R/W) Remap Control Register */ - __IO uint32_t PMUCTRL; /* Offset: 0x004 (R/W) PMU Control Register */ - __IO uint32_t RESETOP; /* Offset: 0x008 (R/W) Reset Option Register */ - __IO uint32_t EMICTRL; /* Offset: 0x00C (R/W) EMI Control Register */ - __IO uint32_t RSTINFO; /* Offset: 0x010 (R/W) Reset Information Register */ - uint32_t RESERVED0[3]; - __IO uint32_t AHBPER0SET; /* Offset: 0x020 (R/W)AHB peripheral access control set */ - __IO uint32_t AHBPER0CLR; /* Offset: 0x024 (R/W)AHB peripheral access control clear */ - uint32_t RESERVED1[2]; - __IO uint32_t APBPER0SET; /* Offset: 0x030 (R/W)APB peripheral access control set */ - __IO uint32_t APBPER0CLR; /* Offset: 0x034 (R/W)APB peripheral access control clear */ - uint32_t RESERVED2[2]; - __IO uint32_t MAINCLK; /* Offset: 0x040 (R/W) Main Clock Control Register */ - __IO uint32_t AUXCLK; /* Offset: 0x044 (R/W) Auxiliary / RTC Control Register */ - __IO uint32_t PLLCTRL; /* Offset: 0x048 (R/W) PLL Control Register */ - __IO uint32_t PLLSTATUS; /* Offset: 0x04C (R/W) PLL Status Register */ - __IO uint32_t SLEEPCFG; /* Offset: 0x050 (R/W) Sleep Control Register */ - __IO uint32_t FLASHAUXCFG; /* Offset: 0x054 (R/W) Flash auxiliary settings Control Register */ - uint32_t RESERVED3[10]; - __IO uint32_t AHBCLKCFG0SET; /* Offset: 0x080 (R/W) AHB Peripheral Clock set in Active state */ - __IO uint32_t AHBCLKCFG0CLR; /* Offset: 0x084 (R/W) AHB Peripheral Clock clear in Active state */ - __IO uint32_t AHBCLKCFG1SET; /* Offset: 0x088 (R/W) AHB Peripheral Clock set in Sleep state */ - __IO uint32_t AHBCLKCFG1CLR; /* Offset: 0x08C (R/W) AHB Peripheral Clock clear in Sleep state */ - __IO uint32_t AHBCLKCFG2SET; /* Offset: 0x090 (R/W) AHB Peripheral Clock set in Deep Sleep state */ - __IO uint32_t AHBCLKCFG2CLR; /* Offset: 0x094 (R/W) AHB Peripheral Clock clear in Deep Sleep state */ - uint32_t RESERVED4[2]; - __IO uint32_t APBCLKCFG0SET; /* Offset: 0x0A0 (R/W) APB Peripheral Clock set in Active state */ - __IO uint32_t APBCLKCFG0CLR; /* Offset: 0x0A4 (R/W) APB Peripheral Clock clear in Active state */ - __IO uint32_t APBCLKCFG1SET; /* Offset: 0x0A8 (R/W) APB Peripheral Clock set in Sleep state */ - __IO uint32_t APBCLKCFG1CLR; /* Offset: 0x0AC (R/W) APB Peripheral Clock clear in Sleep state */ - __IO uint32_t APBCLKCFG2SET; /* Offset: 0x0B0 (R/W) APB Peripheral Clock set in Deep Sleep state */ - __IO uint32_t APBCLKCFG2CLR; /* Offset: 0x0B4 (R/W) APB Peripheral Clock clear in Deep Sleep state */ - uint32_t RESERVED5[2]; - __IO uint32_t AHBPRST0SET; /* Offset: 0x0C0 (R/W) AHB Peripheral reset select set */ - __IO uint32_t AHBPRST0CLR; /* Offset: 0x0C4 (R/W) AHB Peripheral reset select clear */ - __IO uint32_t APBPRST0SET; /* Offset: 0x0C8 (R/W) APB Peripheral reset select set */ - __IO uint32_t APBPRST0CLR; /* Offset: 0x0CC (R/W) APB Peripheral reset select clear */ - __IO uint32_t PWRDNCFG0SET; /* Offset: 0x0D0 (R/W) AHB Power down sleep wakeup source set */ - __IO uint32_t PWRDNCFG0CLR; /* Offset: 0x0D4 (R/W) AHB Power down sleep wakeup source clear */ - __IO uint32_t PWRDNCFG1SET; /* Offset: 0x0D8 (R/W) APB Power down sleep wakeup source set */ - __IO uint32_t PWRDNCFG1CLR; /* Offset: 0x0DC (R/W) APB Power down sleep wakeup source clear */ - __O uint32_t RTCRESET; /* Offset: 0x0E0 ( /W) RTC reset */ - __IO uint32_t EVENTCFG; /* Offset: 0x0E4 (R/W) Event interface Control Register */ - uint32_t RESERVED6[2]; - __IO uint32_t PWROVRIDE0; /* Offset: 0x0F0 (R/W) SRAM Power control overide */ - __IO uint32_t PWROVRIDE1; /* Offset: 0x0F4 (R/W) Embedded Flash Power control overide */ - __I uint32_t MEMORYSTATUS; /* Offset: 0x0F8 (R/ ) Memory Status Register */ - uint32_t RESERVED7[1]; - __IO uint32_t GPIOPADCFG0; /* Offset: 0x100 (R/W) IO pad settings */ - __IO uint32_t GPIOPADCFG1; /* Offset: 0x104 (R/W) IO pad settings */ - __IO uint32_t TESTMODECFG; /* Offset: 0x108 (R/W) Testmode boot bypass */ -} CMSDK_SYSCON_TypeDef; - -#define CMSDK_SYSCON_REMAP_Pos 0 -#define CMSDK_SYSCON_REMAP_Msk (0x01ul << CMSDK_SYSCON_REMAP_Pos) /* CMSDK_SYSCON MEME_CTRL: REMAP Mask */ - -#define CMSDK_SYSCON_PMUCTRL_EN_Pos 0 -#define CMSDK_SYSCON_PMUCTRL_EN_Msk (0x01ul << CMSDK_SYSCON_PMUCTRL_EN_Pos) /* CMSDK_SYSCON PMUCTRL: PMUCTRL ENABLE Mask */ - -#define CMSDK_SYSCON_LOCKUPRST_RESETOP_Pos 0 -#define CMSDK_SYSCON_LOCKUPRST_RESETOP_Msk (0x01ul << CMSDK_SYSCON_LOCKUPRST_RESETOP_Pos) /* CMSDK_SYSCON SYS_CTRL: LOCKUP RESET ENABLE Mask */ - -#define CMSDK_SYSCON_EMICTRL_SIZE_Pos 24 -#define CMSDK_SYSCON_EMICTRL_SIZE_Msk (0x00001ul << CMSDK_SYSCON_EMICTRL_SIZE_Pos) /* CMSDK_SYSCON EMICTRL: SIZE Mask */ - -#define CMSDK_SYSCON_EMICTRL_TACYC_Pos 16 -#define CMSDK_SYSCON_EMICTRL_TACYC_Msk (0x00007ul << CMSDK_SYSCON_EMICTRL_TACYC_Pos) /* CMSDK_SYSCON EMICTRL: TURNAROUNDCYCLE Mask */ - -#define CMSDK_SYSCON_EMICTRL_WCYC_Pos 8 -#define CMSDK_SYSCON_EMICTRL_WCYC_Msk (0x00003ul << CMSDK_SYSCON_EMICTRL_WCYC_Pos) /* CMSDK_SYSCON EMICTRL: WRITECYCLE Mask */ - -#define CMSDK_SYSCON_EMICTRL_RCYC_Pos 0 -#define CMSDK_SYSCON_EMICTRL_RCYC_Msk (0x00007ul << CMSDK_SYSCON_EMICTRL_RCYC_Pos) /* CMSDK_SYSCON EMICTRL: READCYCLE Mask */ - -#define CMSDK_SYSCON_RSTINFO_SYSRESETREQ_Pos 0 -#define CMSDK_SYSCON_RSTINFO_SYSRESETREQ_Msk (0x00001ul << CMSDK_SYSCON_RSTINFO_SYSRESETREQ_Pos) /* CMSDK_SYSCON RSTINFO: SYSRESETREQ Mask */ - -#define CMSDK_SYSCON_RSTINFO_WDOGRESETREQ_Pos 1 -#define CMSDK_SYSCON_RSTINFO_WDOGRESETREQ_Msk (0x00001ul << CMSDK_SYSCON_RSTINFO_WDOGRESETREQ_Pos) /* CMSDK_SYSCON RSTINFO: WDOGRESETREQ Mask */ - -#define CMSDK_SYSCON_RSTINFO_LOCKUPRESET_Pos 2 -#define CMSDK_SYSCON_RSTINFO_LOCKUPRESET_Msk (0x00001ul << CMSDK_SYSCON_RSTINFO_LOCKUPRESET_Pos) /* CMSDK_SYSCON RSTINFO: LOCKUPRESET Mask */ - - -/*------------- PL230 uDMA (PL230) --------------------------------------*/ -typedef struct -{ - __I uint32_t DMA_STATUS; /* Offset: 0x000 (R/W) DMA status Register */ - __O uint32_t DMA_CFG; /* Offset: 0x004 ( /W) DMA configuration Register */ - __IO uint32_t CTRL_BASE_PTR; /* Offset: 0x008 (R/W) Channel Control Data Base Pointer Register */ - __I uint32_t ALT_CTRL_BASE_PTR; /* Offset: 0x00C (R/ ) Channel Alternate Control Data Base Pointer Register */ - __I uint32_t DMA_WAITONREQ_STATUS; /* Offset: 0x010 (R/ ) Channel Wait On Request Status Register */ - __O uint32_t CHNL_SW_REQUEST; /* Offset: 0x014 ( /W) Channel Software Request Register */ - __IO uint32_t CHNL_USEBURST_SET; /* Offset: 0x018 (R/W) Channel UseBurst Set Register */ - __O uint32_t CHNL_USEBURST_CLR; /* Offset: 0x01C ( /W) Channel UseBurst Clear Register */ - __IO uint32_t CHNL_REQ_MASK_SET; /* Offset: 0x020 (R/W) Channel Request Mask Set Register */ - __O uint32_t CHNL_REQ_MASK_CLR; /* Offset: 0x024 ( /W) Channel Request Mask Clear Register */ - __IO uint32_t CHNL_ENABLE_SET; /* Offset: 0x028 (R/W) Channel Enable Set Register */ - __O uint32_t CHNL_ENABLE_CLR; /* Offset: 0x02C ( /W) Channel Enable Clear Register */ - __IO uint32_t CHNL_PRI_ALT_SET; /* Offset: 0x030 (R/W) Channel Primary-Alterante Set Register */ - __O uint32_t CHNL_PRI_ALT_CLR; /* Offset: 0x034 ( /W) Channel Primary-Alterante Clear Register */ - __IO uint32_t CHNL_PRIORITY_SET; /* Offset: 0x038 (R/W) Channel Priority Set Register */ - __O uint32_t CHNL_PRIORITY_CLR; /* Offset: 0x03C ( /W) Channel Priority Clear Register */ - uint32_t RESERVED0[3]; - __IO uint32_t ERR_CLR; /* Offset: 0x04C Bus Error Clear Register (R/W) */ - -} CMSDK_PL230_TypeDef; - -#define PL230_DMA_CHNL_BITS 0 - -#define CMSDK_PL230_DMA_STATUS_MSTREN_Pos 0 /* CMSDK_PL230 DMA STATUS: MSTREN Position */ -#define CMSDK_PL230_DMA_STATUS_MSTREN_Msk (0x00000001ul << CMSDK_PL230_DMA_STATUS_MSTREN_Pos) /* CMSDK_PL230 DMA STATUS: MSTREN Mask */ - -#define CMSDK_PL230_DMA_STATUS_STATE_Pos 0 /* CMSDK_PL230 DMA STATUS: STATE Position */ -#define CMSDK_PL230_DMA_STATUS_STATE_Msk (0x0000000Ful << CMSDK_PL230_DMA_STATUS_STATE_Pos) /* CMSDK_PL230 DMA STATUS: STATE Mask */ - -#define CMSDK_PL230_DMA_STATUS_CHNLS_MINUS1_Pos 0 /* CMSDK_PL230 DMA STATUS: CHNLS_MINUS1 Position */ -#define CMSDK_PL230_DMA_STATUS_CHNLS_MINUS1_Msk (0x0000001Ful << CMSDK_PL230_DMA_STATUS_CHNLS_MINUS1_Pos) /* CMSDK_PL230 DMA STATUS: CHNLS_MINUS1 Mask */ - -#define CMSDK_PL230_DMA_STATUS_TEST_STATUS_Pos 0 /* CMSDK_PL230 DMA STATUS: TEST_STATUS Position */ -#define CMSDK_PL230_DMA_STATUS_TEST_STATUS_Msk (0x00000001ul << CMSDK_PL230_DMA_STATUS_TEST_STATUS_Pos) /* CMSDK_PL230 DMA STATUS: TEST_STATUS Mask */ - -#define CMSDK_PL230_DMA_CFG_MSTREN_Pos 0 /* CMSDK_PL230 DMA CFG: MSTREN Position */ -#define CMSDK_PL230_DMA_CFG_MSTREN_Msk (0x00000001ul << CMSDK_PL230_DMA_CFG_MSTREN_Pos) /* CMSDK_PL230 DMA CFG: MSTREN Mask */ - -#define CMSDK_PL230_DMA_CFG_CPCCACHE_Pos 2 /* CMSDK_PL230 DMA CFG: CPCCACHE Position */ -#define CMSDK_PL230_DMA_CFG_CPCCACHE_Msk (0x00000001ul << CMSDK_PL230_DMA_CFG_CPCCACHE_Pos) /* CMSDK_PL230 DMA CFG: CPCCACHE Mask */ - -#define CMSDK_PL230_DMA_CFG_CPCBUF_Pos 1 /* CMSDK_PL230 DMA CFG: CPCBUF Position */ -#define CMSDK_PL230_DMA_CFG_CPCBUF_Msk (0x00000001ul << CMSDK_PL230_DMA_CFG_CPCBUF_Pos) /* CMSDK_PL230 DMA CFG: CPCBUF Mask */ - -#define CMSDK_PL230_DMA_CFG_CPCPRIV_Pos 0 /* CMSDK_PL230 DMA CFG: CPCPRIV Position */ -#define CMSDK_PL230_DMA_CFG_CPCPRIV_Msk (0x00000001ul << CMSDK_PL230_DMA_CFG_CPCPRIV_Pos) /* CMSDK_PL230 DMA CFG: CPCPRIV Mask */ - -#define CMSDK_PL230_CTRL_BASE_PTR_Pos PL230_DMA_CHNL_BITS + 5 /* CMSDK_PL230 STATUS: BASE_PTR Position */ -#define CMSDK_PL230_CTRL_BASE_PTR_Msk (0x0FFFFFFFul << CMSDK_PL230_CTRL_BASE_PTR_Pos) /* CMSDK_PL230 STATUS: BASE_PTR Mask */ - -#define CMSDK_PL230_ALT_CTRL_BASE_PTR_Pos 0 /* CMSDK_PL230 STATUS: MSTREN Position */ -#define CMSDK_PL230_ALT_CTRL_BASE_PTR_Msk (0xFFFFFFFFul << CMSDK_PL230_ALT_CTRL_BASE_PTR_Pos) /* CMSDK_PL230 STATUS: MSTREN Mask */ - -#define CMSDK_PL230_DMA_WAITONREQ_STATUS_Pos 0 /* CMSDK_PL230 DMA_WAITONREQ_STATUS: DMA_WAITONREQ_STATUS Position */ -#define CMSDK_PL230_DMA_WAITONREQ_STATUS_Msk (0xFFFFFFFFul << CMSDK_PL230_DMA_WAITONREQ_STATUS_Pos) /* CMSDK_PL230 DMA_WAITONREQ_STATUS: DMA_WAITONREQ_STATUS Mask */ - -#define CMSDK_PL230_CHNL_SW_REQUEST_Pos 0 /* CMSDK_PL230 CHNL_SW_REQUEST: CHNL_SW_REQUEST Position */ -#define CMSDK_PL230_CHNL_SW_REQUEST_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_SW_REQUEST_Pos) /* CMSDK_PL230 CHNL_SW_REQUEST: CHNL_SW_REQUEST Mask */ - -#define CMSDK_PL230_CHNL_USEBURST_SET_Pos 0 /* CMSDK_PL230 CHNL_USEBURST: SET Position */ -#define CMSDK_PL230_CHNL_USEBURST_SET_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_USEBURST_SET_Pos) /* CMSDK_PL230 CHNL_USEBURST: SET Mask */ - -#define CMSDK_PL230_CHNL_USEBURST_CLR_Pos 0 /* CMSDK_PL230 CHNL_USEBURST: CLR Position */ -#define CMSDK_PL230_CHNL_USEBURST_CLR_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_USEBURST_CLR_Pos) /* CMSDK_PL230 CHNL_USEBURST: CLR Mask */ - -#define CMSDK_PL230_CHNL_REQ_MASK_SET_Pos 0 /* CMSDK_PL230 CHNL_REQ_MASK: SET Position */ -#define CMSDK_PL230_CHNL_REQ_MASK_SET_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_REQ_MASK_SET_Pos) /* CMSDK_PL230 CHNL_REQ_MASK: SET Mask */ - -#define CMSDK_PL230_CHNL_REQ_MASK_CLR_Pos 0 /* CMSDK_PL230 CHNL_REQ_MASK: CLR Position */ -#define CMSDK_PL230_CHNL_REQ_MASK_CLR_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_REQ_MASK_CLR_Pos) /* CMSDK_PL230 CHNL_REQ_MASK: CLR Mask */ - -#define CMSDK_PL230_CHNL_ENABLE_SET_Pos 0 /* CMSDK_PL230 CHNL_ENABLE: SET Position */ -#define CMSDK_PL230_CHNL_ENABLE_SET_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_ENABLE_SET_Pos) /* CMSDK_PL230 CHNL_ENABLE: SET Mask */ - -#define CMSDK_PL230_CHNL_ENABLE_CLR_Pos 0 /* CMSDK_PL230 CHNL_ENABLE: CLR Position */ -#define CMSDK_PL230_CHNL_ENABLE_CLR_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_ENABLE_CLR_Pos) /* CMSDK_PL230 CHNL_ENABLE: CLR Mask */ - -#define CMSDK_PL230_CHNL_PRI_ALT_SET_Pos 0 /* CMSDK_PL230 CHNL_PRI_ALT: SET Position */ -#define CMSDK_PL230_CHNL_PRI_ALT_SET_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_PRI_ALT_SET_Pos) /* CMSDK_PL230 CHNL_PRI_ALT: SET Mask */ - -#define CMSDK_PL230_CHNL_PRI_ALT_CLR_Pos 0 /* CMSDK_PL230 CHNL_PRI_ALT: CLR Position */ -#define CMSDK_PL230_CHNL_PRI_ALT_CLR_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_PRI_ALT_CLR_Pos) /* CMSDK_PL230 CHNL_PRI_ALT: CLR Mask */ - -#define CMSDK_PL230_CHNL_PRIORITY_SET_Pos 0 /* CMSDK_PL230 CHNL_PRIORITY: SET Position */ -#define CMSDK_PL230_CHNL_PRIORITY_SET_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_PRIORITY_SET_Pos) /* CMSDK_PL230 CHNL_PRIORITY: SET Mask */ - -#define CMSDK_PL230_CHNL_PRIORITY_CLR_Pos 0 /* CMSDK_PL230 CHNL_PRIORITY: CLR Position */ -#define CMSDK_PL230_CHNL_PRIORITY_CLR_Msk (0xFFFFFFFFul << CMSDK_PL230_CHNL_PRIORITY_CLR_Pos) /* CMSDK_PL230 CHNL_PRIORITY: CLR Mask */ - -#define CMSDK_PL230_ERR_CLR_Pos 0 /* CMSDK_PL230 ERR: CLR Position */ -#define CMSDK_PL230_ERR_CLR_Msk (0x00000001ul << CMSDK_PL230_ERR_CLR_Pos) /* CMSDK_PL230 ERR: CLR Mask */ - - -/*------------------- Watchdog ----------------------------------------------*/ -typedef struct -{ - - __IO uint32_t LOAD; /* Offset: 0x000 (R/W) Watchdog Load Register */ - __I uint32_t VALUE; /* Offset: 0x004 (R/ ) Watchdog Value Register */ - __IO uint32_t CTRL; /* Offset: 0x008 (R/W) Watchdog Control Register */ - __O uint32_t INTCLR; /* Offset: 0x00C ( /W) Watchdog Clear Interrupt Register */ - __I uint32_t RAWINTSTAT; /* Offset: 0x010 (R/ ) Watchdog Raw Interrupt Status Register */ - __I uint32_t MASKINTSTAT; /* Offset: 0x014 (R/ ) Watchdog Interrupt Status Register */ - uint32_t RESERVED0[762]; - __IO uint32_t LOCK; /* Offset: 0xC00 (R/W) Watchdog Lock Register */ - uint32_t RESERVED1[191]; - __IO uint32_t ITCR; /* Offset: 0xF00 (R/W) Watchdog Integration Test Control Register */ - __O uint32_t ITOP; /* Offset: 0xF04 ( /W) Watchdog Integration Test Output Set Register */ -}CMSDK_WATCHDOG_TypeDef; - -#define CMSDK_Watchdog_LOAD_Pos 0 /* CMSDK_Watchdog LOAD: LOAD Position */ -#define CMSDK_Watchdog_LOAD_Msk (0xFFFFFFFFul << CMSDK_Watchdog_LOAD_Pos) /* CMSDK_Watchdog LOAD: LOAD Mask */ - -#define CMSDK_Watchdog_VALUE_Pos 0 /* CMSDK_Watchdog VALUE: VALUE Position */ -#define CMSDK_Watchdog_VALUE_Msk (0xFFFFFFFFul << CMSDK_Watchdog_VALUE_Pos) /* CMSDK_Watchdog VALUE: VALUE Mask */ - -#define CMSDK_Watchdog_CTRL_RESEN_Pos 1 /* CMSDK_Watchdog CTRL_RESEN: Enable Reset Output Position */ -#define CMSDK_Watchdog_CTRL_RESEN_Msk (0x1ul << CMSDK_Watchdog_CTRL_RESEN_Pos) /* CMSDK_Watchdog CTRL_RESEN: Enable Reset Output Mask */ - -#define CMSDK_Watchdog_CTRL_INTEN_Pos 0 /* CMSDK_Watchdog CTRL_INTEN: Int Enable Position */ -#define CMSDK_Watchdog_CTRL_INTEN_Msk (0x1ul << CMSDK_Watchdog_CTRL_INTEN_Pos) /* CMSDK_Watchdog CTRL_INTEN: Int Enable Mask */ - -#define CMSDK_Watchdog_INTCLR_Pos 0 /* CMSDK_Watchdog INTCLR: Int Clear Position */ -#define CMSDK_Watchdog_INTCLR_Msk (0x1ul << CMSDK_Watchdog_INTCLR_Pos) /* CMSDK_Watchdog INTCLR: Int Clear Mask */ - -#define CMSDK_Watchdog_RAWINTSTAT_Pos 0 /* CMSDK_Watchdog RAWINTSTAT: Raw Int Status Position */ -#define CMSDK_Watchdog_RAWINTSTAT_Msk (0x1ul << CMSDK_Watchdog_RAWINTSTAT_Pos) /* CMSDK_Watchdog RAWINTSTAT: Raw Int Status Mask */ - -#define CMSDK_Watchdog_MASKINTSTAT_Pos 0 /* CMSDK_Watchdog MASKINTSTAT: Mask Int Status Position */ -#define CMSDK_Watchdog_MASKINTSTAT_Msk (0x1ul << CMSDK_Watchdog_MASKINTSTAT_Pos) /* CMSDK_Watchdog MASKINTSTAT: Mask Int Status Mask */ - -#define CMSDK_Watchdog_LOCK_Pos 0 /* CMSDK_Watchdog LOCK: LOCK Position */ -#define CMSDK_Watchdog_LOCK_Msk (0x1ul << CMSDK_Watchdog_LOCK_Pos) /* CMSDK_Watchdog LOCK: LOCK Mask */ - -#define CMSDK_Watchdog_INTEGTESTEN_Pos 0 /* CMSDK_Watchdog INTEGTESTEN: Integration Test Enable Position */ -#define CMSDK_Watchdog_INTEGTESTEN_Msk (0x1ul << CMSDK_Watchdog_INTEGTESTEN_Pos) /* CMSDK_Watchdog INTEGTESTEN: Integration Test Enable Mask */ - -#define CMSDK_Watchdog_INTEGTESTOUTSET_Pos 1 /* CMSDK_Watchdog INTEGTESTOUTSET: Integration Test Output Set Position */ -#define CMSDK_Watchdog_INTEGTESTOUTSET_Msk (0x1ul << CMSDK_Watchdog_INTEGTESTOUTSET_Pos) /* CMSDK_Watchdog INTEGTESTOUTSET: Integration Test Output Set Mask */ - - - -/* -------------------- End of section using anonymous unions ------------------- */ -#if defined ( __CC_ARM ) - #pragma pop -#elif defined(__ICCARM__) - /* leave anonymous unions enabled */ -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) - /* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning restore -#else - #warning Not supported compiler type -#endif - - - - -/* ================================================================================ */ -/* ================ Peripheral memory map ================ */ -/* ================================================================================ */ - -/* Peripheral and SRAM base address */ -#define CMSDK_FLASH_BASE (0x00000000UL) -#define CMSDK_SRAM_BASE (0x20000000UL) -#define CMSDK_PERIPH_BASE (0x40000000UL) - -#define CMSDK_RAM_BASE (0x20000000UL) -#define CMSDK_APB_BASE (0x40000000UL) -#define CMSDK_AHB_BASE (0x40010000UL) - -#define LLCC_CONT_BASE (0xA0000000UL) -#define LLCC_CTRL_BASE (LLCC_CONT_BASE) -#define LLCC_RXD_BASE (LLCC_CONT_BASE+0x2000) -#define LLCC_TXD_BASE (LLCC_CONT_BASE+0x3000) - -#define DMAC_CONT_BASE (0xA0001000UL) -#define DMAC_DMARH_BASE (DMAC_CONT_BASE+0x00) -#define DMAC_DMARL_BASE (DMAC_CONT_BASE+0x40) -#define DMAC_DMAWH_BASE (DMAC_CONT_BASE+0x80) -#define DMAC_DMAWL_BASE (DMAC_CONT_BASE+0xC0) -#define DMAC_HCIR_BASE DMAC_DMARL_BASE -#define DMAC_HCIW_BASE DMAC_DMAWL_BASE -#define CMSDK_TIMER0_BASE (CMSDK_APB_BASE + 0x0000UL) -#define CMSDK_TIMER1_BASE (CMSDK_APB_BASE + 0x1000UL) -#define CMSDK_DUALTIMER_BASE (CMSDK_APB_BASE + 0x2000UL) -#define CMSDK_DUALTIMER_1_BASE (CMSDK_DUALTIMER_BASE) -#define CMSDK_DUALTIMER_2_BASE (CMSDK_DUALTIMER_BASE + 0x20UL) -#define CMSDK_UART0_BASE (CMSDK_APB_BASE + 0x4000UL) -#define CMSDK_UART1_BASE (CMSDK_APB_BASE + 0x5000UL) -#define CMSDK_RTC_BASE (CMSDK_APB_BASE + 0x6000UL) -#define CMSDK_WATCHDOG_BASE (CMSDK_APB_BASE + 0x8000UL) - -/* AHB peripherals */ -#define CMSDK_GPIO0_BASE (CMSDK_AHB_BASE + 0x0000UL) -#define CMSDK_GPIO1_BASE (CMSDK_AHB_BASE + 0x1000UL) -#define CMSDK_GPIO2_BASE (CMSDK_AHB_BASE + 0x2000UL) -#define CMSDK_GPIO3_BASE (CMSDK_AHB_BASE + 0x3000UL) -#define CMSDK_SYSCTRL_BASE (CMSDK_AHB_BASE + 0xF000UL) - - -/* ================================================================================ */ -/* ================ Peripheral declaration ================ */ -/* ================================================================================ */ - -#define CMSDK_UART0 ((CMSDK_UART_TypeDef *) CMSDK_UART0_BASE ) -#define CMSDK_UART1 ((CMSDK_UART_TypeDef *) CMSDK_UART1_BASE ) -#define CMSDK_TIMER0 ((CMSDK_TIMER_TypeDef *) CMSDK_TIMER0_BASE ) -#define CMSDK_TIMER1 ((CMSDK_TIMER_TypeDef *) CMSDK_TIMER1_BASE ) -#define CMSDK_DUALTIMER ((CMSDK_DUALTIMER_BOTH_TypeDef *) CMSDK_DUALTIMER_BASE ) -#define CMSDK_DUALTIMER1 ((CMSDK_DUALTIMER_SINGLE_TypeDef *) CMSDK_DUALTIMER_1_BASE ) -#define CMSDK_DUALTIMER2 ((CMSDK_DUALTIMER_SINGLE_TypeDef *) CMSDK_DUALTIMER_2_BASE ) -#define CMSDK_WATCHDOG ((CMSDK_WATCHDOG_TypeDef *) CMSDK_WATCHDOG_BASE ) -#define CMSDK_DMA ((CMSDK_PL230_TypeDef *) CMSDK_PL230_BASE ) -#define CMSDK_GPIO0 ((CMSDK_GPIO_TypeDef *) CMSDK_GPIO0_BASE ) -#define CMSDK_GPIO1 ((CMSDK_GPIO_TypeDef *) CMSDK_GPIO1_BASE ) -#define CMSDK_GPIO2 ((CMSDK_GPIO_TypeDef *) CMSDK_GPIO2_BASE ) -#define CMSDK_GPIO3 ((CMSDK_GPIO_TypeDef *) CMSDK_GPIO3_BASE ) -#define CMSDK_SYSCON ((CMSDK_SYSCON_TypeDef *) CMSDK_SYSCTRL_BASE ) - -#define LLCC_CTL ((LLCC_CTL_TypeDef *) LLCC_CTRL_BASE) -#define LLCC_RXD ((LLCC_RXD_TypeDef *) LLCC_RXD_BASE) -#define LLCC_TXD ((LLCC_TXD_TypeDef *) LLCC_TXD_BASE) -#define DMAC_DMARH ((DMAC_CHAN_TypeDef *) DMAC_DMARH_BASE) -#define DMAC_DMARL ((DMAC_CHAN_TypeDef *) DMAC_DMARL_BASE) -#define DMAC_DMAWH ((DMAC_CHAN_TypeDef *) DMAC_DMAWH_BASE) -#define DMAC_DMAWL ((DMAC_CHAN_TypeDef *) DMAC_DMAWL_BASE) -#define DMAC_HCIR DMAC_DMAWL -#define DMAC_HCIW DMAC_DMARL - -/********************************************************************* -* GPIO 2 / 3 BIT FEILD POS, OUTPUTS -*************************************************************************/ -/* GPIO 2 */ -#define CORDIO_LLCCTRL_RESETX_BIT (1<<0) -#define CORDIO_LLCCTRL_SYSTEM_RESET_BIT (1<<1) -#define CORDIO_LLCCTRL_LLC_RESET_BIT (1<<2) -#define CORDIO_LLCCTRL_WAKE_REQ_BIT (1<<3) -#define CORDIO_LLCCTRL_SLEEP_REQ_BIT (1<<4) -#define CORDIO_LLCCTRL_SWITCHING_REGULATOR_REQUEST_BIT (1<<5) -#define CORDIO_LLCCTRL_BATTERY_STATUS_REQUEST_BIT (1<<6) -#define CORDIO_LLCCTRL_32M_XTAL_REQUEST_BIT (1<<7) - -/* GPIO 3 */ -#define CORDIO_LLCCTRL_VMEM_ON_BIT ((1<<10) | (1 << 11)) - -/********************************************************************* -* GPIO 2 / 3 BIT FEILD POS, INPUTS -*************************************************************************/ - -#define CORDIO_LLCCTRL_RESET_SYNDROME_MSK (3<<0) - -#define CORDIO_LLCCTRL_STATUS_ACTIVE_32KXTAL_BIT (1<<2) -#define CORDIO_LLCCTRL_STATUS_ACTIVE_32MXTAL_BIT (1<<3) - -#define CORDIO_LLCCTRL_STATUS_BATTERY_DET3V_BIT (1<<4) -#define CORDIO_LLCCTRL_STATUS_BATTERY_STATUS_BIT (1<<5) -#define CORDIO_LLCCTRL_STATUS_V1V_ON_STATUS_BIT (1<<6) -#define CORDIO_LLCCTRL_STATUS_AWAKE_BIT (1<<7) - -/**************************************************************/ -// RESET LOW -#define CORDIO_LLCCTRL_RESETX_ASSERT() (CMSDK_GPIO2->DATAOUT &=~CORDIO_LLCCTRL_RESETX_BIT) -#define CORDIO_LLCCTRL_RESETX_NEGATE() (CMSDK_GPIO2->DATAOUT |= CORDIO_LLCCTRL_RESETX_BIT) -// RESET HIGH -#define CORDIO_LLCCTRL_SYSTEM_RESET_ASSERT() (CMSDK_GPIO2->DATAOUT |=CORDIO_LLCCTRL_SYSTEM_RESET_BIT) -#define CORDIO_LLCCTRL_SYSTEM_RESET_NEGATE() (CMSDK_GPIO2->DATAOUT &=~CORDIO_LLCCTRL_SYSTEM_RESET_BIT) - -// RESET HIGH -#define CORDIO_LLCCTRL_LLC_RESET_ASSERT() (CMSDK_GPIO2->DATAOUT |=CORDIO_LLCCTRL_LLC_RESET_BIT) -#define CORDIO_LLCCTRL_LLC_RESET_NEGATE() (CMSDK_GPIO2->DATAOUT &=~CORDIO_LLCCTRL_LLC_RESET_BIT) - -// ACTIVE HIGH -#define CORDIO_LLCCTRL_WAKE_REQ_ASSERT() (CMSDK_GPIO2->DATAOUT |=CORDIO_LLCCTRL_WAKE_REQ_BIT) -#define CORDIO_LLCCTRL_WAKE_REQ_NEGATE() (CMSDK_GPIO2->DATAOUT &=~CORDIO_LLCCTRL_WAKE_REQ_BIT) - -// ACTIVE HIGH -#define CORDIO_LLCCTRL_SLEEP_REQ_ASSERT() (CMSDK_GPIO2->DATAOUT |=CORDIO_LLCCTRL_SLEEP_REQ_BIT) -#define CORDIO_LLCCTRL_SLEEP_REQ_NEGATE() (CMSDK_GPIO2->DATAOUT &=~CORDIO_LLCCTRL_SLEEP_REQ_BIT) - -// ACTIVE HIGH -#define CORDIO_LLCCTRL_SWITCHING_REGULATOR_REQUEST_ASSERT() (CMSDK_GPIO2->DATAOUT |=CORDIO_LLCCTRL_SWITCHING_REGULATOR_REQUEST_BIT) -#define CORDIO_LLCCTRL_SWITCHING_REGULATOR_REQUEST_NEGATE() (CMSDK_GPIO2->DATAOUT &=~CORDIO_LLCCTRL_SWITCHING_REGULATOR_REQUEST_BIT) -// ACTIVE HIGH -#define CORDIO_LLCCTRL_BATTERY_STATUS_REQUEST_ASSERT() (CMSDK_GPIO2->DATAOUT |=CORDIO_LLCCTRL_BATTERY_STATUS_REQUEST_BIT) -#define CORDIO_LLCCTRL_BATTERY_STATUS_REQUEST_NEGATE() (CMSDK_GPIO2->DATAOUT &=~CORDIO_LLCCTRL_BATTERY_STATUS_REQUEST_BIT) - -// ACTIVE HIGH -#define CORDIO_LLCCTRL_32M_XTAL_REQUEST_ASSERT() (CMSDK_GPIO2->DATAOUT |=CORDIO_LLCCTRL_32M_XTAL_REQUEST_BIT) -#define CORDIO_LLCCTRL_32M_XTAL_REQUEST_NEGATE() (CMSDK_GPIO2->DATAOUT &=~CORDIO_LLCCTRL_32M_XTAL_REQUEST_BIT) -// ASSERTS HIGH -#define CORDIO_LLCCTRL_VMEM_ON_ASSERT() (CMSDK_GPIO3->DATAOUT |=CORDIO_LLCCTRL_VMEM_ON_BIT) -#define CORDIO_LLCCTRL_VMEM_ON_NEGATE() (CMSDK_GPIO3->DATAOUT &=~CORDIO_LLCCTRL_VMEM_ON_BIT) - - -/************ READ STATUS ********************/ - -// ACTIVE HIGH, BIT INDEPANDENT -#define CORDIO_LLCCTRL_RESET_SYNDROME_GET() (CMSDK_GPIO2->DATA & CORDIO_LLCCTRL_RESET_SYNDROME_MSK) -// ACTIVE HIGH -#define CORDIO_LLCCTRL_STATUS_ACTIVE_32KXTAL_GET() (CMSDK_GPIO2->DATA & CORDIO_LLCCTRL_STATUS_ACTIVE_32KXTAL_BIT) -// ACTIVE HIGH -#define CORDIO_LLCCTRL_STATUS_ACTIVE_32MXTAL_GET() (CMSDK_GPIO2->DATA & CORDIO_LLCCTRL_STATUS_ACTIVE_32MXTAL_BIT) -// ACTIVE HIGH -#define CORDIO_LLCCTRL_STATUS_BATTERY_DET3V_GET() (CMSDK_GPIO2->DATA & CORDIO_LLCCTRL_STATUS_BATTERY_DET3V_BIT) -// ACTIVE HIGH -#define CORDIO_LLCCTRL_STATUS_BATTERY_STATUS_GET() (CMSDK_GPIO2->DATA & CORDIO_LLCCTRL_STATUS_BATTERY_STATUS_BIT) -// ACTIVE HIGH -#define CORDIO_LLCCTRL_STATUS_V1V_ON_STATUS_GET() (CMSDK_GPIO2->DATA & CORDIO_LLCCTRL_STATUS_V1V_ON_STATUS_BIT) -// ACTIVE HIGH -#define CORDIO_LLCCTRL_STATUS_AWAKE_GET() (CMSDK_GPIO2->DATA & CORDIO_LLCCTRL_STATUS_AWAKE_BIT) - - -/* ---- DEBUG MASK & VALUE BITs used for diagnosis ---- */ -#define INSTALL_DEBUG__GPIO_TOGGLES - -#ifdef INSTALL_DEBUG__GPIO_TOGGLES - -#define GPIO_TOGGLES_MSK (0xFC) - -#define BIT_0 (1<<0) -#define BIT_1 (1<<1) -#define BIT_2 (1<<2) -#define BIT_3 (1<<3) -#define BIT_4 (1<<4) -#define BIT_5 (1<<5) -#define BIT_6 (1<<6) -#define BIT_7 (1<<7) - -#define BIT_SET(B) (CMSDK_GPIO0->DATAOUT |= ((B) & (GPIO_TOGGLES_MSK))) - -#define BIT_CLR(B) (CMSDK_GPIO0->DATAOUT &= ~((B) & (GPIO_TOGGLES_MSK))) - -/* BIT TOGGLE, XOR */ -#define BIT_TGL(B) (CMSDK_GPIO0->DATAOUT ^= ((B) & (GPIO_TOGGLES_MSK))) - -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* CMSDK_BEETLE_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_ARM_STD/BEETLE.sct b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_ARM_STD/BEETLE.sct deleted file mode 100644 index 67178a90d43..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_ARM_STD/BEETLE.sct +++ /dev/null @@ -1,46 +0,0 @@ -#! armcc -E; -/* -; * BEETLE CMSIS Library -; */ -;/* -; * 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 -; * -; * http://www.apache.org/licenses/LICENSE-2.0 -; * -; * Unless required by applicable law or agreed to in writing, software -; * distributed under the License is distributed on an AS IS BASIS, WITHOUT -; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -; * See the License for the specific language governing permissions and -; * limitations under the License. -; */ -; ************************************************************* -; *** Scatter-Loading Description File *** -; ************************************************************* - -#if !defined(MBED_BOOT_STACK_SIZE) - #define MBED_BOOT_STACK_SIZE 0x400 -#endif - -#define Stack_Size MBED_BOOT_STACK_SIZE - -LR_IROM1 0x00000000 0x00040000 { ; load region size_region - ER_IROM1 0x00000000 0x00040000 { ; load address = execution address - *.o (RESET, +FIRST) - *(InRoot$$Sections) - .ANY (+RO) - CORDIO_RO_2.1.o (*) - } - ; Total: 80 vectors = 320 bytes (0x140) to be reserved in RAM - RW_IRAM1 (0x20000000+0x140) (0x20000-0x140-Stack_Size) { ; RW data - .ANY (+RW +ZI) - } - - ARM_LIB_STACK (0x20000000+0x20000) EMPTY -Stack_Size { ; stack - } -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_ARM_STD/startup_BEETLE.S b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_ARM_STD/startup_BEETLE.S deleted file mode 100644 index 99fbbf35cd7..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_ARM_STD/startup_BEETLE.S +++ /dev/null @@ -1,268 +0,0 @@ -;/* -; * BEETLE CMSIS Library -; */ -;/* -; * 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 -; * -; * http://www.apache.org/licenses/LICENSE-2.0 -; * -; * Unless required by applicable law or agreed to in writing, software -; * distributed under the License is distributed on an AS IS BASIS, WITHOUT -; * 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 is derivative of CMSIS V5.00 startup_ARMCM3.s -; -;/* -;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ -;*/ - - -__initial_sp EQU 0x20020000 ; Top of RAM - - 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 NMI_Handler ; NMI Handler - 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 - DCD UART0_Handler ; UART 0 RX and TX Handler - DCD Spare_IRQ_Handler ; Undefined - DCD UART1_Handler ; UART 1 RX and TX Handler - DCD I2C0_Handler ; I2C 0 Handler - DCD I2C1_Handler ; I2C 1 Handler - DCD RTC_Handler ; RTC Handler - DCD PORT0_COMB_Handler ; GPIO Port 0 Combined Handler - DCD PORT1_COMB_Handler ; GPIO Port 1 Combined Handler - DCD TIMER0_Handler ; TIMER 0 handler - DCD TIMER1_Handler ; TIMER 1 handler - DCD DUALTIMER_HANDLER ; Dual timer handler - DCD SPI0_Handler ; SPI 0 Handler - DCD UARTOVF_Handler ; UART 0,1 Overflow Handler - DCD SPI1_Handler ; SPI 1 Handler - DCD QSPI_Handler ; QSPI Handler - DCD DMA_Handler ; DMA handler - DCD PORT0_0_Handler ; GPIO Port 0 pin 0 Handler - DCD PORT0_1_Handler ; GPIO Port 0 pin 1 Handler - DCD PORT0_2_Handler ; GPIO Port 0 pin 2 Handler - DCD PORT0_3_Handler ; GPIO Port 0 pin 3 Handler - DCD PORT0_4_Handler ; GPIO Port 0 pin 4 Handler - DCD PORT0_5_Handler ; GPIO Port 0 pin 5 Handler - DCD PORT0_6_Handler ; GPIO Port 0 pin 6 Handler - DCD PORT0_7_Handler ; GPIO Port 0 pin 7 Handler - DCD PORT0_8_Handler ; GPIO Port 0 pin 8 Handler - DCD PORT0_9_Handler ; GPIO Port 0 pin 9 Handler - DCD PORT0_10_Handler ; GPIO Port 0 pin 10 Handler - DCD PORT0_11_Handler ; GPIO Port 0 pin 11 Handler - DCD PORT0_12_Handler ; GPIO Port 0 pin 12 Handler - DCD PORT0_13_Handler ; GPIO Port 0 pin 13 Handler - DCD PORT0_14_Handler ; GPIO Port 0 pin 14 Handler - DCD PORT0_15_Handler ; GPIO Port 0 pin 15 Handler - DCD SysError_Handler ; System Error (Flash Cache) - DCD EFLASH_Handler ; Embedded Flash - DCD LLCC_TXCMD_EMPTY_Handler ; LLCC_TXCMDIRQ - DCD LLCC_TXEVT_EMPTY_Handler ; LLCC_TXEVTIRQ - DCD LLCC_TXDMAH_DONE_Handler ; LLCC_TXDMA0IRQ - DCD LLCC_TXDMAL_DONE_Handler ; LLCC_TXDMA1IRQ - DCD LLCC_RXCMD_VALID_Handler ; LLCC_RXCMDIRQ - DCD LLCC_RXEVT_VALID_Handler ; LLCC_RXEVTIRQ - DCD LLCC_RXDMAH_DONE_Handler ; LLCC_RXDMA0IRQ - DCD LLCC_RXDMAL_DONE_Handler ; LLCC_RXDMA1IRQ - DCD PORT2_COMB_Handler ; GPIO 2 - DCD PORT3_COMB_Handler ; GPIO 3 - DCD TRNG_Handler ; TRNG -__Vectors_End - -__Vectors_Size EQU __Vectors_End - __Vectors - - AREA |.text|, CODE, READONLY - - -; Reset Handler - -Reset_Handler PROC - EXPORT Reset_Handler [WEAK] - IMPORT SystemInit - IMPORT __main - LDR R0, =SystemInit - BLX R0 - LDR R0, =__main - BX R0 - ENDP - - -; Dummy Exception Handlers (infinite loops which can be modified) - -NMI_Handler PROC - EXPORT NMI_Handler [WEAK] - B . - ENDP -HardFault_Handler\ - PROC - EXPORT HardFault_Handler [WEAK] - B . - ENDP -MemManage_Handler\ - PROC - EXPORT MemManage_Handler [WEAK] - B . - ENDP -BusFault_Handler\ - PROC - EXPORT BusFault_Handler [WEAK] - B . - ENDP -UsageFault_Handler\ - PROC - EXPORT UsageFault_Handler [WEAK] - B . - 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 UART0_Handler [WEAK] - EXPORT Spare_IRQ_Handler [WEAK] - EXPORT UART1_Handler [WEAK] - EXPORT I2C0_Handler [WEAK] - EXPORT I2C1_Handler [WEAK] - EXPORT RTC_Handler [WEAK] - EXPORT PORT0_COMB_Handler [WEAK] - EXPORT PORT1_COMB_Handler [WEAK] - EXPORT TIMER0_Handler [WEAK] - EXPORT TIMER1_Handler [WEAK] - EXPORT DUALTIMER_HANDLER [WEAK] - EXPORT SPI0_Handler [WEAK] - EXPORT UARTOVF_Handler [WEAK] - EXPORT SPI1_Handler [WEAK] - EXPORT QSPI_Handler [WEAK] - EXPORT DMA_Handler [WEAK] - EXPORT PORT0_0_Handler [WEAK] - EXPORT PORT0_1_Handler [WEAK] - EXPORT PORT0_2_Handler [WEAK] - EXPORT PORT0_3_Handler [WEAK] - EXPORT PORT0_4_Handler [WEAK] - EXPORT PORT0_5_Handler [WEAK] - EXPORT PORT0_6_Handler [WEAK] - EXPORT PORT0_7_Handler [WEAK] - EXPORT PORT0_8_Handler [WEAK] - EXPORT PORT0_9_Handler [WEAK] - EXPORT PORT0_10_Handler [WEAK] - EXPORT PORT0_11_Handler [WEAK] - EXPORT PORT0_12_Handler [WEAK] - EXPORT PORT0_13_Handler [WEAK] - EXPORT PORT0_14_Handler [WEAK] - EXPORT PORT0_15_Handler [WEAK] - EXPORT SysError_Handler [WEAK] - EXPORT EFLASH_Handler [WEAK] - EXPORT LLCC_TXEVT_EMPTY_Handler [WEAK] - EXPORT LLCC_TXCMD_EMPTY_Handler [WEAK] - EXPORT LLCC_RXEVT_VALID_Handler [WEAK] - EXPORT LLCC_RXCMD_VALID_Handler [WEAK] - EXPORT LLCC_TXDMAL_DONE_Handler [WEAK] - EXPORT LLCC_RXDMAL_DONE_Handler [WEAK] - EXPORT LLCC_TXDMAH_DONE_Handler [WEAK] - EXPORT LLCC_RXDMAH_DONE_Handler [WEAK] - EXPORT PORT2_COMB_Handler [WEAK] - EXPORT PORT3_COMB_Handler [WEAK] - EXPORT TRNG_Handler [WEAK] - -UART0_Handler -Spare_IRQ_Handler -UART1_Handler -I2C0_Handler -I2C1_Handler -RTC_Handler -PORT0_COMB_Handler -PORT1_COMB_Handler -TIMER0_Handler -TIMER1_Handler -DUALTIMER_HANDLER -SPI0_Handler -UARTOVF_Handler -SPI1_Handler -QSPI_Handler -DMA_Handler -PORT0_0_Handler -PORT0_1_Handler -PORT0_2_Handler -PORT0_3_Handler -PORT0_4_Handler -PORT0_5_Handler -PORT0_6_Handler -PORT0_7_Handler -PORT0_8_Handler -PORT0_9_Handler -PORT0_10_Handler -PORT0_11_Handler -PORT0_12_Handler -PORT0_13_Handler -PORT0_14_Handler -PORT0_15_Handler -SysError_Handler -EFLASH_Handler -LLCC_TXEVT_EMPTY_Handler -LLCC_TXCMD_EMPTY_Handler -LLCC_RXEVT_VALID_Handler -LLCC_RXCMD_VALID_Handler -LLCC_TXDMAL_DONE_Handler -LLCC_RXDMAL_DONE_Handler -LLCC_TXDMAH_DONE_Handler -LLCC_RXDMAH_DONE_Handler -PORT2_COMB_Handler -PORT3_COMB_Handler -TRNG_Handler - B . - - ENDP - - - ALIGN - - END diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_GCC_ARM/BEETLE.ld b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_GCC_ARM/BEETLE.ld deleted file mode 100644 index 710f15aebed..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_GCC_ARM/BEETLE.ld +++ /dev/null @@ -1,222 +0,0 @@ -/* - * BEETLE CMSIS Library - */ -/* - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * 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 is derivative of CMSIS V5.00 gcc_arm.ld - */ -/* Linker script for mbed BEETLE SoC */ - -/* Linker script to configure memory regions. */ -MEMORY -{ - VECTORS (rx) : ORIGIN = 0x00000000, LENGTH = 0x00000400 - FLASH (rx) : ORIGIN = 0x00000400, LENGTH = 0x00040000 - 0x00000400 - RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000 -} - -/* 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 - * __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 - */ -ENTRY(Reset_Handler) - -#if !defined(MBED_BOOT_STACK_SIZE) - #define MBED_BOOT_STACK_SIZE 0x400 -#endif - -__stack_size__ = MBED_BOOT_STACK_SIZE; -__heap_size__ = 0x8000; - -HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x0400; -STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0400; - -/* Size of the vector table in SRAM */ -M_VECTOR_RAM_SIZE = 0x140; - -SECTIONS -{ - .isr_vector : - { - __vector_table = .; - KEEP(*(.vector_table)) - . = ALIGN(8); - } > VECTORS - - .text : - { - *(.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) - - *(.rodata*) - - KEEP(*(.eh_frame*)) - } > FLASH - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > FLASH - - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > FLASH - __exidx_end = .; - - .cordio : - { - *CORDIO_RO_2.1.o - *TRIM_2.1.o - } > FLASH - - .interrupts_ram : - { - . = ALIGN(8); - __VECTOR_RAM__ = .; - __interrupts_ram_start__ = .; /* Create a global symbol at data start */ - . += M_VECTOR_RAM_SIZE; - . = ALIGN(8); - __interrupts_ram_end__ = .; /* Define a global symbol at data end */ - } > RAM - - .data : - { - PROVIDE(__etext = LOADADDR(.data)); - . = ALIGN(8); - __data_start__ = .; - *(vtable) - *(.data) - *(.data*) - - . = ALIGN(8); - /* preinit data */ - PROVIDE (__preinit_array_start = .); - KEEP(*(.preinit_array)) - PROVIDE (__preinit_array_end = .); - - . = ALIGN(8); - /* init data */ - PROVIDE (__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE (__init_array_end = .); - - - . = ALIGN(8); - /* finit data */ - PROVIDE (__fini_array_start = .); - KEEP(*(SORT(.fini_array.*))) - KEEP(*(.fini_array)) - PROVIDE (__fini_array_end = .); - - . = ALIGN(8); - /* All data end */ - __data_end__ = .; - - } > RAM AT > FLASH - - /* From now on you can insert any other SRAM region. */ - - .uninitialized (NOLOAD): - { - . = ALIGN(32); - __uninitialized_start = .; - *(.uninitialized) - KEEP(*(.keep.uninitialized)) - . = ALIGN(32); - __uninitialized_end = .; - } > RAM - - .bss : - { - . = ALIGN(8); - __START_BSS = .; - __bss_start__ = .; - *(.bss) - *(.bss*) - *(COMMON) - . = ALIGN(8); - __bss_end__ = .; - __END_BSS = .; - - } > RAM - - bss_size = __bss_end__ - __bss_start__; - - .heap : - { - . = ALIGN(8); - __end__ = .; - PROVIDE(end = .); - __HeapBase = .; - . = ORIGIN(RAM) + LENGTH(RAM) - STACK_SIZE; - __HeapLimit = .; - __heap_limit = .; /* Add for _sbrk */ - } > 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") - -} /* End of sections */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_GCC_ARM/startup_BEETLE.S b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_GCC_ARM/startup_BEETLE.S deleted file mode 100644 index b6df5cd071a..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_GCC_ARM/startup_BEETLE.S +++ /dev/null @@ -1,233 +0,0 @@ -/* - * BEETLE CMSIS Library - */ -/* - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * 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 is derivative of CMSIS V5.00 startup_ARMCM3.S - */ - .syntax unified - .arch armv7-m - - .section .vector_table,"a",%progbits - .align 2 - .globl __isr_vector -__isr_vector: - .long __StackTop /* Top of Stack */ - .long Reset_Handler /* Reset Handler */ - .long NMI_Handler /* 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 */ - .long UART0_Handler /* 0:UART 0 RX and TX Combined Interrupt */ - .long Spare_Handler /* 1:Undefined */ - .long UART1_Handler /* 2:UART 1 RX and TX Combined Interrupt */ - .long I2C0_Handler /* 3:I2C 0 Interrupt */ - .long I2C1_Handler /* 4:I2C 1 Interrupt */ - .long RTC_Handler /* 5:RTC Interrupt */ - .long PORT0_Handler /* 6:GPIO Port 0 combined Interrupt */ - .long PORT1_ALL_Handler /* 7:GPIO Port 1 combined Interrupt */ - .long TIMER0_Handler /* 8:TIMER 0 Interrupt */ - .long TIMER1_Handler /* 9:TIMER 1 Interrupt */ - .long DUALTIMER_Handler /* 10:Dual Timer Interrupt */ - .long SPI0_Handler /* 11:SPI 0 Interrupt */ - .long UARTOVF_Handler /* 12:UART 0,1,2 Overflow Interrupt */ - .long SPI1_Handler /* 13:SPI 1 Interrupt */ - .long QSPI_Handler /* 14:QUAD SPI Interrupt */ - .long DMA_Handler /* 15:Touch Screen Interrupt */ - .long PORT0_0_Handler /* 16:All P0 and P1I/O pins used as irq source */ - .long PORT0_1_Handler /* 17:There are 16 pins in total */ - .long PORT0_2_Handler /* 18: */ - .long PORT0_3_Handler /* 19: */ - .long PORT0_4_Handler /* 20: */ - .long PORT0_5_Handler /* 21: */ - .long PORT0_6_Handler /* 22: */ - .long PORT0_7_Handler /* 23: */ - .long PORT0_8_Handler /* 24: */ - .long PORT0_9_Handler /* 25: */ - .long PORT0_10_Handler /* 26: */ - .long PORT0_11_Handler /* 27: */ - .long PORT0_12_Handler /* 28: */ - .long PORT0_13_Handler /* 29: */ - .long PORT0_14_Handler /* 30: */ - .long PORT0_15_Handler /* 31: */ - .long SysError_Handler /* 32: System Error (Flash Cache) */ - .long EFLASH_Handler /* 33: Embedded Flash */ - .long LLCC_TXCMD_EMPTY_Handler /* 34: LLCC_TXCMDIRQ */ - .long LLCC_TXEVT_EMPTY_Handler /* 35: LLCC_TXEVTIRQ */ - .long LLCC_TXDMAH_DONE_Handler /* 36: LLCC_TXDMA0IRQ */ - .long LLCC_TXDMAL_DONE_Handler /* 37: LLCC_TXDMA1IRQ */ - .long LLCC_RXCMD_VALID_Handler /* 38: LLCC_RXCMDIRQ */ - .long LLCC_RXEVT_VALID_Handler /* 39: LLCC_RXEVTIRQ */ - .long LLCC_RXDMAH_DONE_Handler /* 40: LLCC_RXDMA0IRQ */ - .long LLCC_RXDMAL_DONE_Handler /* 41: LLCC_RXDMA1IRQ */ - .long PORT2_COMB_Handler /* 42: GPIO 2 */ - .long PORT3_COMB_Handler /* 43: GPIO 3 */ - .long TRNG_Handler /* 44: TRNG */ - - .size __isr_vector, . - __isr_vector - - .section .text.Reset_Handler - .thumb - .thumb_func - .align 2 - .globl Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - ldr r0, =SystemInit - blx r0 -/* - * Loop to copy data from read only memory to RAM. The ranges - * of copy from/to are specified by following symbols evaluated in - * linker script. - * _etext: End of code section, i.e., begin of data sections to copy from. - * __data_start__/__data_end__: RAM address range that data should be - * copied to. Both must be aligned to 4 bytes boundary. - */ - - ldr r1, =__etext - ldr r2, =__data_start__ - ldr r3, =__data_end__ - - subs r3, r2 - ble .Lflash_to_ram_loop_end - - movs r4, 0 -.Lflash_to_ram_loop: - ldr r0, [r1,r4] - str r0, [r2,r4] - adds r4, 4 - cmp r4, r3 - blt .Lflash_to_ram_loop -.Lflash_to_ram_loop_end: - -/* Initialize .bss */ -init_bss: - ldr r1, =__bss_start__ - ldr r2, =__bss_end__ - ldr r3, =bss_size - - cmp r3, #0 - beq system_startup - - mov r4, #0 -zero: - strb r4, [r1], #1 - subs r3, r3, #1 - bne zero - -system_startup: - ldr r0, =SystemInit - blx r0 - ldr r0, =_start - bx r0 - .pool - .size Reset_Handler, . - Reset_Handler - - .text -/* - * Macro to define default handlers. Default handler - * will be weak symbol and just dead loops. They can be - * overwritten by other handlers - */ - .macro def_default_handler handler_name - .align 1 - .thumb_func - .weak \handler_name - .type \handler_name, %function -\handler_name : - b . - .size \handler_name, . - \handler_name - .endm - - def_default_handler NMI_Handler - def_default_handler HardFault_Handler - def_default_handler MemManage_Handler - def_default_handler BusFault_Handler - def_default_handler UsageFault_Handler - def_default_handler SVC_Handler - def_default_handler DebugMon_Handler - def_default_handler PendSV_Handler - def_default_handler SysTick_Handler - def_default_handler Default_Handler - - .macro def_irq_default_handler handler_name - .weak \handler_name - .set \handler_name, Default_Handler - .endm - - /* External interrupts */ - def_irq_default_handler UART0_Handler /* 0:UART 0 RX and TX Combined Interrupt */ - def_irq_default_handler Spare_Handler /* 1:Undefined */ - def_irq_default_handler UART1_Handler /* 2:UART 1 RX and TX Combined Interrupt */ - def_irq_default_handler I2C0_Handler /* 3:I2C 0 Interrupt */ - def_irq_default_handler I2C1_Handler /* 4:I2C 1 Interrupt */ - def_irq_default_handler RTC_Handler /* 5:RTC Interrupt */ - def_irq_default_handler PORT0_Handler /* 6:GPIO Port 0 combined Interrupt */ - def_irq_default_handler PORT1_ALL_Handler /* 7:GPIO Port 1 combined Interrupt */ - def_irq_default_handler TIMER0_Handler /* 8:TIMER 0 Interrupt */ - def_irq_default_handler TIMER1_Handler /* 9:TIMER 1 Interrupt */ - def_irq_default_handler DUALTIMER_Handler /* 10:Dual Timer Interrupt */ - def_irq_default_handler SPI0_Handler /* 11:SPI 0 Interrupt */ - def_irq_default_handler UARTOVF_Handler /* 12:UART 0,1,2 Overflow Interrupt */ - def_irq_default_handler SPI1_Handler /* 13:SPI 1 Interrupt */ - def_irq_default_handler QSPI_Handler /* 14:QUAD SPI Interrupt */ - def_irq_default_handler DMA_Handler /* 15:Touch Screen Interrupt */ - def_irq_default_handler PORT0_0_Handler /* 16:All P0 and P1I/O pins used as irq source */ - def_irq_default_handler PORT0_1_Handler /* 17:There are 16 pins in total */ - def_irq_default_handler PORT0_2_Handler /* 18: */ - def_irq_default_handler PORT0_3_Handler /* 19: */ - def_irq_default_handler PORT0_4_Handler /* 20: */ - def_irq_default_handler PORT0_5_Handler /* 21: */ - def_irq_default_handler PORT0_6_Handler /* 22: */ - def_irq_default_handler PORT0_7_Handler /* 23: */ - def_irq_default_handler PORT0_8_Handler /* 24: */ - def_irq_default_handler PORT0_9_Handler /* 25: */ - def_irq_default_handler PORT0_10_Handler /* 26: */ - def_irq_default_handler PORT0_11_Handler /* 27: */ - def_irq_default_handler PORT0_12_Handler /* 28: */ - def_irq_default_handler PORT0_13_Handler /* 29: */ - def_irq_default_handler PORT0_14_Handler /* 30: */ - def_irq_default_handler PORT0_15_Handler /* 31: */ - def_irq_default_handler SysError_Handler /* 32: System Error (Flash Cache) */ - def_irq_default_handler EFLASH_Handler /* 33: Embedded Flash */ - def_irq_default_handler LLCC_TXCMD_EMPTY_Handler /* 34: LLCC_TXCMDIRQ */ - def_irq_default_handler LLCC_TXEVT_EMPTY_Handler /* 35: LLCC_TXEVTIRQ */ - def_irq_default_handler LLCC_TXDMAH_DONE_Handler /* 36: LLCC_TXDMA0IRQ */ - def_irq_default_handler LLCC_TXDMAL_DONE_Handler /* 37: LLCC_TXDMA1IRQ */ - def_irq_default_handler LLCC_RXCMD_VALID_Handler /* 38: LLCC_RXCMDIRQ */ - def_irq_default_handler LLCC_RXEVT_VALID_Handler /* 39: LLCC_RXEVTIRQ */ - def_irq_default_handler LLCC_RXDMAH_DONE_Handler /* 40: LLCC_RXDMA0IRQ */ - def_irq_default_handler LLCC_RXDMAL_DONE_Handler /* 41: LLCC_RXDMA1IRQ */ - def_irq_default_handler PORT2_COMB_Handler /* 42: GPIO 2 */ - def_irq_default_handler PORT3_COMB_Handler /* 43: GPIO 3 */ - def_irq_default_handler TRNG_Handler /* 44: TRNG */ - - .end diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_IAR/BEETLE.icf b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_IAR/BEETLE.icf deleted file mode 100644 index e24541e6f78..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_IAR/BEETLE.icf +++ /dev/null @@ -1,55 +0,0 @@ -/* - * BEETLE CMSIS Library - */ -/* - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * 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_0.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x00000000; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0x00000000; -define symbol __ICFEDIT_region_ROM_end__ = 0x0003FFFF; -define symbol __ICFEDIT_region_RAM_start__ = 0x20000140; -define symbol __ICFEDIT_region_RAM_end__ = 0x2001FFFF; -/*-Sizes-*/ - -if (!isdefinedsymbol(MBED_BOOT_STACK_SIZE)) { - define symbol MBED_BOOT_STACK_SIZE = 0x400; -} - -/* Heap and Stack size */ -define symbol __ICFEDIT_size_cstack__ = MBED_BOOT_STACK_SIZE; -define symbol __ICFEDIT_size_heap__ = 0x4000; -/**** End of ICF editor section. ###ICF###*/ - -define memory mem with size = 4G; -define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; -define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; - -initialize by copy { readwrite }; -do not initialize { section .noinit }; - -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; - -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; -place in ROM_region { readonly }; -place in RAM_region { readwrite, - block CSTACK, block HEAP }; diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_IAR/startup_BEETLE.S b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_IAR/startup_BEETLE.S deleted file mode 100644 index 9fcf1e6f366..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/TOOLCHAIN_IAR/startup_BEETLE.S +++ /dev/null @@ -1,421 +0,0 @@ -;/* -; * BEETLE CMSIS Library -; */ -;/* -; * 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 -; * -; * http://www.apache.org/licenses/LICENSE-2.0 -; * -; * Unless required by applicable law or agreed to in writing, software -; * distributed under the License is distributed on an AS IS BASIS, WITHOUT -; * 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 is derivative of CMSIS V5.00 startup_Device.s -; */ - - -; -; 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:CODE:NOROOT(2) - - EXTERN __iar_program_start - EXTERN SystemInit - PUBLIC __vector_table - PUBLIC __vector_table_0x1c - PUBLIC __Vectors - PUBLIC __Vectors_End - PUBLIC __Vectors_Size - - DATA - -__vector_table - DCD sfe(CSTACK) - DCD Reset_Handler - - DCD NMI_Handler - 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 - DCD UART0_Handler ; 0: UART 0 RX and TX Handler - DCD Spare_IRQ_Handler ; 1: Undefined - DCD UART1_Handler ; 2: UART 1 RX and TX Handler - DCD I2C0_Handler ; 3: I2C 0 Handler - DCD I2C1_Handler ; 4: I2C 1 Handler - DCD RTC_Handler ; 5: RTC Handler - DCD PORT0_COMB_Handler ; 6: GPIO Port 0 Combined Handler - DCD PORT1_COMB_Handler ; 7: GPIO Port 1 Combined Handler - DCD TIMER0_Handler ; 8: TIMER 0 handler - DCD TIMER1_Handler ; 9: TIMER 1 handler - DCD DUALTIMER_HANDLER ; 10: Dual timer handler - DCD SPI0_Handler ; 11: SPI 0 Handler - DCD UARTOVF_Handler ; 12: UART 0,1 Overflow Handler - DCD SPI1_Handler ; 13: SPI 1 Handler - DCD QSPI_Handler ; 14: QSPI Handler - DCD DMA_Handler ; 15: DMA handler - DCD PORT0_0_Handler ; 16: GPIO Port 0 pin 0 Handler - DCD PORT0_1_Handler ; 17: GPIO Port 0 pin 1 Handler - DCD PORT0_2_Handler ; 18: GPIO Port 0 pin 2 Handler - DCD PORT0_3_Handler ; 19: GPIO Port 0 pin 3 Handler - DCD PORT0_4_Handler ; 20: GPIO Port 0 pin 4 Handler - DCD PORT0_5_Handler ; 21: GPIO Port 0 pin 5 Handler - DCD PORT0_6_Handler ; 22: GPIO Port 0 pin 6 Handler - DCD PORT0_7_Handler ; 23: GPIO Port 0 pin 7 Handler - DCD PORT0_8_Handler ; 24: GPIO Port 0 pin 8 Handler - DCD PORT0_9_Handler ; 25: GPIO Port 0 pin 9 Handler - DCD PORT0_10_Handler ; 26: GPIO Port 0 pin 10 Handler - DCD PORT0_11_Handler ; 27: GPIO Port 0 pin 11 Handler - DCD PORT0_12_Handler ; 28: GPIO Port 0 pin 12 Handler - DCD PORT0_13_Handler ; 29: GPIO Port 0 pin 13 Handler - DCD PORT0_14_Handler ; 30: GPIO Port 0 pin 14 Handler - DCD PORT0_15_Handler ; 31: GPIO Port 0 pin 15 Handler - DCD SysError_Handler ; 32: System Error (Flash Cache) - DCD EFLASH_Handler ; 33: Embedded Flash - DCD LLCC_TXCMD_EMPTY_Handler ; 34: LLCC_TXCMDIRQ - DCD LLCC_TXEVT_EMPTY_Handler ; 35: LLCC_TXEVTIRQ - DCD LLCC_TXDMAH_DONE_Handler ; 36: LLCC_TXDMA0IRQ - DCD LLCC_TXDMAL_DONE_Handler ; 37: LLCC_TXDMA1IRQ - DCD LLCC_RXCMD_VALID_Handler ; 38: LLCC_RXCMDIRQ - DCD LLCC_RXEVT_VALID_Handler ; 39: LLCC_RXEVTIRQ - DCD LLCC_RXDMAH_DONE_Handler ; 40: LLCC_RXDMA0IRQ - DCD LLCC_RXDMAL_DONE_Handler ; 41: LLCC_RXDMA1IRQ - DCD PORT2_COMB_Handler ; 42: GPIO 2 - DCD PORT3_COMB_Handler ; 43: GPIO 3 - DCD TRNG_Handler ; 44: TRNG -__Vectors_End - -__Vectors EQU __vector_table -__Vectors_Size EQU __Vectors_End - __Vectors - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Default interrupt handlers. -;; - THUMB - - PUBWEAK Reset_Handler - SECTION .text:CODE:REORDER:NOROOT(2) -Reset_Handler - LDR R0, =SystemInit - BLX R0 - LDR R0, =__iar_program_start - BX R0 - - PUBWEAK NMI_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -NMI_Handler - B NMI_Handler - - PUBWEAK HardFault_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -HardFault_Handler - B HardFault_Handler - - PUBWEAK MemManage_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -MemManage_Handler - B MemManage_Handler - - PUBWEAK BusFault_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -BusFault_Handler - B BusFault_Handler - - PUBWEAK UsageFault_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -UsageFault_Handler - B UsageFault_Handler - - PUBWEAK SecureFault_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -SecureFault_Handler - B SecureFault_Handler - - 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 - - - PUBWEAK UART0_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -UART0_Handler - B UART0_Handler - - PUBWEAK Spare_IRQ_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -Spare_IRQ_Handler - B Spare_IRQ_Handler - - PUBWEAK UART1_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -UART1_Handler - B UART1_Handler - - PUBWEAK I2C0_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -I2C0_Handler - B I2C0_Handler - - PUBWEAK I2C1_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -I2C1_Handler - B I2C1_Handler - - PUBWEAK RTC_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -RTC_Handler - B RTC_Handler - - PUBWEAK PORT0_COMB_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_COMB_Handler - B PORT0_COMB_Handler - - PUBWEAK PORT1_COMB_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT1_COMB_Handler - B PORT1_COMB_Handler - - PUBWEAK TIMER0_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -TIMER0_Handler - B TIMER0_Handler - - PUBWEAK TIMER1_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -TIMER1_Handler - B TIMER1_Handler - - PUBWEAK DUALTIMER_HANDLER - SECTION .text:CODE:REORDER:NOROOT(1) -DUALTIMER_HANDLER - B DUALTIMER_HANDLER - - PUBWEAK SPI0_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -SPI0_Handler - B SPI0_Handler - - PUBWEAK UARTOVF_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -UARTOVF_Handler - B UARTOVF_Handler - - PUBWEAK SPI1_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -SPI1_Handler - B SPI1_Handler - - PUBWEAK QSPI_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -QSPI_Handler - B QSPI_Handler - - PUBWEAK DMA_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -DMA_Handler - B DMA_Handler - - PUBWEAK PORT0_0_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_0_Handler - B PORT0_0_Handler - - PUBWEAK PORT0_1_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_1_Handler - B PORT0_1_Handler - - PUBWEAK PORT0_2_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_2_Handler - B PORT0_2_Handler - - PUBWEAK PORT0_3_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_3_Handler - B PORT0_3_Handler - - PUBWEAK PORT0_4_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_4_Handler - B PORT0_4_Handler - - PUBWEAK PORT0_5_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_5_Handler - B PORT0_5_Handler - - PUBWEAK PORT0_6_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_6_Handler - B PORT0_6_Handler - - PUBWEAK PORT0_7_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_7_Handler - B PORT0_7_Handler - - PUBWEAK PORT0_8_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_8_Handler - B PORT0_8_Handler - - PUBWEAK PORT0_9_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_9_Handler - B PORT0_9_Handler - - PUBWEAK PORT0_10_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_10_Handler - B PORT0_10_Handler - - PUBWEAK PORT0_11_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_11_Handler - B PORT0_11_Handler - - PUBWEAK PORT0_12_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_12_Handler - B PORT0_12_Handler - - PUBWEAK PORT0_13_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_13_Handler - B PORT0_13_Handler - - PUBWEAK PORT0_14_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_14_Handler - B PORT0_14_Handler - - PUBWEAK PORT0_15_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT0_15_Handler - B PORT0_15_Handler - - PUBWEAK SysError_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -SysError_Handler - B SysError_Handler - - PUBWEAK EFLASH_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -EFLASH_Handler - B EFLASH_Handler - - PUBWEAK LLCC_TXCMD_EMPTY_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -LLCC_TXCMD_EMPTY_Handler - B LLCC_TXCMD_EMPTY_Handler - - PUBWEAK LLCC_TXEVT_EMPTY_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -LLCC_TXEVT_EMPTY_Handler - B LLCC_TXEVT_EMPTY_Handler - - PUBWEAK LLCC_TXDMAH_DONE_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -LLCC_TXDMAH_DONE_Handler - B LLCC_TXDMAH_DONE_Handler - - PUBWEAK LLCC_TXDMAL_DONE_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -LLCC_TXDMAL_DONE_Handler - B LLCC_TXDMAL_DONE_Handler - - PUBWEAK LLCC_RXCMD_VALID_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -LLCC_RXCMD_VALID_Handler - B LLCC_RXCMD_VALID_Handler - - PUBWEAK LLCC_RXEVT_VALID_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -LLCC_RXEVT_VALID_Handler - B LLCC_RXEVT_VALID_Handler - - PUBWEAK LLCC_RXDMAH_DONE_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -LLCC_RXDMAH_DONE_Handler - B LLCC_RXDMAH_DONE_Handler - - PUBWEAK LLCC_RXDMAL_DONE_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -LLCC_RXDMAL_DONE_Handler - B LLCC_RXDMAL_DONE_Handler - - PUBWEAK PORT2_COMB_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT2_COMB_Handler - B PORT2_COMB_Handler - - PUBWEAK PORT3_COMB_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -PORT3_COMB_Handler - B PORT3_COMB_Handler - - PUBWEAK TRNG_Handler - SECTION .text:CODE:REORDER:NOROOT(1) -TRNG_Handler - B TRNG_Handler - - END diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_dualtimer.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_dualtimer.c deleted file mode 100644 index 2a6230c9dd9..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_dualtimer.c +++ /dev/null @@ -1,413 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include "cmsis.h" -#include "apb_dualtimer.h" - -/* DualTimer Private Data */ -typedef struct { - /* DualTimer 1 Definition */ - CMSDK_DUALTIMER_SINGLE_TypeDef *dualtimer1; - /* DualTimer 2 Definition */ - CMSDK_DUALTIMER_SINGLE_TypeDef *dualtimer2; - /* Dual Timer IRQn */ - uint32_t dualtimerIRQn; - /* DualTimer 1 Reload Value */ - uint32_t dualtimer1Reload; - /* DualTimer 2 Reload Value */ - uint32_t dualtimer2Reload; - /* Timer state */ - uint32_t state; -} apb_dualtimer_t; - -/* Timer state definitions */ -#define DUALTIMER_INITIALIZED (1) -#define DUALTIMER_ENABLED (1 << 1) - -/* - * This Timer is written for MBED OS and keeps count - * of the ticks. All the elaboration logic is demanded - * to the upper layers. - */ -#define DUALTIMER_MAX_VALUE 0xFFFFFFFF -#define DUALTIMER_TICKS_US (SystemCoreClock/1000000) - -/* Dual Timers Array */ -static apb_dualtimer_t DualTimers[NUM_DUALTIMERS]; - -/* - * DualTimer_Initialize(): Initializes a hardware timer - * timer: timer to be Initialized - * time_us: timer reload value in us - 0 to reload to timer max value - * time_us = ticks_value / TIMER_TICK_US - */ -void DualTimer_Initialize(uint32_t timer, uint32_t time_us) -{ - uint32_t reload = 0; - - if (timer < NUM_DUALTIMERS) - { - if (time_us == 0) - reload = DUALTIMER_MAX_VALUE; - else - reload = (time_us) * DUALTIMER_TICKS_US; - - switch(timer) { - case 0: DualTimers[timer].dualtimer1 = CMSDK_DUALTIMER1; - DualTimers[timer].dualtimer2 = CMSDK_DUALTIMER2; - DualTimers[timer].dualtimerIRQn = DUALTIMER_IRQn; - DualTimers[timer].dualtimer1Reload = reload; - DualTimers[timer].dualtimer2Reload = reload; - DualTimers[timer].state = DUALTIMER_INITIALIZED; - default: break; - } - } -} - -/* - * DualTimer_ReturnMode(): returns the correct mode for Dual Timer Control - * mode: mode set by user - * @return: mode for TimeControl register - */ -uint32_t DualTimer_ReturnMode(timerenable_t mode) -{ - uint32_t return_mode = 0; - /* Check Interrupt Enable */ - if (((mode & DUALTIMER_INT) >> DUALTIMER_INT_MASK) == 1) - return_mode |= CMSDK_DUALTIMER_CTRL_INTEN_Msk; - /* Check 32 bit Counter */ - if (((mode & DUALTIMER_COUNT_32) >> DUALTIMER_COUNT_32_MASK) == 1) - return_mode |= CMSDK_DUALTIMER_CTRL_SIZE_Msk; - /* Check Periodic Mode */ - if (((mode & DUALTIMER_PERIODIC) >> DUALTIMER_PERIODIC_MASK) == 1) - return_mode |= CMSDK_DUALTIMER_CTRL_MODE_Msk; - /* Check OneShot Mode */ - if (((mode & DUALTIMER_ONESHOT) >> DUALTIMER_ONESHOT_MASK) == 1) - return_mode |= CMSDK_DUALTIMER_CTRL_ONESHOOT_Msk; - - return return_mode; -} - -/* - * DualTimer_Enable(): Enables a hardware timer - * timer: timer to be enabled - * mode: enable mode - */ -void DualTimer_Enable(uint32_t timer, timerenable_t mode) -{ - uint32_t dualtimerControl = 0; - /* The timer has to be contained in a valid range */ - if (timer < NUM_DUALTIMERS) { - /* Timer has to be already initialized */ - if (DualTimers[timer].state == DUALTIMER_INITIALIZED) { - /* Disable Timer */ - (DualTimers[timer].dualtimer1)->TimerControl = 0x0; - (DualTimers[timer].dualtimer2)->TimerControl = 0x0; - /* Reload Value */ - (DualTimers[timer].dualtimer1)->TimerLoad = - DualTimers[timer].dualtimer1Reload; - (DualTimers[timer].dualtimer2)->TimerLoad = - DualTimers[timer].dualtimer2Reload; - /* Set up Dual Timer Control */ - dualtimerControl = DualTimer_ReturnMode(mode); - (DualTimers[timer].dualtimer1)->TimerControl = dualtimerControl; - (DualTimers[timer].dualtimer2)->TimerControl = dualtimerControl; - /* Enable Counter */ - (DualTimers[timer].dualtimer1)->TimerControl |= - CMSDK_DUALTIMER_CTRL_EN_Msk; - (DualTimers[timer].dualtimer2)->TimerControl |= - CMSDK_DUALTIMER_CTRL_EN_Msk; - /* Change timer state */ - DualTimers[timer].state |= DUALTIMER_ENABLED; - } - } -} - -/* - * DualTimer_Disable(): Disables a hardware timer - * timer: timer to be disabled - * dis_timer: 0 both - 1 dual timer 1 - 2 dual timer 2 - */ -void DualTimer_Disable(uint32_t timer, uint32_t dis_timer) -{ - /* The timer has to be contained in a valid range */ - if (timer < NUM_DUALTIMERS) { - /* Timer has to be already initialized and enabled */ - if (DualTimers[timer].state == (DUALTIMER_INITIALIZED | DUALTIMER_ENABLED)) { - /* Disable Timer */ - switch (dis_timer) - { - case 0: (DualTimers[timer].dualtimer1)->TimerControl = 0x0; - (DualTimers[timer].dualtimer2)->TimerControl = 0x0; - break; - case 1: (DualTimers[timer].dualtimer1)->TimerControl = 0x0; - break; - case 2: (DualTimers[timer].dualtimer2)->TimerControl = 0x0; - break; - default: break; - } - /* Change timer state */ - DualTimers[timer].state = DUALTIMER_INITIALIZED; - } - } -} - -/* - * DualTimer_isEnabled(): verifies if a timer is enabled - * timer: timer to be verified - * @return: 0 disabled - 1 enabled - */ -uint32_t DualTimer_isEnabled(uint32_t timer) -{ - /* The timer has to be contained in a valid range */ - if (timer < NUM_DUALTIMERS) { - /* Timer has to be already initialized and enabled */ - if (DualTimers[timer].state == (DUALTIMER_INITIALIZED | DUALTIMER_ENABLED)) - return 1; - } else { - return 0; - } - return 0; -} - -/* - * DualTimer_Read_1(): provides single timer 1 VALUE - * timer: timer to be read - * @return: timer VALUE - */ -uint32_t DualTimer_Read_1(uint32_t timer) -{ - uint32_t return_value = 0; - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - return_value = (DualTimers[timer].dualtimer1Reload - - (DualTimers[timer].dualtimer1)->TimerValue) - / DUALTIMER_TICKS_US; - } - - return return_value; -} - -/* - * DualTimer_Read_2(): provides single timer 2 VALUE - * timer: timer to be read - * @return: timer VALUE - */ -uint32_t DualTimer_Read_2(uint32_t timer) -{ - uint32_t return_value = 0; - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - return_value = (DualTimers[timer].dualtimer2Reload - - (DualTimers[timer].dualtimer2)->TimerValue) - / DUALTIMER_TICKS_US; - } - - return return_value; -} - -/* - * DualTimer_SetInterrupt_1(): sets timer 1 Interrupt - * timer: timer on which interrupt is set - * time_us: reloading value us - * mode: enable mode - */ -void DualTimer_SetInterrupt_1(uint32_t timer, uint32_t time_us, - timerenable_t mode) -{ - uint32_t dualtimerControl = 0; - uint32_t load_time_us = 0; - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - /* Disable Timer */ - DualTimer_Disable(timer, SINGLETIMER1); - /* Set up Dual Timer Control */ - dualtimerControl = DualTimer_ReturnMode(mode); - (DualTimers[timer].dualtimer1)->TimerControl = - CMSDK_DUALTIMER_CTRL_INTEN_Msk - | dualtimerControl; - - /* Check time us condition */ - if(time_us == DUALTIMER_DEFAULT_RELOAD) - load_time_us = DUALTIMER_MAX_VALUE; - else - load_time_us = time_us * DUALTIMER_TICKS_US; - - /* Reload Value */ - DualTimers[timer].dualtimer1Reload = load_time_us; - (DualTimers[timer].dualtimer1)->TimerLoad = - DualTimers[timer].dualtimer1Reload; - /* Enable Counter */ - (DualTimers[timer].dualtimer1)->TimerControl |= - CMSDK_DUALTIMER_CTRL_EN_Msk; - /* Change timer state */ - DualTimers[timer].state |= DUALTIMER_ENABLED; - } -} - -/* - * DualTimer_SetInterrupt_2(): sets timer 2 Interrupt - * timer: timer on which interrupt is set - * time_us: reloading value us - * mode: enable mode - */ -void DualTimer_SetInterrupt_2(uint32_t timer, uint32_t time_us, - timerenable_t mode) -{ - uint32_t dualtimerControl = 0; - uint32_t load_time_us = 0; - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - /* Disable Timer */ - DualTimer_Disable(timer, SINGLETIMER2); - /* Set up Dual Timer Control */ - dualtimerControl = DualTimer_ReturnMode(mode); - (DualTimers[timer].dualtimer2)->TimerControl = - CMSDK_DUALTIMER_CTRL_INTEN_Msk - | dualtimerControl; - - /* Check time us condition */ - if(time_us == DUALTIMER_DEFAULT_RELOAD) - load_time_us = DUALTIMER_MAX_VALUE; - else - load_time_us = time_us * DUALTIMER_TICKS_US; - - /* Reload Value */ - DualTimers[timer].dualtimer2Reload = load_time_us; - (DualTimers[timer].dualtimer2)->TimerLoad = - DualTimers[timer].dualtimer2Reload; - /* Enable Counter */ - (DualTimers[timer].dualtimer2)->TimerControl |= - CMSDK_DUALTIMER_CTRL_EN_Msk; - /* Change timer state */ - DualTimers[timer].state |= DUALTIMER_ENABLED; - } -} - -/* - * DualTimer_DisableInterrupt(): disables timer interrupts - * dualimer: dualtimer on which interrupt is disabled - * single_timer: single timer in the dualtimer on which - * interrupt is disabled - */ -void DualTimer_DisableInterrupt(uint32_t dualtimer, - uint32_t single_timer) -{ - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(dualtimer) == 1) { - switch(single_timer) { - case SINGLETIMER1: - /* Disable Interrupt for single timer 1 */ - (DualTimers[dualtimer].dualtimer1)->TimerControl &= - CMSDK_DUALTIMER_CTRL_EN_Msk; - break; - case SINGLETIMER2: - /* Disable Interrupt for single timer 2 */ - (DualTimers[dualtimer].dualtimer2)->TimerControl &= - CMSDK_DUALTIMER_CTRL_EN_Msk; - break; - case ALL_SINGLETIMERS: - /* Disable Interrupt for single timer 1 */ - (DualTimers[dualtimer].dualtimer1)->TimerControl &= - CMSDK_DUALTIMER_CTRL_EN_Msk; - /* Disable Interrupt for single timer 2 */ - (DualTimers[dualtimer].dualtimer2)->TimerControl &= - CMSDK_DUALTIMER_CTRL_EN_Msk; - break; - default: - break; - } - } -} - -/* - * DualTimer_ClearInterrupt(): clear timer interrupt - * timer: timer on which interrupt needs to be cleared - */ -void DualTimer_ClearInterrupt(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - /* Clear Interrupt */ - (DualTimers[timer].dualtimer1)->TimerIntClr = - CMSDK_DUALTIMER_INTCLR_Msk; - (DualTimers[timer].dualtimer2)->TimerIntClr = - CMSDK_DUALTIMER_INTCLR_Msk; - } -} - -/* - * DualTimer_GetIRQn(): returns IRQn of a DualTimer - * timer: timer on which IRQn is defined - 0 if it is not defined - */ -uint32_t DualTimer_GetIRQn(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - return DualTimers[timer].dualtimerIRQn; - } - return 0; -} - -/* - * DualTimer_GetIRQInfo(): provides the single timer who caused - * the interrupt. - * dualtimer: dualtimer that triggered the IRQ - * @return: a single timer - 0 if it is not defined - */ -uint32_t DualTimer_GetIRQInfo(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - if((DualTimers[timer].dualtimer1)->TimerRIS) - return SINGLETIMER1; - else - return SINGLETIMER2; - } - return 0; -} - -/* - * DualTimer_GetTicksUS(): returns the Ticks per us - * timer: timer associated with the Ticks per us - * @return: Ticks per us - 0 if the timer is disables - */ -uint32_t DualTimer_GetTicksUS(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - return DUALTIMER_TICKS_US; - } - return 0; -} - -/* - * DualTimer_GetReloadValue(): returns the load value of the selected - * singletimer. - * timer: timer associated with the Ticks per us - * singletimer: selected singletimer - * @return: reload value of the selected singletimer - 0 if timer is disabled - */ -uint32_t DualTimer_GetReloadValue(uint32_t timer, uint32_t singletimer) -{ - /* Verify if the Timer is enabled */ - if (DualTimer_isEnabled(timer) == 1) { - if (singletimer == SINGLETIMER1) - return DualTimers[timer].dualtimer1Reload / DUALTIMER_TICKS_US; - else - return DualTimers[timer].dualtimer2Reload / DUALTIMER_TICKS_US; - } - return 0; -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_dualtimer.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_dualtimer.h deleted file mode 100644 index ae1c48b5d3b..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_dualtimer.h +++ /dev/null @@ -1,158 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ - -#ifndef _APB_DUAL_TIMER_DRV_H -#define _APB_DUAL_TIMER_DRV_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Supported Number of Dual Timers */ -#define NUM_DUALTIMERS 1 -#define DUALTIMER0 0 -#define SINGLETIMER1 1 -#define SINGLETIMER2 2 -#define ALL_SINGLETIMERS 3 - -/* - * DualTimer_Initialize(): Initializes a hardware timer - * timer: timer to be Initialized - * time_us: timer reload value in us - 0 to reload to timer max value - * time_us = tick_value / TIMER_TICK_US - */ -void DualTimer_Initialize(uint32_t timer, uint32_t time_us); - -/* Enable Mode */ -typedef uint8_t timerenable_t; -/* Interrupt */ -#define DUALTIMER_INT_MASK (0) -#define DUALTIMER_INT (1 << DUALTIMER_INT_MASK) -/* 32 bit Counter */ -#define DUALTIMER_COUNT_32_MASK (1) -#define DUALTIMER_COUNT_32 (1 << DUALTIMER_COUNT_32_MASK) -/* Periodic mode */ -#define DUALTIMER_PERIODIC_MASK (2) -#define DUALTIMER_PERIODIC (1 << DUALTIMER_PERIODIC_MASK) -/* OneShot mode */ -#define DUALTIMER_ONESHOT_MASK (3) -#define DUALTIMER_ONESHOT (1 << DUALTIMER_ONESHOT_MASK) - -/* Default reload */ -#define DUALTIMER_DEFAULT_RELOAD 0xFFFFFFFF - -/* - * DualTimer_Enable(): Enables a hardware timer - * timer: timer to be enabled - * mode: enable mode - */ -void DualTimer_Enable(uint32_t timer, timerenable_t mode); - -/* - * DualTimer_Disable(): Disables a hardware timer - * timer: timer to be disabled - * dis_timer: 0 both - 1 dual timer 1 - 2 dual timer 2 - */ -void DualTimer_Disable(uint32_t timer, uint32_t dis_timer); - -/* - * DualTimer_isEnabled(): verifies if a timer is enabled - * timer: timer to be verified - * @return: 0 disabled - 1 enabled - */ -uint32_t DualTimer_isEnabled(uint32_t timer); - -/* - * DualTimer_Read_1(): provides single timer 1 VALUE - * timer: timer to be read - * @return: timer VALUE us - */ -uint32_t DualTimer_Read_1(uint32_t timer); - -/* - * DualTimer_Read_2(): provides single timer 2 VALUE - * timer: timer to be read - * @return: timer VALUE us - */ -uint32_t DualTimer_Read_2(uint32_t timer); - -/* - * DualTimer_SetInterrupt_1(): sets timer 1 Interrupt - * timer: timer on which interrupt is set - * time_us: reloading value us - * mode: enable mode - */ -void DualTimer_SetInterrupt_1(uint32_t timer, uint32_t time_us, - timerenable_t mode); - -/* - * DualTimer_SetInterrupt_2(): sets timer 2 Interrupt - * timer: timer on which interrupt is set - * time_us: reloading value us - * mode: enable mode - */ -void DualTimer_SetInterrupt_2(uint32_t timer, uint32_t time_us, - timerenable_t mode); - -/* - * DualTimer_DisableInterrupt(): disables timer interrupts - * dualimer: dualtimer on which interrupt is disabled - * single_timer: single timer in the dualtimer on which - * interrupt is disabled - */ -void DualTimer_DisableInterrupt(uint32_t dualtimer, - uint32_t single_timer); - -/* - * DualTimer_ClearInterrupt(): clear timer interrupt - * timer: timer on which interrupt needs to be cleared - */ -void DualTimer_ClearInterrupt(uint32_t timer); - -/* - * DualTimer_GetIRQn(): returns IRQn of a DualTimer - * timer: timer on which IRQn is defined - 0 if it is not defined - */ -uint32_t DualTimer_GetIRQn(uint32_t timer); - -/* - * DualTimer_GetIRQInfo(): provides the single timer who caused - * the interrupt. - * timer: dualtimer that triggered the IRQ - * @return: a single timer - */ -uint32_t DualTimer_GetIRQInfo(uint32_t dualtimer); - -/* - * DualTimer_GetTicksUS(): returns the Ticks per us - * timer: timer associated with the Ticks per us - * @return: Ticks per us - 0 if the timer is disables - */ -uint32_t DualTimer_GetTicksUS(uint32_t timer); - -/* - * DualTimer_GetReloadValue(): returns the load value of the selected - * singletimer. - * timer: timer associated with the Ticks per us - * singletimer: selected singletimer - * @return: reload value of the selected singletimer - */ -uint32_t DualTimer_GetReloadValue(uint32_t timer, uint32_t singletimer); - -#ifdef __cplusplus -} -#endif -#endif /* _APB_DUAL_TIMER_DRV_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_timer.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_timer.c deleted file mode 100644 index f4b880972f5..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_timer.c +++ /dev/null @@ -1,262 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include "cmsis.h" -#include "apb_timer.h" - -/* Timer Private Data */ -typedef struct { - /* Timer Definition */ - CMSDK_TIMER_TypeDef *timerN; - /* Timer IRQn */ - uint32_t timerIRQn; - /* Timer Reload Value */ - uint32_t timerReload; - /* Timer state */ - uint32_t state; -} apb_timer_t; - -/* Timer state definitions */ -#define TIMER_INITIALIZED (1) -#define TIMER_ENABLED (1 << 1) - -/* - * This Timer is written for MBED OS and keeps count - * of the ticks. All the elaboration logic is demanded - * to the upper layers. - */ -#define TIMER_MAX_VALUE 0xFFFFFFFF -#define TIMER_TICKS_US (SystemCoreClock/1000000) - -/* Timers Array */ -static apb_timer_t Timers[NUM_TIMERS]; - -void Timer_Index_Init(uint32_t timer, uint32_t reload, - CMSDK_TIMER_TypeDef *TimerN, uint32_t IRQn) -{ - Timers[timer].timerN = TimerN; - Timers[timer].timerIRQn = IRQn; - Timers[timer].timerReload = reload; - Timers[timer].state = TIMER_INITIALIZED; -} - -/* - * Timer_Initialize(): Initializes an hardware timer - * timer: timer to be Initialized - * time_us: timer reload value in us - 0 to reload to timer max value - * time_us = tick_value / TIMER_TICKS_US - */ -#define TIMER_INIT(index, reload) Timer_Index_Init(index, reload, CMSDK_TIMER##index, TIMER##index##_IRQn) -void Timer_Initialize(uint32_t timer, uint32_t time_us) -{ - uint32_t reload = 0; - - if (timer < NUM_TIMERS) - { - if (time_us == 0) - reload = TIMER_MAX_VALUE; - else - reload = (time_us) * TIMER_TICKS_US; - - switch(timer) { - case 0: TIMER_INIT(0, reload); - break; - case 1: TIMER_INIT(1, reload); - break; - default: break; - } - } -} - -/* - * Timer_Enable(): Enables a hardware timer - * timer: timer to be enabled - */ -void Timer_Enable(uint32_t timer) -{ - /* The timer has to be contained in a valid range */ - if (timer < NUM_TIMERS) { - /* Timer has to be already initialized */ - if (Timers[timer].state == TIMER_INITIALIZED) { - /* Disable Timer */ - (Timers[timer].timerN)->CTRL = 0x0; - /* Reload Value */ - (Timers[timer].timerN)->RELOAD = Timers[timer].timerReload; - /* Enable Interrupt */ - (Timers[timer].timerN)->CTRL = CMSDK_TIMER_CTRL_IRQEN_Msk; - /* Enable Counter */ - (Timers[timer].timerN)->CTRL |= CMSDK_TIMER_CTRL_EN_Msk; - /* Change timer state */ - Timers[timer].state |= TIMER_ENABLED; - } - } -} - -/* - * Timer_Disable(): Disables a hardware timer - * timer: timer to be disabled - */ -void Timer_Disable(uint32_t timer) -{ - /* The timer has to be contained in a valid range */ - if (timer < NUM_TIMERS) { - /* Timer has to be already initialized and enabled */ - if (Timers[timer].state == (TIMER_INITIALIZED | TIMER_ENABLED)) { - /* Disable Timer */ - (Timers[timer].timerN)->CTRL = 0x0; - /* Change timer state */ - Timers[timer].state = TIMER_INITIALIZED; - } - } -} - -/* - * Timer_isEnabled(): verifies if a timer is enabled - * timer: timer to be verified - * @return: 0 disabled - 1 enabled - */ -uint32_t Timer_isEnabled(uint32_t timer) -{ - /* The timer has to be contained in a valid range */ - if (timer < NUM_TIMERS) { - /* Timer has to be already initialized and enabled */ - if (Timers[timer].state == (TIMER_INITIALIZED | TIMER_ENABLED)) - return 1; - } else { - return 0; - } - return 0; -} - -/* - * Timer_Read(): provides timer VALUE - * timer: timer to be read - * @return: timer VALUE us - */ -uint32_t Timer_Read(uint32_t timer) -{ - uint32_t return_value = 0; - /* Verify if the Timer is enabled */ - if (Timer_isEnabled(timer) == 1) { - return_value = (Timers[timer].timerReload - - (Timers[timer].timerN)->VALUE) - / TIMER_TICKS_US; - } - - return return_value; -} - -/* - * Timer_SetInterrupt(): sets timer Interrupt - * timer: timer on which interrupt is set - * time_us: reloading time in us - */ -void Timer_SetInterrupt(uint32_t timer, uint32_t time_us) -{ - uint32_t load_time_us = 0; - /* Verify if the Timer is enabled */ - if (Timer_isEnabled(timer) == 1) { - /* Disable Timer */ - Timer_Disable(timer); - /* Enable Interrupt */ - (Timers[timer].timerN)->CTRL = CMSDK_TIMER_CTRL_IRQEN_Msk; - - /* Check time us condition */ - if(time_us == TIMER_DEFAULT_RELOAD) - load_time_us = TIMER_MAX_VALUE; - else - load_time_us = time_us * TIMER_TICKS_US; - - /* Initialize Timer Value */ - Timers[timer].timerReload = load_time_us; - (Timers[timer].timerN)->RELOAD = Timers[timer].timerReload; - (Timers[timer].timerN)->VALUE = Timers[timer].timerReload; - /* Enable Counter */ - (Timers[timer].timerN)->CTRL |= CMSDK_TIMER_CTRL_EN_Msk; - /* Change timer state */ - Timers[timer].state |= TIMER_ENABLED; - } -} - -/* - * Timer_DisableInterrupt(): disables timer interrupt - * timer: timer on which interrupt is disabled - */ -void Timer_DisableInterrupt(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (Timer_isEnabled(timer) == 1) { - /* Disable Interrupt */ - (Timers[timer].timerN)->CTRL &= CMSDK_TIMER_CTRL_EN_Msk; - } -} - -/* - * Timer_ClearInterrupt(): clear timer interrupt - * timer: timer on which interrupt needs to be cleared - */ -void Timer_ClearInterrupt(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (Timer_isEnabled(timer) == 1) { - /* Clear Interrupt */ - (Timers[timer].timerN)->INTCLEAR = CMSDK_TIMER_INTCLEAR_Msk; - } -} - -/* - * Timer_GetIRQn(): returns IRQn of a Timer - * timer: timer on which IRQn is defined - 0 if it is not defined - */ -uint32_t Timer_GetIRQn(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (Timer_isEnabled(timer) == 1) { - return Timers[timer].timerIRQn; - } - return 0; -} - -/* - * Timer_GetTicksUS(): returns the number of Ticks per us - * timer: timer associated with the Ticks per us - * @return: Ticks per us - 0 if the timer is disables - */ -uint32_t Timer_GetTicksUS(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (Timer_isEnabled(timer) == 1) { - return TIMER_TICKS_US; - } - return 0; -} - -/* - * Timer_GetReloadValue(): returns the load value of the selected - * timer. - * timer: timer associated with the Ticks per us - * @return: reload value of the selected singletimer - */ -uint32_t Timer_GetReloadValue(uint32_t timer) -{ - /* Verify if the Timer is enabled */ - if (Timer_isEnabled(timer) == 1) { - if (timer == TIMER1) - return Timers[timer].timerReload / TIMER_TICKS_US; - else - return Timers[timer].timerReload / TIMER_TICKS_US; - } - return 0; -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_timer.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_timer.h deleted file mode 100644 index e08c58251af..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/apb_timer.h +++ /dev/null @@ -1,109 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ - -#ifndef _APB_TIMER_DRV_H -#define _APB_TIMER_DRV_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Supported Number of Timers */ -#define NUM_TIMERS 2 -#define TIMER0 0 -#define TIMER1 1 - -/* Default reload */ -#define TIMER_DEFAULT_RELOAD 0xFFFFFFFF - -/* - * Timer_Initialize(): Initializes an hardware timer - * timer: timer to be Initialized - * time_us: timer reload value in us - 0 to reload to timer max value - * time_us = tick_value / TIMER_TICK_US - */ -void Timer_Initialize(uint32_t timer, uint32_t time_us); - -/* - * Timer_Enable(): Enables an hardware timer - * timer: timer to be enabled - */ -void Timer_Enable(uint32_t timer); - -/* - * Timer_Disable(): Disables an hardware timer - * timer: timer to be disabled - */ -void Timer_Disable(uint32_t timer); - -/* - * Timer_isEnabled(): verifies if a timer is enabled - * timer: timer to be verified - * @return: 0 disabled - 1 enabled - */ -uint32_t Timer_isEnabled(uint32_t timer); - -/* - * Timer_Read(): provides timer VALUE - * timer: timer to be read - * @return: timer VALUE - */ -uint32_t Timer_Read(uint32_t timer); - -/* - * Timer_SetInterrupt(): sets timer Interrupt - * timer: timer on which interrupt is set - * time_us: reloading time in us - */ -void Timer_SetInterrupt(uint32_t timer, uint32_t time_us); - -/* - * Timer_DisableInterrupt(): disables timer interrupt - * timer: timer on which interrupt is disabled - */ -void Timer_DisableInterrupt(uint32_t timer); - -/* - * Timer_ClearInterrupt(): clear timer interrupt - * timer: timer on which interrupt needs to be cleared - */ -void Timer_ClearInterrupt(uint32_t timer); - -/* - * Timer_GetIRQn(): returns IRQn of a Timer - * timer: timer on which IRQn is defined - 0 if it is not defined - */ -uint32_t Timer_GetIRQn(uint32_t timer); - -/* - * Timer_GetTicksUS(): returns the number of Ticks per us - * timer: timer associated with the Ticks per us - * @return: Ticks per us - 0 if the timer is disables - */ -uint32_t Timer_GetTicksUS(uint32_t timer); - -/* - * Timer_GetReloadValue(): returns the load value of the selected - * timer. - * timer: timer associated with the Ticks per us - * @return: reload value of the selected singletimer - */ -uint32_t Timer_GetReloadValue(uint32_t timer); - -#ifdef __cplusplus -} -#endif -#endif /* _APB_TIMER_DRV_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/cmsis.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/cmsis.h deleted file mode 100644 index 2b1a266dbfa..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/cmsis.h +++ /dev/null @@ -1,42 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2015-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. - */ -/* - * A generic CMSIS include header, pulling in BEETLE SoC specifics - */ - -#ifndef MBED_CMSIS_H -#define MBED_CMSIS_H - -/* Beetle Core */ -#include "CMSDK_BEETLE.h" -/* Beetle System Core */ -#include "system_CMSDK_BEETLE.h" -/* Beetle Core Config */ -#include "system_core_beetle.h" -/* APB Dual Timer */ -#include "apb_dualtimer.h" -/* APB Timer */ -#include "apb_timer.h" -/* Flash Cache Driver */ -#include "fcache_api.h" -/* Embedded Flash Driver */ -#include "eflash_api.h" -/* NVIC Driver */ -#include "cmsis_nvic.h" -/* System Core Version */ -#include "system_core_version.h" - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/cmsis_nvic.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/cmsis_nvic.h deleted file mode 100644 index 00473b4e3c4..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/cmsis_nvic.h +++ /dev/null @@ -1,23 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2015-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. - */ - -#ifndef MBED_CMSIS_NVIC_H -#define MBED_CMSIS_NVIC_H - -#define NVIC_NUM_VECTORS (16 + 48) -#define NVIC_RAM_VECTOR_ADDRESS 0x20000000 //Location of vectors in RAM - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/eflash_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/eflash_api.c deleted file mode 100644 index f6b2027d4aa..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/eflash_api.c +++ /dev/null @@ -1,361 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ - -#include "eflash_api.h" - -/* EFlash Private Data */ -typedef struct { - /* basebank0 start address */ - unsigned int basebank0; - /* basebank0 mass erase + info pages address */ - unsigned int basebank0_me; - /* basebank1 start address */ - unsigned int basebank1; - /* basebank1 mass erase + info pages address */ - unsigned int basebank1_me; -} eflash_t; - -static eflash_t eflash; - -/* EFlash_IdCheck: Detect the part number to see if device is present */ -int EFlash_IdCheck() -{ - unsigned int eflash_id; - - eflash_id = EFlash_Readl(SYS_EFLASH_PIDR2) & (EFLASH_DES_1 | EFLASH_JEDEC); - - if (EFlash_Readl(SYS_EFLASH_PIDR0) != FLS_PID0 - || EFlash_Readl(SYS_EFLASH_PIDR1) != FLS_PID1 - || eflash_id != FLS_PID2) - /* port ID and ARM ID does not match */ - return 1; - else - return 0; -} - -/* EFlash_ReturnBank1BaseAddress: Returns start address of bank 1 */ -int EFlash_ReturnBank1BaseAddress() -{ - unsigned int hwparams0; - int baseaddr; - - hwparams0 = EFlash_Readl(SYS_EFLASH_HWPARAMS0) & EFLASH_FLASHSIZE; - - switch(hwparams0) - { - case 0x11: - /* 128kb flash size - first page of bank 1 is 0x20000 */ - baseaddr = 0x20000; - break; - case 0x12: - /* 256kb flash size - first page of bank 1 is 0x40000 */ - baseaddr = 0x40000; - break; - default: - /* unsupported flash size */ - baseaddr = -1; - break; - } - - return baseaddr; -} - -/* EFlash_DriverInitialize: eFlash Driver Initialize function */ -void EFlash_DriverInitialize() -{ - /* Find the start address of banks */ - eflash.basebank0 = 0x0; - eflash.basebank0_me = 0x40000000; - eflash.basebank1 = EFlash_ReturnBank1BaseAddress(); - eflash.basebank1_me = 0x80000000; -} - -/* EFlash_ClockConfig: eFlash Clock Configuration */ -void EFlash_ClockConfig() -{ - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) & EFLASH_LOCK_MASK) == EFLASH_LOCK); - - /* - * Configure to use external clock - * EXTCL = 31250 ns -> - * 1 ms = 32 clock count 32khz ext_clk -> ER_CLK_COUNT = 32 - * 1 us = 84 clock count system_clk -> WR_CLK_COUNT = 84 - * EXT_CLK_CONF = 0x1 [Erase] External clock used for erase counters (>1ms) - * HCLK used for write counters - * RD_CLK_COUNT = 0x3 - */ - EFlash_Writel(SYS_EFLASH_CONFIG0, 0x00200B43); - - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) & EFLASH_BUSY_MASK) == EFLASH_BUSY); -} - -/* - * EFlash_Erase: Erases flash banks - * Mode: - * 0 - erases bank 0 - * 1 - erases bank 1 - * 2 - erases bank 0 + info pages - * 3 - erases bank 1 + info pages - * 4 - erases bank 0 + 1 - * 5 - erases bank 0 + 1 with info pages - */ -void EFlash_Erase(int mode) -{ - switch (mode) - { - case 0: - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_LOCK_MASK) == EFLASH_LOCK); - /* Erase Block #0 */ - EFlash_Writel(SYS_EFLASH_WADDR, eflash.basebank0); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_MASS_ERASE); - /* Wait until eFlash controller is not busy */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - break; - case 1: - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_LOCK_MASK) == EFLASH_LOCK); - /* Erase Block #1 */ - EFlash_Writel(SYS_EFLASH_WADDR, eflash.basebank1); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_MASS_ERASE); - /* Wait until eFlash controller is not busy */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - break; - case 2: - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_LOCK_MASK) == EFLASH_LOCK); - /* Erase Block #0 + info pages */ - EFlash_Writel(SYS_EFLASH_WADDR, eflash.basebank0_me); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_MASS_ERASE); - /* Wait until eFlash controller is not busy */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - break; - case 3: - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_LOCK_MASK) == EFLASH_LOCK); - /* Erase Block #1 + info pages */ - EFlash_Writel(SYS_EFLASH_WADDR, eflash.basebank1_me); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_MASS_ERASE); - /* Wait until eFlash controller is not busy */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - break; - case 4: - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_LOCK_MASK) == EFLASH_LOCK); - /* Erase Block #0 */ - EFlash_Writel(SYS_EFLASH_WADDR, eflash.basebank0); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_MASS_ERASE); - /* Wait until eFlash controller is not busy */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_LOCK_MASK) == EFLASH_LOCK); - /* Erase Block #1 */ - EFlash_Writel(SYS_EFLASH_WADDR, eflash.basebank1); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_MASS_ERASE); - /* Wait until eFlash controller gets unlocked */ - /* Wait until eFlash controller is not busy */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - break; - case 5: - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_LOCK_MASK) == EFLASH_LOCK); - /* Erase Block #0 + info pages */ - EFlash_Writel(SYS_EFLASH_WADDR, eflash.basebank0_me); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_MASS_ERASE); - /* Wait until eFlash controller is not busy */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_LOCK_MASK) == EFLASH_LOCK); - /* Erase Block #1 + info pages */ - EFlash_Writel(SYS_EFLASH_WADDR, eflash.basebank1_me); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_MASS_ERASE); - /* Wait until eFlash controller is not busy */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - break; - default: - break; - } -} - -/* EFlash_ErasePage: Erase a Page */ -void EFlash_ErasePage(unsigned int waddr) -{ - /* Erase the page starting a waddr */ - EFlash_Writel(SYS_EFLASH_WADDR, waddr); - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_ERASE); - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); -} - -/* - * EFlash_Write: Write function - * Parameters: - * waddr - address in flash - * data - data to be written - */ -void EFlash_Write(unsigned int waddr, unsigned int data) -{ - /* Set Write Data Register */ - EFlash_Writel(SYS_EFLASH_WDATA, data); - /* Set Write Address Register */ - EFlash_Writel(SYS_EFLASH_WADDR, waddr); - /* Start Write Operation through CTRL register */ - EFlash_Writel(SYS_EFLASH_CTRL, EFLASH_WRITE); - /* Wait until eFlash controller gets unlocked */ - while ((EFlash_Readl(SYS_EFLASH_STATUS) - & EFLASH_BUSY_MASK) == EFLASH_BUSY); - - /* Flash Cache invalidate if FCache enabled */ - if (FCache_isEnabled() == 1) - FCache_Invalidate(); -} - -/* - * EFlash_WritePage: Write Page function - * Parameters: - * waddr - address in flash - * page_size - data to be written - * buf - buffer containing the data - */ -int EFlash_WritePage(unsigned int waddr, unsigned int page_size, - unsigned char *buf) -{ - unsigned int page_index; - unsigned int data; - - /* To be verified */ - for(page_index = 0; page_index < page_size; page_index = page_index + 4) { - /* Recreate the 32 bit word */ - data = ((unsigned int) buf[page_index + 3]) << 24 | - ((unsigned int) buf[page_index + 2]) << 16 | - ((unsigned int) buf[page_index + 1]) << 8 | - ((unsigned int) buf[page_index]); - /* Write the word in memory */ - EFlash_Write(waddr, data); - waddr += 4; - } - - return 0; -} - -/* - * EFlash_Read: Read function - * Parameters: - * waddr - address in flash - * Returns: - * the vaule read at address waddr - */ -unsigned int EFlash_Read(unsigned int waddr) -{ - unsigned int eflash_read = EFlash_Readl(waddr); - return eflash_read; -} - -/* - * EFlash_Verify: Verifies if the eFlash has been written correctly. - * Parameters: - * waddr - address in flash - * page_size - data to be written - * buf - buffer containing the data - * Returns: - * (waddr+page_size) - OK or Failed Address - */ -unsigned int EFlash_Verify(unsigned int waddr, unsigned int page_size, - unsigned char *buf) -{ - unsigned int page_index; - unsigned int eflash_data, buf_data; - - /* To be verified */ - for(page_index = 0; page_index < page_size; page_index = page_index + 4) { - /* Recreate the 32 bit word */ - buf_data = ((unsigned int) buf[page_index + 3]) << 24 | - ((unsigned int) buf[page_index + 2]) << 16 | - ((unsigned int) buf[page_index + 1]) << 8 | - ((unsigned int) buf[page_index]); - /* Read the word in memory */ - eflash_data = EFlash_Read(waddr); - if (eflash_data != buf_data) - break; - waddr += 4; - } - - /* Allign the address before return */ - return (waddr); -} - -/* - * EFlash_BlankCheck: Verifies if there is any Blank Block in eFlash - * Parameters: - * waddr - address in flash - * page_size - data to be written - * pat - pattern of a blank block - * Returns: - * 0 - OK or 1- Failed - */ -int EFlash_BlankCheck(unsigned int waddr, unsigned int page_size, - unsigned char pat) -{ - unsigned int page_index; - unsigned int eflash_data, buf_data; - - /* Page size div by 4 */ - page_size = page_size >> 2; - - /* To be verified */ - for(page_index = 0; page_index < page_size; page_index = page_index + 4) { - /* Recreate the 32 bit word */ - buf_data = ((unsigned int) pat) << 24 | - ((unsigned int) pat) << 16 | - ((unsigned int) pat) << 8 | - ((unsigned int) pat); - /* Read the word in memory */ - eflash_data = EFlash_Read(waddr); - if (eflash_data != buf_data) - return 1; - waddr += 4; - } - - return 0; -} - -/* - * Delay ns (uncalibrated delay) - */ -void EFlash_Delay(unsigned int period) { - int loop; - for (loop = 0; loop < period; loop++) - continue; -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/eflash_api.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/eflash_api.h deleted file mode 100644 index cc755631bd1..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/eflash_api.h +++ /dev/null @@ -1,158 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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 _EFLASH_DRV_H -#define _EFLASH_DRV_H - -#include "fcache_api.h" - -#ifdef __cplusplus - -extern "C" { -#else -#include -#endif - - /* eFLASH Address Map */ -#define SYS_EFLASH_BASE 0x40009000 -#define SYS_EFLASH_IRQ_SET_STATUS (SYS_EFLASH_BASE + 0x008) -#define SYS_EFLASH_IRQ_CLR_STATUS (SYS_EFLASH_BASE + 0x008) -#define SYS_EFLASH_CTRL (SYS_EFLASH_BASE + 0x014) -#define SYS_EFLASH_STATUS (SYS_EFLASH_BASE + 0x018) -#define SYS_EFLASH_CONFIG0 (SYS_EFLASH_BASE + 0x01C) -#define SYS_EFLASH_WADDR (SYS_EFLASH_BASE + 0x028) -#define SYS_EFLASH_WDATA (SYS_EFLASH_BASE + 0x02C) -#define SYS_EFLASH_HWPARAMS0 (SYS_EFLASH_BASE + 0x034) -#define SYS_EFLASH_PIDR0 (SYS_EFLASH_BASE + 0xFE0) -#define SYS_EFLASH_PIDR1 (SYS_EFLASH_BASE + 0xFE4) -#define SYS_EFLASH_PIDR2 (SYS_EFLASH_BASE + 0xFE8) - - /* SYS_EFLASH_CTRL (RW): Flash Control Register */ -#define EFLASH_WRITE 1 /* Write one word on eFlash */ -#define EFLASH_ROW_WRITE (1 << 1) /* Write a row of eFlash */ -#define EFLASH_ERASE (1 << 2) /* Erase one page of eFlash */ -#define EFLASH_MASS_ERASE (1 << 3) /* Erases all pages of the eFlash*/ -#define EFLASH_STOP (1 << 4) /* Stop any write erase operation */ - - /* SYS_EFLASH_STATUS (RO): Status Register */ -#define EFLASH_BUSY_MASK 1 /* EFlash Busy Mask */ -#define EFLASH_BUSY 1 /* EFlash Busy */ -#define EFLASH_LOCK_MASK (1 << 1) /* EFlash Lock Mask */ -#define EFLASH_LOCK (1 << 1) /* EFlash Lock */ - - /* SYS_EFLASH_HWPARAMS0 (RO): HW parameters */ -#define EFLASH_FLASHSIZE 0x1F /* Flash Size */ - - /* SYS_EFLASH_PIDR2 (RO): Flash Memory Information */ -#define EFLASH_DES_1 0x7 /* JEP106 Id Mask */ -#define EFLASH_JEDEC 0x8 /* JEDEC assigned val Mask */ -#define EFLASH_REVISION 0xF0 /* Revision number */ - - /* Macros */ -#define EFlash_Readl(reg) *(volatile unsigned int *)reg -#define EFlash_Writel(reg, val) *(volatile unsigned int *)reg = val; - - /* peripheral and component ID values */ -#define FLS_PID4 0x14 -#define FLS_PID5 0x00 -#define FLS_PID6 0x00 -#define FLS_PID7 0x00 -#define FLS_PID0 0x30 -#define FLS_PID1 0xB8 -#define FLS_PID2 0x0B -#define FLS_PID3 0x00 -#define FLS_CID0 0x0D -#define FLS_CID1 0xF0 -#define FLS_CID2 0x05 -#define FLS_CID3 0xB1 - -/* Functions */ -/* EFlash_DriverInitialize: eFlash Driver Initialize function */ -void EFlash_DriverInitialize(void); - -/* EFlash_ClockConfig: eFlash Clock Configuration */ -void EFlash_ClockConfig(void); - -/* - * EFlash_Erase: Erases flash banks - * Mode: - * 0 - erases bank 0 - * 1 - erases bank 1 - * 2 - erases bank 0 + info pages - * 3 - erases bank 1 + info pages - * 4 - erases bank 0 + 1 - * 5 - erases bank 0 + 1 with info pages - */ -void EFlash_Erase(int mode); -/* EFlash_ErasePage: Erase a Page */ -void EFlash_ErasePage(unsigned int waddr); -/* - * EFlash_Write: Write function - * Parameters: - * waddr - address in flash - * data - data to be written - */ -void EFlash_Write(unsigned int waddr, unsigned int data); -/* - * EFlash_WritePage: Write Page function - * Parameters: - * waddr - address in flash - * page_size - data to be written - * buf - buffer containing the data - */ -int EFlash_WritePage(unsigned int waddr, - unsigned int page_size, unsigned char *buf); -/* - * EFlash_Read: Read function - * Parameters: - * waddr - address in flash - * Returns: - * the vaule read at address waddr - */ -unsigned int EFlash_Read(unsigned int waddr); -/* - * EFlash_Verify: Verifies if the eFlash has been written correctly. - * Parameters: - * waddr - address in flash - * page_size - data to be written - * buf - buffer containing the data - * Returns: - * (waddr+page_size) - OK or Failed Address - */ -unsigned int EFlash_Verify(unsigned int waddr, - unsigned int page_size, unsigned char *buf); -/* - * EFlash_BlankCheck: Verifies if there is any Blank Block in eFlash - * Parameters: - * waddr - address in flash - * page_size - data to be written - * pat - pattern of a blank block - * Returns: - * 0 - OK or 1- Failed - */ -int EFlash_BlankCheck(unsigned int waddr, - unsigned int page_size, unsigned char pat); - -/* EFlash_Delay function */ -void EFlash_Delay(unsigned int period); - -/* EFlash_ReturnBank1BaseAddress: Returns start address of bank 1 */ -int EFlash_ReturnBank1BaseAddress(void); - -#ifdef __cplusplus -} -#endif -#endif /* _FCACHE_DRV_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/fcache_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/fcache_api.c deleted file mode 100644 index b1bb67d4f2f..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/fcache_api.c +++ /dev/null @@ -1,199 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ - -#include "fcache_api.h" - -static unsigned int enabled; -static unsigned int fcache_mode; -/* Functions */ - -/* - * FCache_DriverInitialize: flash cache driver initialize funtion - */ -void FCache_DriverInitialize() -{ - unsigned int irqstat; - - /* Clear interrupt status register */ - irqstat = FCache_Readl(SYS_FCACHE_IRQSTAT) & (FCACHE_POW_ERR | FCACHE_MAN_INV_ERR); - FCache_Writel(SYS_FCACHE_IRQSTAT, irqstat); - - /* Cache Disabled: Set enabled to 0 */ - enabled = 0; -} - -/* - * FCache_Enable: Enables the flash cache mode - * mode: supported modes: - * 0 - auto-power auto-invalidate - * 1 - manual-power, manual-invalidate - */ -void FCache_Enable(int mode) -{ - /* Save Enable Mode */ - fcache_mode = mode; - - /* Enable the FCache */ - switch (fcache_mode) { - case 0: - /* Statistic counters enabled, Cache enable, - * auto-inval, auto-power control - */ - FCache_Writel(SYS_FCACHE_CCR, (FCACHE_EN | FCACHE_STATISTIC_EN)); - /* Wait until the cache is enabled */ - while ((FCache_Readl(SYS_FCACHE_SR) & FCACHE_CS) != FCACHE_CS_ENABLED); - /* Cache Enabled: Set enabled to 1 */ - enabled = 1; - break; - case 1: - /* - * Statistic counters enabled, Cache disabled, - * Manual power request (Setting: Power CTRL: - * Manual, Invalidate: Manual) - */ - FCache_Writel(SYS_FCACHE_CCR, (FCACHE_POW_REQ - | FCACHE_SET_MAN_POW - | FCACHE_SET_MAN_INV - | FCACHE_STATISTIC_EN)); - /* Wait until the cache rams are powered */ - while ((FCache_Readl(SYS_FCACHE_SR) & FCACHE_POW_STAT) != FCACHE_POW_STAT); - /* Statistic counters enabled, Cache enabled - * Manual invalidate request (Setting: Power CTRL: - * Manual, Invalidate: Manual) - */ - FCache_Writel(SYS_FCACHE_CCR, (FCACHE_INV_REQ - | FCACHE_POW_REQ - | FCACHE_SET_MAN_POW - | FCACHE_SET_MAN_INV - | FCACHE_STATISTIC_EN)); - /* Wait until the cache is invalidated */ - while ((FCache_Readl(SYS_FCACHE_SR) & FCACHE_INV_STAT) == FCACHE_INV_STAT); - /* Statistic counters enabled, Cache enable, - * manual-inval, manual-power control - */ - FCache_Writel(SYS_FCACHE_CCR, (FCACHE_EN - | FCACHE_POW_REQ - | FCACHE_SET_MAN_POW - | FCACHE_SET_MAN_INV - | FCACHE_STATISTIC_EN)); - /* Wait until the cache is enabled */ - while ((FCache_Readl(SYS_FCACHE_SR) & FCACHE_CS) != FCACHE_CS_ENABLED); - /* Cache Enabled: Set enabled to 1 */ - enabled = 1; - break; - default: - break; - } -} - -/* - * FCache_Disable: Disables the flash cache mode previously enabled - */ -void FCache_Disable() -{ - /* Disable the FCache */ - switch (fcache_mode) { - case 0: - /* Statistic counters enabled, Cache disable, - * auto-inval, auto-power control - */ - FCache_Writel(SYS_FCACHE_CCR, FCACHE_STATISTIC_EN); - /* Wait until the cache is disabled */ - while ((FCache_Readl(SYS_FCACHE_SR) & FCACHE_CS) != FCACHE_CS_DISABLED); - /* Cache Enabled: Set enabled to 0 */ - enabled = 0; - break; - case 1: - /* Statistic counters enabled, Cache disable, - * manual-inval, manual-power control - */ - FCache_Writel(SYS_FCACHE_CCR, (FCACHE_POW_REQ - | FCACHE_SET_MAN_POW - | FCACHE_SET_MAN_INV - | FCACHE_STATISTIC_EN)); - /* Wait until the cache is disabled */ - while ((FCache_Readl(SYS_FCACHE_SR) & FCACHE_CS) != FCACHE_CS_DISABLED); - /* Cache Enabled: Set enabled to 0 */ - enabled = 0; - break; - default: - break; - } -} - -/* - * FCache_Invalidate: to be invalidated the cache needs to be disabled. - * return -1: flash cannot be disabled - * -2: flash cannot be enabled - */ -int FCache_Invalidate() -{ - /* Manual cache invalidate */ - if (fcache_mode == 1) - { - /* Disable Flash Cache */ - if (enabled == 1) - FCache_Disable(); - else - goto error; - - /* Trigger INV_REQ */ - FCache_Writel(SYS_FCACHE_CCR, (FCACHE_INV_REQ - | FCACHE_POW_REQ - | FCACHE_SET_MAN_POW - | FCACHE_SET_MAN_INV - | FCACHE_STATISTIC_EN)); - - /* Wait until INV_REQ is finished */ - while ((FCache_Readl(SYS_FCACHE_SR) & FCACHE_CS) != FCACHE_CS_DISABLED); - - /* Clear Stats */ - FCache_Writel(SYS_FCACHE_CSHR, 0); - FCache_Writel(SYS_FCACHE_CSMR, 0); - - /* Enable Flash Cache */ - if (enabled == 0) - FCache_Enable(1); - -error: - if (enabled == 0) - return -1; - else - return -2; - } - - return 0; -} - -unsigned int * FCache_GetStats() -{ - static unsigned int stats[2]; - - /* Cache Statistics HIT Register */ - stats[0] = FCache_Readl(SYS_FCACHE_CSHR); - /* Cache Statistics MISS Register */ - stats[1] = FCache_Readl(SYS_FCACHE_CSMR); - - return stats; -} - -/* - * FCache_isEnabled: returns 1 if FCache is enabled - */ -unsigned int FCache_isEnabled() -{ - return enabled; -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/fcache_api.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/fcache_api.h deleted file mode 100644 index dc7d0c50dca..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/fcache_api.h +++ /dev/null @@ -1,106 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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 _FCACHE_DRV_H -#define _FCACHE_DRV_H - -#ifdef __cplusplus - -extern "C" { -#else -#include -#endif - - /* Flash Cache Address Map */ -#define SYS_FCACHE_BASE 0x40003000 -/* Configuration and Control Register */ -#define SYS_FCACHE_CCR (SYS_FCACHE_BASE) -/* Status Register */ -#define SYS_FCACHE_SR (SYS_FCACHE_BASE + 0x4) -/* Interrupt Req Status Register */ -#define SYS_FCACHE_IRQSTAT (SYS_FCACHE_BASE + 0x8) -/* Cache Statistic Hit Register */ -#define SYS_FCACHE_CSHR (SYS_FCACHE_BASE + 0x14) -/* Cache Statistic Miss Register */ -#define SYS_FCACHE_CSMR (SYS_FCACHE_BASE + 0x18) - - /* SYS_FCACHE_CCR (RW): Configuration and Control Register */ -#define FCACHE_EN 1 /* FCache Enable */ -#define FCACHE_INV_REQ (1 << 1) /* Manual Invalidate Request */ -#define FCACHE_POW_REQ (1 << 2) /* Manual SRAM Power Request */ -#define FCACHE_SET_MAN_POW (1 << 3) /* Power Control Setting */ -#define FCACHE_SET_MAN_INV (1 << 4) /* Invalidate Control Setting */ -#define FCACHE_SET_PREFETCH (1 << 5) /* Cache Prefetch Setting */ -#define FCACHE_STATISTIC_EN (1 << 6) /* Enable Statistics Logic */ - - /* SYS_FCACHE_SR (RO): Status Register */ -#define FCACHE_CS 0x3 /* Cache Status Mask */ -#define FCACHE_CS_DISABLED 0x0 -#define FCACHE_CS_ENABLING 0x1 -#define FCACHE_CS_ENABLED 0x2 -#define FCACHE_CS_DISABLING 0x3 -#define FCACHE_INV_STAT 0x4 /* Invalidating Status */ -#define FCACHE_POW_STAT 0x10 /* SRAM Power Ack */ - - /* SYS_FCACHE_IRQSTAT (RW): Interrupt Req Status Register */ -#define FCACHE_POW_ERR 1 /* SRAM Power Error */ -#define FCACHE_MAN_INV_ERR (1 << 1) /* Manual Invalidation error status */ - - /* Macros */ -#define FCache_Readl(reg) *(volatile unsigned int *)reg -#define FCache_Writel(reg, val) *(volatile unsigned int *)reg = val; - -/* Functions */ - -/* - * FCache_DriverInitialize: flash cache driver initialize funtion - */ -void FCache_DriverInitialize(void); - -/* - * FCache_Enable: Enables the flash cache mode - * mode: supported modes: - * 0 - auto-power auto-invalidate - * 1 - manual-power, manual-invalidate - */ -void FCache_Enable(int mode); - -/* - * FCache_Disable: Disables the flash cache mode previously enabled - */ -void FCache_Disable(void); - -/* - * FCache_Invalidate: to be invalidated the cache needs to be disabled. - * return -1: flash cannot be disabled - * -2: flash cannot be enabled - */ -int FCache_Invalidate(void); - -/* - * FCache_GetStats: provides cache stats - */ -unsigned int * FCache_GetStats(void); - -/* - * FCache_isEnabled: returns 1 if FCache is enabled - */ -unsigned int FCache_isEnabled(void); - -#ifdef __cplusplus -} -#endif -#endif /* _FCACHE_DRV_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_CMSDK_BEETLE.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_CMSDK_BEETLE.c deleted file mode 100644 index ff6fbdaf5fc..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_CMSDK_BEETLE.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * 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 is derivative of CMSIS V5.00 system_ARMCM3.c - */ - -#include "cmsis.h" - -/*---------------------------------------------------------------------------- - * Define clocks - *----------------------------------------------------------------------------*/ -#define __XTAL (48000000UL) /* Oscillator frequency */ - -#define __SYSTEM_CLOCK (__XTAL / 2) - -/*---------------------------------------------------------------------------- - * Clock Variable definitions - *----------------------------------------------------------------------------*/ -/* !< System Clock Frequency (Core Clock) */ -uint32_t SystemCoreClock = __SYSTEM_CLOCK; - -/*---------------------------------------------------------------------------- - * Clock functions - *----------------------------------------------------------------------------*/ -/** - * Update SystemCoreClock variable - * - * @param none - * @return none - * - * @brief Updates the SystemCoreClock with current core Clock - * retrieved from cpu registers. - */ -void SystemCoreClockUpdate (void) -{ - - SystemCoreClock = __SYSTEM_CLOCK; - -} - -/** - * Initialize the system - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System. - */ -void SystemInit (void) -{ - -#ifdef UNALIGNED_SUPPORT_DISABLE - SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk; -#endif - - SystemCoreClock = __SYSTEM_CLOCK; - - // Enable AHB and APB clock - /* GPIO */ - CMSDK_SYSCON->AHBCLKCFG0SET = 0xF; - /* - * Activate clock for: I2C1, SPI1, SPIO, QUADSPI, WDOG, - * I2C0, UART0, UART1, TIMER0, TIMER1, DUAL TIMER, TRNG - */ - CMSDK_SYSCON->APBCLKCFG0SET = SYSTEM_CORE_TIMER0 - | SYSTEM_CORE_TIMER1 - | SYSTEM_CORE_DUALTIMER0 - | SYSTEM_CORE_UART0 - | SYSTEM_CORE_UART1 - | SYSTEM_CORE_I2C0 - | SYSTEM_CORE_WDOG - | SYSTEM_CORE_QSPI - | SYSTEM_CORE_SPI0 - | SYSTEM_CORE_SPI1 - | SYSTEM_CORE_I2C1 - | SYSTEM_CORE_TRNG; - /* Beetle System Core Config */ - SystemCoreConfig(); -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_CMSDK_BEETLE.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_CMSDK_BEETLE.h deleted file mode 100644 index 355523b9308..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_CMSDK_BEETLE.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * 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 is derivative of CMSIS V5.00 system_ARMCM3.h - */ - - -#ifndef SYSTEM_CMSDK_BEETLE_H -#define SYSTEM_CMSDK_BEETLE_H - -#ifdef __cplusplus -extern "C" { -#endif - -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - - -/** - * Initialize the system - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemCoreClock variable. - */ -extern void SystemInit (void); - -/** - * Update SystemCoreClock variable - * - * @param none - * @return none - * - * @brief Updates the SystemCoreClock with current core Clock - * retrieved from cpu registers. - */ -extern void SystemCoreClockUpdate (void); - -#ifdef __cplusplus -} -#endif - -#endif /* SYSTEM_CMSDK_BEETLE_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_beetle.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_beetle.c deleted file mode 100644 index 98a3b2a27cc..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_beetle.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#include "CMSDK_BEETLE.h" -#include "system_core_beetle.h" - -/* - * SystemCoreConfig(): Configure the System Core - */ -void SystemCoreConfig() -{ - /* Set GPIO Alternate Functions */ - CMSDK_GPIO0->ALTFUNCSET = (1<<0); /* Sheild 0 UART 0 RXD */ - CMSDK_GPIO0->ALTFUNCSET |= (1<<1); /* Sheild 0 UART 0 TXD */ - CMSDK_GPIO0->ALTFUNCSET |= (1<<14); /* Sheild 0 I2C SDA SBCON2 */ - CMSDK_GPIO0->ALTFUNCSET |= (1<<15); /* Sheild 0 I2C SCL SBCON2 */ - CMSDK_GPIO0->ALTFUNCSET |= (1<<10); /* Sheild 0 SPI_3 nCS */ - CMSDK_GPIO0->ALTFUNCSET |= (1<<11); /* Sheild 0 SPI_3 MOSI */ - CMSDK_GPIO0->ALTFUNCSET |= (1<<12); /* Sheild 0 SPI_3 MISO */ - CMSDK_GPIO0->ALTFUNCSET |= (1<<13); /* Sheild 0 SPI_3 SCK */ - - CMSDK_GPIO1->ALTFUNCSET = (1<<0); /* UART 1 RXD */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<1); /* UART 1 TXD */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<6); /* Sheild 1 I2C SDA */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<7); /* Sheild 1 I2C SCL */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<2); /* ADC SPI_2 nCS */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<3); /* ADC SPI_2 MOSI */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<4); /* ADC SPI_2 MISO */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<5); /* ADC SPI_2 SCK */ - - CMSDK_GPIO1->ALTFUNCSET |= (1<<8); /* QSPI CS 2 */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<9); /* QSPI CS 1 */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<10); /* QSPI IO 0 */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<11); /* QSPI IO 1 */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<12); /* QSPI IO 2 */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<13); /* QSPI IO 3 */ - CMSDK_GPIO1->ALTFUNCSET |= (1<<14); /* QSPI SCK */ - - /* Set the ARD_PWR_EN GPIO1[15] as an output */ - CMSDK_GPIO1->OUTENABLESET |= (0x1 << 15); - /* Set on 3v3 (for ARDUINO HDR compliancy) */ - CMSDK_GPIO1->DATA |= (0x1 << 15); -} - -/* POWER MANAGEMENT */ - -/* - * SystemPowerConfig(): Configures the System Power Modes - */ -void SystemPowerConfig() -{ - /* Configure APB Peripheral Clock in sleep state */ - CMSDK_SYSCON->APBCLKCFG1SET = SYSTEM_CORE_TIMER0 - | SYSTEM_CORE_TIMER1 - | SYSTEM_CORE_DUALTIMER0 - | SYSTEM_CORE_UART1 - | SYSTEM_CORE_I2C0 - | SYSTEM_CORE_QSPI - | SYSTEM_CORE_SPI0 - | SYSTEM_CORE_SPI1 - | SYSTEM_CORE_I2C1; - - /* Configure APB Peripheral Clock in deep sleep state */ - CMSDK_SYSCON->APBCLKCFG2SET = SYSTEM_CORE_TIMER0 - | SYSTEM_CORE_TIMER1 - | SYSTEM_CORE_DUALTIMER0 - | SYSTEM_CORE_UART1 - | SYSTEM_CORE_I2C0 - | SYSTEM_CORE_QSPI - | SYSTEM_CORE_SPI0 - | SYSTEM_CORE_SPI1 - | SYSTEM_CORE_I2C1; - - /* Configure Wakeup Sources */ - CMSDK_SYSCON->PWRDNCFG1SET = SYSTEM_CORE_DUALTIMER0; -} - -/* - * SystemPowerSuspend(): Enters in System Suspend - */ -void SystemPowerSuspend(power_mode_t mode) -{ - if (mode == POWER_MODE_DEEP_SLEEP) { - /* Enable deepsleep */ - SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; - /* Ensure effect of last store takes effect */ - __DSB(); - /* Enter sleep mode */ - __WFI(); - } else { - /* Enter sleep mode */ - __WFI(); - } -} - -/* - * SystemPowerResume(): Returns from System Suspend - */ -void SystemPowerResume(power_mode_t mode) -{ - if (mode == POWER_MODE_DEEP_SLEEP) { - /* Disable sleeponexit */ - SCB->SCR &= ~SCB_SCR_SLEEPONEXIT_Msk; - /* Ensure effect of last store takes effect */ - __DSB(); - } -} - - -/* - * System config data storage functions - * Reserved as the data is not strictly persistent - */ - -/* - * __System_Config_GetBDAddr(): Address for the BLE device on the air. - */ -void __System_Config_GetBDAddr(uint8_t *addr, uint8_t byte_len) -{ - SystemCoreConfigData *p; - int bank1addr = EFlash_ReturnBank1BaseAddress(); - - if (byte_len > 6) - { - return; - } - - if (bank1addr < 0) - { - memset(addr, 0xFF, byte_len); - } - else - { - /* 2x bank1 address is the top as banks have to be symmetric sizes */ - /* The data is stored at the end.*/ - p = (SystemCoreConfigData *) ((2 * bank1addr) - SYSTEM_CORE_CONFIG_DATA_SIZE); - - memcpy(addr, p->BD_ADDR, byte_len); - } -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_beetle.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_beetle.h deleted file mode 100644 index 10fc9edeca0..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_beetle.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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 SYSTEM_CORE_BEETLE_H -#define SYSTEM_CORE_BEETLE_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * SystemCoreConfig(): Configure the System Core - */ -void SystemCoreConfig(void); - -/* POWER MANAGEMENT */ -/* Power Mode Type Definition */ -typedef enum { - /* Sleep Power Mode */ - POWER_MODE_SLEEP = 0, - /* Deep Sleep Power Mode */ - POWER_MODE_DEEP_SLEEP = 1 -} power_mode_t; - -/* APB System Core Clocks */ -#define SYSTEM_CORE_TIMER0 (1 << 0) -#define SYSTEM_CORE_TIMER1 (1 << 1) -#define SYSTEM_CORE_DUALTIMER0 (1 << 2) -#define SYSTEM_CORE_UART0 (1 << 4) -#define SYSTEM_CORE_UART1 (1 << 5) -#define SYSTEM_CORE_I2C0 (1 << 7) -#define SYSTEM_CORE_WDOG (1 << 8) -#define SYSTEM_CORE_QSPI (1 << 11) -#define SYSTEM_CORE_SPI0 (1 << 12) -#define SYSTEM_CORE_SPI1 (1 << 13) -#define SYSTEM_CORE_I2C1 (1 << 14) -#define SYSTEM_CORE_TRNG (1 << 15) /* TRNG can not be a wakeup source */ - -/* - * SystemPowerConfig(): Configures the System Power Modes - */ -void SystemPowerConfig(void); - -/* - * SystemPowerSuspend(): Enters in System Suspend - */ -void SystemPowerSuspend(power_mode_t mode); - -/* - * SystemPowerResume(): Returns from System Suspend - */ -void SystemPowerResume(power_mode_t mode); - -/* - * Definitions for storing static configuration data in Beetle - * This is not strictly persistent data as it will get wiped out on chip erase. - * - * There are only read functions provided. - * No Write function to prevent accidental writes resulting in - * the system being non responsive. - * Use the Flash manual before trying to write anything in the last 4k. - */ -#define SYSTEM_CORE_CONFIG_DATA_SIZE (0x200) /* 512 bytes*/ - -typedef struct { - uint32_t BD_ADDR[2]; - - /*rest reserved*/ - uint32_t reserved[SYSTEM_CORE_CONFIG_DATA_SIZE - 2]; -} SystemCoreConfigData; - -/* - * __System_Config_GetBDAddr(): Address for the BLE device on the air. - */ -void __System_Config_GetBDAddr(uint8_t *addr, uint8_t len); - -#ifdef __cplusplus -} -#endif -#endif /* SYSTEM_CORE_BEETLE_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_version.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_version.c deleted file mode 100644 index fd1ba1166b9..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_version.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ -#include -#include -#include "system_core_version.h" - -#define REALLY_MAKE_STR(y) #y -#define MAKE_STR(x) REALLY_MAKE_STR(x) -#define SYSTEM_CORE_VERSION() (SYSTEM_CORE_PLATFORM ".SYSTEM.CORE." \ - MAKE_STR(SYSTEM_CORE_OS) \ - "." MAKE_STR(SYSTEM_CORE_VERSION_MAJOR) \ - "." MAKE_STR(SYSTEM_CORE_VERSION_MINOR) \ - "." MAKE_STR(SYSTEM_CORE_VERSION_PATCH) \ - " " SYSTEM_CORE_DATE \ - " " SYSTEM_CORE_TIME) - -/* Private Data */ -static uint32_t initialized = 0; -const char *system_core_version = SYSTEM_CORE_VERSION(); - - /* Get System Core Version */ -const char* SystemCoreGetVersion() -{ - return system_core_version; -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_version.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_version.h deleted file mode 100644 index 35d1baebd9b..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/device/system_core_version.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#ifndef SYSTEM_CORE_VERSION_H -#define SYSTEM_CORE_VERSION_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Platform Name */ -#define SYSTEM_CORE_PLATFORM "ARM SSG BEETLE" - -/* OS Version */ -#define SYSTEM_CORE_OS 2 - -/* System Core Version */ -#define SYSTEM_CORE_VERSION_MAJOR 0 -#define SYSTEM_CORE_VERSION_MINOR 1 -#define SYSTEM_CORE_VERSION_PATCH 0 -#define SYSTEM_CORE_DATE __DATE__ -#define SYSTEM_CORE_TIME __TIME__ - -/* Get System Core Version */ -const char* SystemCoreGetVersion(void); - -#ifdef __cplusplus -} -#endif - -#endif /* SYSTEM_CORE_VERSION_H */ diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_api.c deleted file mode 100644 index 065b185a529..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_api.c +++ /dev/null @@ -1,92 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include "gpio_api.h" -#include "pinmap.h" - -// function to enable the GPIO pin -uint32_t gpio_set(PinName pin) { - uint32_t pin_value = 0; - - if(pin <= 15) { - pin_value = pin; - } else if (pin >= 16 && pin <= 31) { - pin_value = pin-16; - } else if (pin >= 1001 && pin <= 1004) { - /* Emulated LEDs */ - return (1); - } - - pin_function(pin, 0); - - return (1 << pin_value); -} - -//function to initialise the gpio pin -// this links the board control bits for each pin -// with the object created for the pin -void gpio_init(gpio_t *obj, PinName pin) { - if (pin == NC) { - return; - } else { - int pin_value = 0; - obj->pin = pin; - if (pin <=15) { - pin_value = pin; - } else if (pin >= 16 && pin <= 31) { - pin_value = pin-16; - } else if (pin >= 1001 && pin <= 1004) { - /* Emulated LEDs */ - return; - } - - obj->mask = 0x1 << pin_value; - obj->pin_number = pin; - if (pin <=15) { - obj->reg_data = &CMSDK_GPIO0->DATAOUT; - obj->reg_in = &CMSDK_GPIO0->DATA; - obj->reg_dir = &CMSDK_GPIO0->OUTENABLESET; - obj->reg_dirclr = &CMSDK_GPIO0->OUTENABLECLR; - } else if (pin >= 16 && pin <= 31) { - obj->reg_data = &CMSDK_GPIO1->DATAOUT; - obj->reg_in = &CMSDK_GPIO1->DATA; - obj->reg_dir = &CMSDK_GPIO1->OUTENABLESET; - obj->reg_dirclr = &CMSDK_GPIO1->OUTENABLECLR; - } - } -} - -void gpio_mode(gpio_t *obj, PinMode mode) { - pin_mode(obj->pin, mode); -} - -void gpio_dir(gpio_t *obj, PinDirection direction) { - if(obj->pin >= 0 && obj->pin <= 31) { - switch (direction) { - case PIN_INPUT : *obj->reg_dirclr = obj->mask; break; - case PIN_OUTPUT: *obj->reg_dir |= obj->mask; break; - } - } else { - return; - } -} - -int gpio_is_connected(const gpio_t *obj){ - if(obj->pin != (PinName)NC){ - return 1; - } else { - return 0; - } -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_irq_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_irq_api.c deleted file mode 100644 index 37f7936d670..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_irq_api.c +++ /dev/null @@ -1,399 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include -#include "cmsis.h" -#include "gpio_irq_api.h" -#include "mbed_error.h" - -#define CHANNEL_NUM 32 -#define CMSDK_GPIO_0 CMSDK_GPIO0 -#define CMSDK_GPIO_1 CMSDK_GPIO1 -#define PININT_IRQ 0 - -static uint32_t channel_ids[CHANNEL_NUM] = {0}; -static gpio_irq_handler irq_handler; - -static inline void handle_interrupt_in(uint32_t channel) { - uint32_t ch_bit = (1 << channel); - // Return immediately if: - // * The interrupt was already served - // * There is no user handler - // * It is a level interrupt, not an edge interrupt - if (ch_bit <16){ - if (((CMSDK_GPIO_0->INTSTATUS) == 0) || (channel_ids[channel] == 0) - || ((CMSDK_GPIO_0->INTTYPESET) == 0)) - return; - - if ((CMSDK_GPIO_0->INTTYPESET & ch_bit) - && (CMSDK_GPIO_0->INTPOLSET & ch_bit)) { - irq_handler(channel_ids[channel], IRQ_RISE); - CMSDK_GPIO_0->INTPOLSET = ch_bit; - } - if ((CMSDK_GPIO_0->INTTYPESET & ch_bit) - && ~(CMSDK_GPIO_0->INTPOLSET & ch_bit)) { - irq_handler(channel_ids[channel], IRQ_FALL); - } - CMSDK_GPIO_0->INTCLEAR = ch_bit; - } - - if (ch_bit>=16) { - if (((CMSDK_GPIO_1->INTSTATUS) == 0) || (channel_ids[channel] == 0) - || ((CMSDK_GPIO_1->INTTYPESET) == 0)) - return; - - if ((CMSDK_GPIO_1->INTTYPESET & ch_bit) - && (CMSDK_GPIO_1->INTPOLSET & ch_bit)) { - irq_handler(channel_ids[channel], IRQ_RISE); - CMSDK_GPIO_1->INTPOLSET = ch_bit; - } - if ((CMSDK_GPIO_1->INTTYPESET & ch_bit) - && ~(CMSDK_GPIO_1->INTPOLSET & ch_bit)) { - irq_handler(channel_ids[channel], IRQ_FALL); - } - CMSDK_GPIO_1->INTCLEAR = ch_bit; - } -} - -void gpio0_irq0(void) { - handle_interrupt_in(0); -} - -void gpio0_irq1(void) { - handle_interrupt_in(1); -} - -void gpio0_irq2(void) { - handle_interrupt_in(2); -} - -void gpio0_irq3(void) { - handle_interrupt_in(3); -} - -void gpio0_irq4(void) { - handle_interrupt_in(4); -} - -void gpio0_irq5(void) { - handle_interrupt_in(5); -} - -void gpio0_irq6(void) { - handle_interrupt_in(6); -} - -void gpio0_irq7(void) { - handle_interrupt_in(7); -} - -void gpio0_irq8(void) { - handle_interrupt_in(8); -} - -void gpio0_irq9(void) { - handle_interrupt_in(9); -} - -void gpio0_irq10(void) { - handle_interrupt_in(10); -} - -void gpio0_irq11(void) { - handle_interrupt_in(11); -} - -void gpio0_irq12(void) { - handle_interrupt_in(12); -} - -void gpio0_irq13(void) { - handle_interrupt_in(13); -} - -void gpio0_irq14(void) { - handle_interrupt_in(14); -} - -void gpio0_irq15(void) { - handle_interrupt_in(15); -} - -void gpio1_irq0(void) { - handle_interrupt_in(16); -} - -void gpio1_irq1(void) { - handle_interrupt_in(17); -} - -void gpio1_irq2(void) { - handle_interrupt_in(18); -} - -void gpio1_irq3(void) { - handle_interrupt_in(19); -} - -void gpio1_irq4(void) { - handle_interrupt_in(20); -} - -void gpio1_irq5(void) { - handle_interrupt_in(21); -} - -void gpio1_irq6(void) { - handle_interrupt_in(22); -} - -void gpio1_irq7(void) { - handle_interrupt_in(23); -} - -void gpio1_irq8(void) { - handle_interrupt_in(24); -} - -void gpio1_irq9(void) { - handle_interrupt_in(25); -} - -void gpio1_irq10(void) { - handle_interrupt_in(26); -} - -void gpio1_irq11(void) { - handle_interrupt_in(27); -} - -void gpio1_irq12(void) { - handle_interrupt_in(28); -} - -void gpio1_irq13(void) { - handle_interrupt_in(29); -} - -void gpio1_irq14(void) { - handle_interrupt_in(30); -} - -void gpio1_irq15(void) { - handle_interrupt_in(31); -} - -int gpio_irq_init(gpio_irq_t *obj, PinName pin, - gpio_irq_handler handler, uint32_t id) { - if (pin == NC) {return -1;} - else { - - irq_handler = handler; - - int found_free_channel = 0; - int i = 0; - for (i=0; ich = i; - found_free_channel = 1; - break; - } - } - if (!found_free_channel) - return -1; - /* To select a pin for any of the eight pin interrupts, write the pin number - * as 0 to 23 for pins PIO0_0 to PIO0_23 and 24 to 55. - * @see: mbed_capi/PinNames.h - */ - if (pin <16) { - CMSDK_GPIO_0->INTENSET |= (0x1 << pin); - } - - if (pin >= 16) { - CMSDK_GPIO_1->INTENSET |= (0x1 << pin); - } - - void (*channels_irq)(void) = NULL; - switch (obj->ch) { - case 0: - channels_irq = &gpio0_irq0; - break; - case 1: - channels_irq = &gpio0_irq1; - break; - case 2: - channels_irq = &gpio0_irq2; - break; - case 3: - channels_irq = &gpio0_irq3; - break; - case 4: - channels_irq = &gpio0_irq4; - break; - case 5: - channels_irq = &gpio0_irq5; - break; - case 6: - channels_irq = &gpio0_irq6; - break; - case 7: - channels_irq = &gpio0_irq7; - break; - case 8: - channels_irq = &gpio0_irq8; - break; - case 9: - channels_irq = &gpio0_irq9; - break; - case 10: - channels_irq = &gpio0_irq10; - break; - case 11: - channels_irq = &gpio0_irq11; - break; - case 12: - channels_irq = &gpio0_irq12; - break; - case 13: - channels_irq = &gpio0_irq13; - break; - case 14: - channels_irq = &gpio0_irq14; - break; - case 15: - channels_irq = &gpio0_irq15; - break; - case 16: - channels_irq = &gpio1_irq0; - break; - case 17: - channels_irq = &gpio1_irq1; - break; - case 18: - channels_irq = &gpio1_irq2; - break; - case 19: - channels_irq = &gpio1_irq3; - break; - case 20: - channels_irq = &gpio1_irq4; - break; - case 21: - channels_irq = &gpio1_irq5; - break; - case 22: - channels_irq = &gpio1_irq6; - break; - case 23: - channels_irq = &gpio1_irq7; - break; - case 24: - channels_irq = &gpio1_irq8; - break; - case 25: - channels_irq = &gpio1_irq9; - break; - case 26: - channels_irq = &gpio1_irq10; - break; - case 27: - channels_irq = &gpio1_irq11; - break; - case 28: - channels_irq = &gpio1_irq12; - break; - case 29: - channels_irq = &gpio1_irq13; - break; - case 30: - channels_irq = &gpio1_irq14; - break; - case 31: - channels_irq = &gpio1_irq15; - break; - } - NVIC_SetVector((IRQn_Type)(PININT_IRQ + obj->ch), - (uint32_t)channels_irq); - NVIC_EnableIRQ((IRQn_Type)(PININT_IRQ + obj->ch)); - - return 0; - } -} - -void gpio_irq_free(gpio_irq_t *obj) { -} - -void gpio_irq_set(gpio_irq_t *obj, gpio_irq_event event, uint32_t enable) { - unsigned int ch_bit = (1 << obj->ch); - - // Clear interrupt - if (obj->ch <16) { - if (!(CMSDK_GPIO_0->INTTYPESET & ch_bit)) { - CMSDK_GPIO_0->INTCLEAR = ch_bit; - } - } - if (obj->ch >= 16) { - if (!(CMSDK_GPIO_1->INTTYPESET & ch_bit)) { - CMSDK_GPIO_1->INTCLEAR = ch_bit; - } - } - - // Edge trigger - if (obj->ch <16) { - CMSDK_GPIO_0->INTTYPESET &= ch_bit; - if (event == IRQ_RISE) { - CMSDK_GPIO_0->INTPOLSET |= ch_bit; - if (enable) { - CMSDK_GPIO_0->INTENSET |= ch_bit; - } else { - CMSDK_GPIO_0->INTENCLR |= ch_bit; - } - } else { - CMSDK_GPIO_0->INTPOLCLR |= ch_bit; - if (enable) { - CMSDK_GPIO_0->INTENSET |= ch_bit; - } else { - CMSDK_GPIO_0->INTENCLR |= ch_bit; - } - } - } - if (obj->ch >= 16) { - CMSDK_GPIO_1->INTTYPESET &= ch_bit; - if (event == IRQ_RISE) { - CMSDK_GPIO_1->INTPOLSET |= ch_bit; - if (enable) { - CMSDK_GPIO_1->INTENSET |= ch_bit; - } else { - CMSDK_GPIO_1->INTENCLR |= ch_bit; - } - } else { - CMSDK_GPIO_1->INTPOLCLR |= ch_bit; - if (enable) { - CMSDK_GPIO_1->INTENSET |= ch_bit; - } else { - CMSDK_GPIO_1->INTENCLR |= ch_bit; - } - } - } -} - -void gpio_irq_enable(gpio_irq_t *obj) { - NVIC_EnableIRQ((IRQn_Type)(PININT_IRQ + obj->ch)); -} - -void gpio_irq_disable(gpio_irq_t *obj) { - NVIC_DisableIRQ((IRQn_Type)(PININT_IRQ + obj->ch)); -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_object.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_object.h deleted file mode 100644 index 2d1f64d5650..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/gpio_object.h +++ /dev/null @@ -1,65 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - uint32_t pin_number; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_dirclr; - __IO uint32_t *reg_data; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin < LED1 || obj->pin > LED4) { - if (value == 1) { - *obj->reg_data |= (obj->mask); - } else if (value == 0){ - *obj->reg_data &= ~(obj->mask); - } - } else { - /* Emulated LEDs return without taking any action */ - return; - } -} - -static inline int gpio_read(gpio_t *obj) { - if (obj->pin < LED1 || obj->pin > LED4) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); - } else { - /* Emulated LEDs return OFF always */ - return 0; - } -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/i2c_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/i2c_api.c deleted file mode 100644 index c8e86332fc6..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/i2c_api.c +++ /dev/null @@ -1,508 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include "i2c_api.h" -#include "i2c_def.h" -#include "cmsis.h" -#include "pinmap.h" -#include "mbed_error.h" -#include "mbed_wait_api.h" -/* States of a possibly combined I2C transfer */ -typedef enum i2c_transfer_state_t { - I2C_TRANSFER_SINGLE, /* Non combined transfer */ - I2C_TRANSFER_COMBINED_FIRST_MESSAGE, /* - * First message of a - * combined transfer - */ - I2C_TRANSFER_COMBINED_INTERMEDIATE_MESSAGE, /* - * Message in the middle - * of a combined - * transfer - */ - I2C_TRANSFER_COMBINED_LAST_MESSAGE, /* - * Last message of a combined - * transfer - */ -} i2c_transfer_state_t; - -/* - * Driver private data structure that should not be shared by multiple - * instances of the driver - * (same driver for multiple instances of the IP) - */ -typedef struct private_i2c_t { - /* State of a possibly combined ongoing i2c transfer */ - i2c_transfer_state_t transfer_state; -}private_i2c_t; - - -/* - * Retrieve the private data of the instance related to a given IP - */ -static private_i2c_t* get_i2c_private(i2c_t *obj) { - static private_i2c_t data0, data1; - /* - * Select which instance to give using the base - * address of registers - */ - switch((intptr_t)obj->i2c) { - case I2C0_BASE: - return &data0; - case I2C1_BASE: - return &data1; - default: - error("i2c driver private data structure not found for this registers base address"); - return (void*)0; - } -} - -/* - * Infer the current state of a possibly combined transfer - * (repeated restart) from the current state and the "stop" parameter - * of read and write functions - * MUST be called ONCE AND ONLY ONCE at the beginning of i2c transfer - * functions (read and write) - */ -static i2c_transfer_state_t update_transfer_state(i2c_t *obj, int stop) { - private_i2c_t* private_data = get_i2c_private(obj); - i2c_transfer_state_t *state = &private_data->transfer_state; - - /* - * Choose the current and next state depending on the current state - * This basically implements rising and falling edge detection on - * "stop" variable - */ - switch(*state) { - /* This is the default state for non restarted repeat transfer */ - default: - case I2C_TRANSFER_SINGLE: /* Not a combined transfer */ - if (stop) { - *state = I2C_TRANSFER_SINGLE; - } else { - *state = I2C_TRANSFER_COMBINED_FIRST_MESSAGE; - } - break; - - /* First message of a combined transfer */ - case I2C_TRANSFER_COMBINED_FIRST_MESSAGE: - /* Message in the middle of a combined transfer */ - case I2C_TRANSFER_COMBINED_INTERMEDIATE_MESSAGE: - if (stop) { - *state = I2C_TRANSFER_COMBINED_LAST_MESSAGE; - } else { - *state = I2C_TRANSFER_COMBINED_INTERMEDIATE_MESSAGE; - } - break; - - /* Last message of a combined transfer */ - case I2C_TRANSFER_COMBINED_LAST_MESSAGE: - if (stop) { - *state = I2C_TRANSFER_SINGLE; - } else { - *state = I2C_TRANSFER_COMBINED_FIRST_MESSAGE; - } - break; - } - - return *state; -} - - -static const PinMap PinMap_I2C_SDA[] = { - {SHIELD_SDA, I2C_0, 0}, - {SENSOR_SDA, I2C_1, 0}, - {NC, NC , 0} -}; - -static const PinMap PinMap_I2C_SCL[] = { - {SHIELD_SCL, I2C_0, 0}, - {SENSOR_SCL, I2C_1, 0}, - {NC, NC, 0} -}; - -static void clear_isr(i2c_t *obj) { - /* - * Writing to the IRQ status register clears set bits. Therefore, to - * clear indiscriminately, just read the register and write it back. - */ - uint32_t reg = obj->i2c->IRQ_STATUS; - obj->i2c->IRQ_STATUS = reg; -} - -void i2c_init(i2c_t *obj, PinName sda, PinName scl) { - /* Determine the I2C to use */ - I2CName i2c_sda = (I2CName)pinmap_peripheral(sda, PinMap_I2C_SDA); - I2CName i2c_scl = (I2CName)pinmap_peripheral(scl, PinMap_I2C_SCL); - obj->i2c = (I2C_TypeDef *)pinmap_merge(i2c_sda, i2c_scl); - - if ((int)obj->i2c == NC) { - error("I2C pin mapping failed"); - } - - pinmap_pinout(sda, PinMap_I2C_SDA); - pinmap_pinout(scl, PinMap_I2C_SCL); - - /* - * Default configuration: - * - MS : Master mode - * - NEA : Normal (7-bit) addressing - * - ACKEN : Send ACKs when reading from slave - * - CLR_FIFO : Not a configuration bit => clears the FIFO - */ - uint32_t reg = I2C_CTRL_MS | \ - I2C_CTRL_NEA | \ - I2C_CTRL_ACKEN | \ - I2C_CTRL_CLR_FIFO; - - obj->i2c->CONTROL = reg; - - get_i2c_private(obj)->transfer_state = I2C_TRANSFER_SINGLE; - - i2c_frequency(obj, 100000); /* Default to 100kHz SCL frequency */ -} - -int i2c_start(i2c_t *obj) { - return 0; -} - -int i2c_stop(i2c_t *obj) { - /* Clear the hardware FIFO */ - obj->i2c->CONTROL |= I2C_CTRL_CLR_FIFO; - /* Clear the HOLD bit used for performing combined transfers */ - obj->i2c->CONTROL &= ~I2C_CTRL_HOLD; - /* Reset the transfer size (read and write) */ - obj->i2c->TRANSFER_SIZE = 0; - /* Clear interrupts */ - clear_isr(obj); - return 0; -} - -void i2c_frequency(i2c_t *obj, int hz) { - /* - * Divider is split in two halfs : A and B - * A is 2 bits wide and B is 6 bits wide - * The Fscl frequency (SCL clock) is calculated with the following - * equation: - * Fscl=SystemCoreClock/(22*(A+1)*(B+1)) - * Here, we only calculate the B divisor which already enables a - * wide enough range of values - */ - uint32_t divisor_a = 0; /* Could be changed if a wider range of hz - is needed */ - uint32_t divisor_b = (SystemCoreClock / (22.0 * hz)) - 1; - - /* Clamp the divisors to their maximal value */ - divisor_a = divisor_a > I2C_CTRL_DIVISOR_A_BIT_MASK ? - I2C_CTRL_DIVISOR_A_BIT_MASK : divisor_a; - divisor_b = divisor_b > I2C_CTRL_DIVISOR_B_BIT_MASK ? - I2C_CTRL_DIVISOR_B_BIT_MASK : divisor_b; - - uint8_t divisor_combinded = (divisor_a & I2C_CTRL_DIVISOR_A_BIT_MASK) - | (divisor_b & I2C_CTRL_DIVISOR_B_BIT_MASK); - - obj->i2c->CONTROL = (obj->i2c->CONTROL & ~I2C_CTRL_DIVISORS) - | (divisor_combinded << I2C_CTRL_DIVISOR_OFFSET); -} - -int i2c_read(i2c_t *obj, int address, char *data, int length, int stop) { - int bytes_read = 0; - int length_backup = length; - char *data_backup = data; - obj->last_xfer_address = address; - i2c_transfer_state_t transfer_state = update_transfer_state(obj, stop); - - /* Try to write until it finally succeed or times out */ - int main_timeout = 10; - int retry = 0; - do { - main_timeout--; - - retry = 0; - bytes_read = 0; - length = length_backup; - data = data_backup; - - uint32_t reg = obj->i2c->CONTROL & 0xff7f; - reg |= I2C_CTRL_RW | \ - I2C_CTRL_CLR_FIFO; - /* - * Only touch the HOLD bit at the beginning of - * (possibly combined) transactions - */ - if(transfer_state == I2C_TRANSFER_COMBINED_FIRST_MESSAGE - || transfer_state == I2C_TRANSFER_SINGLE) { - - reg |= I2C_CTRL_HOLD; - } - obj->i2c->CONTROL = reg; - - /* Set the expected number of bytes to be received */ - if (length > I2C_TRANSFER_SIZE) { - error("I2C transfer size too big for the FIFO"); - } - obj->i2c->TRANSFER_SIZE = length & I2C_TRANSFER_SIZE; - - clear_isr(obj); - - /* - * Start the transaction by writing address. - * Discard the lower bit as it is automatically set - * by the controller based on I2C_CTRL_RW bit in CONTROL - * register - */ - obj->i2c->ADDRESS = (address & 0xFF) >> 1; - - if(transfer_state == I2C_TRANSFER_COMBINED_LAST_MESSAGE - || transfer_state == I2C_TRANSFER_SINGLE) { - - /* Clear the hold bit before reading the DATA register */ - obj->i2c->CONTROL &= ~I2C_CTRL_HOLD; - } - - /* Wait for completion of the address transfer */ - int completion_timeout = 1000; - while (completion_timeout) { - completion_timeout--; - - uint32_t irq_status = obj->i2c->IRQ_STATUS; - if (irq_status & I2C_IRQ_NACK - || irq_status & I2C_IRQ_ARB_LOST) { - - retry = 1; - break; - } - - if(irq_status & I2C_IRQ_COMP) { - break; - } - } - - /* If retry, jump to the beginning and try again */ - if (retry || !completion_timeout) { - retry = 1; - continue; - } - - clear_isr(obj); - - /* Read the data from the DATA register */ - completion_timeout = 1000; - while (length && completion_timeout) { - completion_timeout--; - - uint32_t irq_status = obj->i2c->IRQ_STATUS; - uint32_t status = obj->i2c->STATUS; - - if(irq_status & I2C_IRQ_NACK || - irq_status & I2C_IRQ_ARB_LOST) { - - retry = 1; - break; - } - - /* - * Just wait for RXDV because COMP is only risen at the end - * of the transfer - */ - if (status & I2C_STATUS_RXDV) { - *data++ = obj->i2c->DATA & 0xFF; - length--; - bytes_read++; - } - - if (irq_status & I2C_IRQ_RX_UNF) { - error("Reading more bytes than the I2C transfer size"); - retry = 1; - break; - } - } - - /* If retry, jump to the beginning and try again */ - if (retry || !completion_timeout) { - retry = 1; - continue; - } - } while(retry && main_timeout); - - if (!main_timeout) { - bytes_read = 0; - data = data_backup; - } - - obj->i2c->CONTROL |= I2C_CTRL_CLR_FIFO; - clear_isr(obj); - return bytes_read; -} - -int i2c_write(i2c_t *obj, int address, const char *data, int length, - int stop) { - - int bytes_written = 0; - int length_backup = length; - const char *data_backup = data; - obj->last_xfer_address = address; - i2c_transfer_state_t transfer_state = update_transfer_state(obj, stop); - - /* Try to write until it finally succeed or times out */ - int main_timeout = 10; - int retry = 0; - do { - main_timeout--; - - retry = 0; - bytes_written = 0; - length = length_backup; - data = data_backup; - - /* Read the defined bits in the control register */ - uint32_t reg = obj->i2c->CONTROL & 0xff7f; - reg |= I2C_CTRL_CLR_FIFO; - reg &= ~I2C_CTRL_RW; - - /* - * Only touch the HOLD bit at the beginning of - * (possibly combined) transactions - */ - if(transfer_state == I2C_TRANSFER_COMBINED_FIRST_MESSAGE - || transfer_state == I2C_TRANSFER_SINGLE) { - - reg |= I2C_CTRL_HOLD; - } - obj->i2c->CONTROL = reg; - - clear_isr(obj); - - /* Set the expected number of bytes to be transmitted */ - if (length > I2C_TRANSFER_SIZE) { - error("I2C transfer size too big for the FIFO"); - } - - /* Set the expected number of bytes to be transmitted */ - obj->i2c->TRANSFER_SIZE = length & I2C_TRANSFER_SIZE; - - /* - * Write the address, triggering the start of the transfer - * Discard the lower bit as it is automatically set - * by the controller based on I2C_CTRL_RW bit in CONTROL - * register - */ - obj->i2c->ADDRESS = (address & 0xFF) >> 1; - - /* Send the data bytes */ - int write_timeout = 1000 + length; - while (length && write_timeout) { - write_timeout--; - uint32_t irq_status = obj->i2c->IRQ_STATUS; - /* If overflow, undo last step */ - if (irq_status & I2C_IRQ_TX_OVF) { - *data--; - length++; - bytes_written--; - /* Clear the bit by writing 1 to it */ - obj->i2c->IRQ_STATUS |= I2C_IRQ_TX_OVF; - } - - if (irq_status & I2C_IRQ_NACK - || irq_status & I2C_IRQ_ARB_LOST) { - - retry = 1; - break; - } - - obj->i2c->DATA = *data++; - length--; - bytes_written++; - } - - /* If retry, jump to the beginning and try again */ - if (retry || !write_timeout) { - retry = 1; - continue; - } - - if(transfer_state == I2C_TRANSFER_COMBINED_LAST_MESSAGE - || transfer_state == I2C_TRANSFER_SINGLE) { - /* - * Clear the hold bit to signify the end - * of the write sequence - */ - obj->i2c->CONTROL &= ~I2C_CTRL_HOLD; - } - - - /* Wait for transfer completion */ - int completion_timeout = 1000; - while (completion_timeout) { - completion_timeout--; - - uint32_t irq_status = obj->i2c->IRQ_STATUS; - if(irq_status & I2C_IRQ_NACK - || irq_status & I2C_IRQ_ARB_LOST) { - retry = 1; - break; - } - if(irq_status & I2C_IRQ_COMP) { - break; - } - } - - /* If retry, jump to the beginning and try again */ - if (retry || !completion_timeout) { - continue; - } - - obj->i2c->CONTROL |= I2C_CTRL_CLR_FIFO; - clear_isr(obj); - } while(retry && main_timeout); - - return bytes_written; -} - -void i2c_reset(i2c_t *obj) { - i2c_stop(obj); -} - -int i2c_byte_read(i2c_t *obj, int last) { - char i2c_ret = 0; - i2c_read(obj, obj->last_xfer_address, &i2c_ret, 1, last); - return i2c_ret; -} - -int i2c_byte_write(i2c_t *obj, int data) { - /* Store the number of written bytes */ - uint32_t wb = i2c_write(obj, obj->last_xfer_address, (char*)&data, 1, 0); - if (wb == 1) - return 1; - else - return 0; -} - -void i2c_slave_mode(i2c_t *obj, int enable_slave) { -} - -int i2c_slave_receive(i2c_t *obj) { - return 0; -} - -int i2c_slave_read(i2c_t *obj, char *data, int length) { - return 0; -} - -int i2c_slave_write(i2c_t *obj, const char *data, int length) { - return 0; -} - -void i2c_slave_address(i2c_t *obj, int idx, uint32_t address, uint32_t mask) { -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/i2c_def.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/i2c_def.h deleted file mode 100644 index b1b458d0b6d..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/i2c_def.h +++ /dev/null @@ -1,101 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -/* - * I2C interface Support - * ===================== - */ - -#ifndef MBED_I2C_DEF_H -#define MBED_I2C_DEF_H - -#include /* standard types definitions */ - -typedef struct beetle_i2c -{ - __IO uint32_t CONTROL; /* RW Control register */ - __I uint32_t STATUS; /* RO Status register */ - __IO uint32_t ADDRESS; /* RW I2C address register */ - __IO uint32_t DATA; /* RW I2C data register */ - __IO uint32_t IRQ_STATUS; /* RO Interrupt status register ( read only but write to clear bits) */ - __IO uint32_t TRANSFER_SIZE; /* RW Transfer size register */ - __IO uint32_t SLAVE_MONITOR; /* RW Slave monitor pause register */ - __IO uint32_t TIMEOUT; /* RW Time out register */ - __I uint32_t IRQ_MASK; /* RO Interrupt mask register */ - __O uint32_t IRQ_ENABLE; /* WO Interrupt enable register */ - __O uint32_t IRQ_DISABLE; /* WO Interrupt disable register */ - -}I2C_TypeDef; - -#define I2C0_BASE (0x40007000ul) /* Shield Header I2C Base Address */ -#define I2C1_BASE (0x4000E000ul) /* Onboard I2C Base Address */ - -#define SHIELD_I2C ((I2C_TypeDef *) I2C0_BASE ) -#define BOARD_I2C ((I2C_TypeDef *) I2C1_BASE ) - -/* Control Register Masks */ -#define I2C_CTRL_RW 0x0001 /* Transfer direction */ -#define I2C_CTRL_MS 0x0002 /* Mode (master / slave) */ -#define I2C_CTRL_NEA 0x0004 /* Addressing mode */ -#define I2C_CTRL_ACKEN 0x0008 /* ACK enable */ -#define I2C_CTRL_HOLD 0x0010 /* Clock hold enable */ -#define I2C_SLVMON 0x0020 /* Slave monitor mode */ -#define I2C_CTRL_CLR_FIFO 0x0040 /* Force clear of FIFO */ -#define I2C_CTRL_DIVISOR_B 0x3F00 /* Stage B clock divider */ -#define I2C_CTRL_DIVISOR_A 0xA000 /* Stage A clock divider */ -#define I2C_CTRL_DIVISORS 0xFF00 /* Combined A and B fields */ -#define I2C_CTRL_DIVISOR_OFFSET 8 /* Offset of the clock divisor in - * the CONTROL register - */ -#define I2C_CTRL_DIVISOR_A_BIT_MASK 0x03 - /* - * First part of the clock - * divisor in the CONTROL register - */ -#define I2C_CTRL_DIVISOR_B_BIT_MASK 0x3F - /* - * Second part of the clock - * divisor in the CONTROL register - */ - -/* Status Register Masks */ -#define I2C_STATUS_RXRW 0x0008 /* Mode of transmission from master */ -#define I2C_STATUS_RXDV 0x0020 /* Valid data waiting to be read */ -#define I2C_STATUS_TXDV 0x0040 /* Still a data byte to be sent */ -#define I2C_STATUS_RXOVF 0x0080 /* Receiver overflow */ -#define I2C_STATUS_BA 0x0100 /* Bus active */ - -/* Address Register Masks */ -#define I2C_ADDRESS_7BIT 0x007F - -/* Interrupt Status / Enable / Disable Register Masks */ -#define I2C_IRQ_COMP 0x0001 /* Transfer complete */ -#define I2C_IRQ_DATA 0x0002 /* More data */ -#define I2C_IRQ_NACK 0x0004 /* Transfer not acknowledged */ -#define I2C_IRQ_TO 0x0008 /* Transfer timed out */ -#define I2C_IRQ_SLV_RDY 0x0010 /* Monitored slave ready */ -#define I2C_IRQ_RX_OVF 0x0020 /* Receive overflow */ -#define I2C_IRQ_TX_OVF 0x0040 /* Transmit overflow */ -#define I2C_IRQ_RX_UNF 0x0080 /* Receive underflow */ -#define I2C_IRQ_ARB_LOST 0x0200 /* Arbitration lost */ - -/* Transfer Size Register Masks */ -#define I2C_TRANSFER_SIZE 0xFF - -/* Error codes */ -#define E_SUCCESS 0x0 -#define E_INCOMPLETE_DATA 0x1 - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/lp_ticker.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/lp_ticker.c deleted file mode 100644 index ffad5f34793..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/lp_ticker.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - * PackageLicenseDeclared: Apache-2.0 - * Copyright (c) 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. - */ - -#include "cmsis.h" -#include "device.h" -#include "objects.h" -#include "lp_ticker_api.h" - -/* Private lp_ticker data */ -/* lp_ticker initialize */ -static uint32_t lp_ticker_initialized = 0; -/* lp_ticker reload value */ -static uint32_t lp_ticker_reload = 0x0; /* Max Value */ -/* Store Overflow Delta */ -static uint32_t lp_ticker_overflows_delta = 0; -/* lp_ticker Overflow limit */ -static uint32_t lp_ticker_overflow_limit = 0; - -#if DEVICE_LPTICKER -/** - * Interrupt Handler - */ -void __lp_ticker_irq_handler(void) -{ - if (DualTimer_GetIRQInfo(DUALTIMER0) == SINGLETIMER2) { - DualTimer_ClearInterrupt(DUALTIMER0); - /* - * For each overflow event adds the timer max represented value to - * the delta. This allows the lp_ticker to keep track of the elapsed - * time: - * elapsed_time = (num_overflow * overflow_limit) + current_time - */ - lp_ticker_overflows_delta += lp_ticker_overflow_limit; - } else { - lp_ticker_irq_handler(); - } -} - -/** - * Initialize the low power ticker - */ -void lp_ticker_init(void) -{ - uint32_t lp_ticker_irqn = 0; - /* Verify if lp_ticker has been already Initialized */ - if (lp_ticker_initialized == 1) - { - return; - } - lp_ticker_initialized = 1; - - /* Dualtimer Initialize */ - DualTimer_Initialize(DUALTIMER0, lp_ticker_reload); - /* Dualtimer Enable */ - DualTimer_Enable(DUALTIMER0, DUALTIMER_COUNT_32 - //| DUALTIMER_PERIODIC - ); - /* DualTimer get IRQn */ - lp_ticker_irqn = DualTimer_GetIRQn(DUALTIMER0); - /* Enable lp_ticker IRQ */ - NVIC_SetVector((IRQn_Type)lp_ticker_irqn, - (uint32_t)__lp_ticker_irq_handler); - NVIC_EnableIRQ((IRQn_Type)lp_ticker_irqn); - - /* DualTimer set interrupt on SINGLETIMER2 */ - DualTimer_SetInterrupt_2(DUALTIMER0, DUALTIMER_DEFAULT_RELOAD, - DUALTIMER_COUNT_32 | DUALTIMER_PERIODIC); - - /* - * Set lp_ticker Overflow limit. The lp_ticker overflow limit is required - * to calculated the return value of the lp_ticker read function in us - * on 32bit. - * A 32bit us value cannot be represented directly in the Dual Timer Load - * register if it is greater than (0xFFFFFFFF ticks)/DUALTIMER_DIVIDER_US. - */ - lp_ticker_overflow_limit = DualTimer_GetReloadValue(DUALTIMER0, - SINGLETIMER2); -} - -/** - * Read the current counter - * @return: The current timer's counter value in microseconds - */ -uint32_t lp_ticker_read(void) -{ - uint32_t microseconds = 0; - - /* Verify if lp_ticker has not been Initialized */ - if (lp_ticker_initialized == 0) - lp_ticker_init(); - - /* Read Timer Value */ - microseconds = lp_ticker_overflows_delta + DualTimer_Read_2(DUALTIMER0); - - return microseconds; -} - -/** - * Set interrupt for specified timestamp - * timestamp: The time in microseconds to be set - */ -void lp_ticker_set_interrupt(timestamp_t timestamp) -{ - /* Verify if lp_ticker has been not Initialized */ - if (lp_ticker_initialized == 0) - lp_ticker_init(); - - /* Calculate the delta */ - uint32_t delta = timestamp - lp_ticker_read(); - - /* Enable interrupt on SingleTimer1 */ - DualTimer_SetInterrupt_1(DUALTIMER0, delta, - DUALTIMER_COUNT_32 | DUALTIMER_ONESHOT); -} - -void lp_ticker_fire_interrupt(void) -{ - uint32_t lp_ticker_irqn = DualTimer_GetIRQn(DUALTIMER0); - NVIC_SetPendingIRQ((IRQn_Type)lp_ticker_irqn); -} - -/** - * Disable low power ticker interrupt - */ -void lp_ticker_disable_interrupt(void) -{ - /* Disable Interrupt */ - DualTimer_DisableInterrupt(DUALTIMER0, - SINGLETIMER1); -} - -/** - * Clear the low power ticker interrupt - */ -void lp_ticker_clear_interrupt(void) -{ - /* Clear Interrupt */ - DualTimer_ClearInterrupt(DUALTIMER0); -} - -void lp_ticker_free(void) -{ - -} - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/mbed_sdk_init.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/mbed_sdk_init.c deleted file mode 100644 index 659675286fc..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/mbed_sdk_init.c +++ /dev/null @@ -1,30 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include "cmsis.h" - -void mbed_sdk_init(void) { - /* Beetle System Power Config */ - SystemPowerConfig(); - - /* Config EFlash Controller Clock */ - EFlash_DriverInitialize(); - EFlash_ClockConfig(); - - /* Enable Flash Cache Stats */ - FCache_DriverInitialize(); - FCache_Enable(1); - FCache_Invalidate(); -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/objects.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/objects.h deleted file mode 100644 index 92be5a56a0d..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/objects.h +++ /dev/null @@ -1,70 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" -#include "i2c_def.h" -#include "spi_def.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_dirclr; - __IO uint32_t *reg_out; - __IO uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct serial_s { - CMSDK_UART_TypeDef *uart; - int index; -}; - -struct i2c_s { - I2C_TypeDef *i2c; - uint16_t last_xfer_address; -}; - -struct spi_s { - SPI_TypeDef *spi; -}; - -struct analogin_s { - ADCName adc; - PinName pin; - uint32_t pin_number; - __IO uint32_t address; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/pinmap.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/pinmap.c deleted file mode 100644 index f1e3f688560..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/pinmap.c +++ /dev/null @@ -1,27 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include "mbed_assert.h" -#include "pinmap.h" -#include "mbed_error.h" - -void pin_function(PinName pin, int function) { - MBED_ASSERT(pin != (PinName)NC); - -} - -void pin_mode(PinName pin, PinMode mode) { - MBED_ASSERT(pin != (PinName)NC); -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/port_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/port_api.c deleted file mode 100644 index ad71199cf2e..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/port_api.c +++ /dev/null @@ -1,70 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include "port_api.h" -#include "pinmap.h" -#include "gpio_api.h" - -PinName port_pin(PortName port, int pin_n) { - return (PinName)((port << PORT_SHIFT) | pin_n); -} - -void port_init(port_t *obj, PortName port, int mask, PinDirection dir) { - obj->port = port; - obj->mask = mask; - - CMSDK_GPIO_TypeDef *port_reg = - (CMSDK_GPIO_TypeDef *)(CMSDK_GPIO0_BASE + ((int)port * 0x10)); - - obj->reg_in = &port_reg->DATAOUT; - obj->reg_dir = &port_reg->OUTENABLESET; - obj->reg_dirclr = &port_reg->OUTENABLECLR; - - uint32_t i; - // The function is set per pin: reuse gpio logic - for (i=0; i<16; i++) { - if (obj->mask & (1<port, i)); - } - } - - port_dir(obj, dir); -} - -void port_mode(port_t *obj, PinMode mode) { - uint32_t i; - // The mode is set per pin: reuse pinmap logic - for (i=0; i<32; i++) { - if (obj->mask & (1<port, i), mode); - } - } -} - -void port_dir(port_t *obj, PinDirection dir) { - switch (dir) { - case PIN_INPUT : *obj->reg_dir &= ~obj->mask; break; - case PIN_OUTPUT: *obj->reg_dir |= obj->mask; break; - } -} - -void port_write(port_t *obj, int value) { - *obj->reg_in = value; -} - -int port_read(port_t *obj) { - return (*obj->reg_in); -} - diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/serial_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/serial_api.c deleted file mode 100644 index 469d061e157..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/serial_api.c +++ /dev/null @@ -1,330 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -// math.h required for floating point operations for baud rate calculation -#include -#include -#include -#include - -#include "serial_api.h" -#include "cmsis.h" -#include "pinmap.h" -#include "PinNames.h" -#include "mbed_error.h" -#include "gpio_api.h" - -/****************************************************************************** - * INITIALIZATION - ******************************************************************************/ - -static const PinMap PinMap_UART_TX[] = { - {UART_TX0, UART_0, 0}, - {UART_TX1, UART_1, 0}, - {NC, NC, 0} -}; - -static const PinMap PinMap_UART_RX[] = { - {UART_RX0, UART_0, 0}, - {UART_RX1, UART_1, 0}, - {NC, NC, 0} -}; - -#define UART_NUM 2 - -static uart_irq_handler irq_handler; - -int stdio_uart_inited = 0; -serial_t stdio_uart; - -struct serial_global_data_s { - uint32_t serial_irq_id; - gpio_t sw_rts, sw_cts; - uint8_t count, rx_irq_set_flow, rx_irq_set_api; -}; - -static struct serial_global_data_s uart_data[UART_NUM]; - -void serial_init(serial_t *obj, PinName tx, PinName rx) { - int is_stdio_uart = 0; - - // determine the UART to use - UARTName uart_tx = (UARTName)pinmap_peripheral(tx, PinMap_UART_TX); - UARTName uart_rx = (UARTName)pinmap_peripheral(rx, PinMap_UART_RX); - UARTName uart = (UARTName)pinmap_merge(uart_tx, uart_rx); - if ((int)uart == NC) { - error("Serial pinout mapping failed"); - } - - obj->uart = (CMSDK_UART_TypeDef *)uart; - //set baud rate and enable Uart in normarl mode (RX and TX enabled) - switch (uart) { - case UART_0: - { - CMSDK_UART0->CTRL = 0; // Disable UART when changing configuration - if ((int)tx != NC) { - CMSDK_UART0->CTRL = 0x1; // TX enable - } - if ((int)rx != NC) { - CMSDK_UART0->CTRL |= 0x2; // RX enable - } - } - break; - case UART_1: - { - CMSDK_UART1->CTRL = 0; // Disable UART when changing configuration - if((int)tx != NC) { - CMSDK_UART1->CTRL = 0x1; // TX enable - } - if((int)rx != NC) { - CMSDK_UART1->CTRL |= 0x2; // RX enable - } - } - break; - } - - // set default baud rate and format - serial_baud(obj, 9600); - - // pinout the chosen uart - pinmap_pinout(tx, PinMap_UART_TX); - pinmap_pinout(rx, PinMap_UART_RX); - - switch (uart) { - case UART_0: - obj->index = 0; - break; - case UART_1: - obj->index = 1; - break; - } - uart_data[obj->index].sw_rts.pin = NC; - uart_data[obj->index].sw_cts.pin = NC; - serial_set_flow_control(obj, FlowControlNone, NC, NC); - - is_stdio_uart = (uart == STDIO_UART) ? (1) : (0); - - if (is_stdio_uart) { - stdio_uart_inited = 1; - memcpy(&stdio_uart, obj, sizeof(serial_t)); - } -} - -void serial_free(serial_t *obj) { - uart_data[obj->index].serial_irq_id = 0; -} - -// serial_baud -// set the baud rate, taking in to account the current SystemFrequency -void serial_baud(serial_t *obj, int baudrate) { - // BEETLE has a simple divider to control the baud rate. The formula is: - // - // Baudrate = PCLK / BAUDDIV - // - // PCLK = SystemCoreClock - // so for a desired baud rate of 9600 - // SystemCoreClock / 9600 - // - //check to see if minimum baud value entered - int baudrate_div = 0; - baudrate_div = SystemCoreClock / baudrate; - if (baudrate >= 16) { - switch ((int)obj->uart) { - case UART_0: - CMSDK_UART0->BAUDDIV = baudrate_div; - break; - case UART_1: - CMSDK_UART1->BAUDDIV = baudrate_div; - break; - default: - error("serial_baud"); - break; - } - } else { - error("serial_baud"); - } - -} - -void serial_format(serial_t *obj, int data_bits, - SerialParity parity, int stop_bits) { -} - -/****************************************************************************** - * INTERRUPTS HANDLING - ******************************************************************************/ -static inline void uart_irq(uint32_t intstatus, uint32_t index, - CMSDK_UART_TypeDef *puart) { - SerialIrq irq_type; - switch (intstatus) { - case 1: - { - irq_type = TxIrq; - } - break; - - case 2: - { - irq_type = RxIrq; - } - break; - - default: return; - } /* End of Switch */ - - if ((irq_type == RxIrq) && (NC != uart_data[index].sw_rts.pin)) { - gpio_write(&uart_data[index].sw_rts, 1); - // Disable interrupt if it wasn't enabled by other part of the application - if (!uart_data[index].rx_irq_set_api) { - // puart->CTRL &= ~(1 << RxIrq); - /* Disable Rx interrupt */ - puart->CTRL &= ~(CMSDK_UART_CTRL_RXIRQEN_Msk); - } - } - - if (uart_data[index].serial_irq_id != 0) { - if ((irq_type != RxIrq) || (uart_data[index].rx_irq_set_api)) { - irq_handler(uart_data[index].serial_irq_id, irq_type); - } - } - - if( irq_type == TxIrq ) { - /* Clear the TX interrupt Flag */ - puart->INTCLEAR |= 0x01; - } else { - /* Clear the Rx interupt Flag */ - puart->INTCLEAR |= 0x02; - } -} - -void uart0_irq() { - uart_irq(CMSDK_UART0->INTSTATUS & 0x3, 0, - (CMSDK_UART_TypeDef*)CMSDK_UART0); -} - -void uart1_irq() { - uart_irq(CMSDK_UART1->INTSTATUS & 0x3, 1, - (CMSDK_UART_TypeDef*)CMSDK_UART1); -} - -void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) { - irq_handler = handler; - uart_data[obj->index].serial_irq_id = id; -} - -static void serial_irq_set_internal(serial_t *obj, SerialIrq irq, uint32_t enable) { - /* Declare a variable of type IRQn, initialise to 0 */ - IRQn_Type irq_n = (IRQn_Type)0; - uint32_t vector = 0; - switch ((int)obj->uart) { - - /********************************************************************* - * BEETLE SOC BOARD * - *********************************************************************/ - case UART_0: - { - irq_n = UART0_IRQn; - vector = (uint32_t)&uart0_irq; - } - break; - case UART_1: - { - irq_n = UART1_IRQn; - vector = (uint32_t)&uart1_irq; - } - break; - } - - if (enable) { - if(irq == TxIrq) { - /* Transmit IRQ, set appripriate enable */ - - /* set TX interrupt enable in CTRL REG */ - obj->uart->CTRL |= CMSDK_UART_CTRL_TXIRQEN_Msk; - } else { - /* set Rx interrupt on in CTRL REG */ - obj->uart->CTRL |= CMSDK_UART_CTRL_RXIRQEN_Msk; - } - NVIC_SetVector(irq_n, vector); - NVIC_EnableIRQ(irq_n); - - } else if ((irq == TxIrq) || (uart_data[obj->index].rx_irq_set_api - + uart_data[obj->index].rx_irq_set_flow == 0)) { - /* Disable IRQ */ - int all_disabled = 0; - SerialIrq other_irq = (irq == RxIrq) ? (TxIrq) : (RxIrq); - - obj->uart->CTRL &= ~(1 << (irq + 2)); - - all_disabled = (obj->uart->CTRL & (1 << (other_irq + 2))) == 0; - - if (all_disabled) { - NVIC_DisableIRQ(irq_n); - } - } -} - -void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) { - if (RxIrq == irq) - uart_data[obj->index].rx_irq_set_api = enable; - serial_irq_set_internal(obj, irq, enable); -} - -/****************************************************************************** - * READ/WRITE - ******************************************************************************/ -int serial_getc(serial_t *obj) { - while (serial_readable(obj) == 0); - int data = obj->uart->DATA; - return data; -} - -void serial_putc(serial_t *obj, int c) { -#ifdef SERIAL_TEST - // Add CR to LF - if (c == 0x0A) { - while (serial_writable(obj)); - obj->uart->DATA = 0x0D; - } -#endif - - while (serial_writable(obj)); - obj->uart->DATA = c; -} - -int serial_readable(serial_t *obj) { - return obj->uart->STATE & 2; -} - -int serial_writable(serial_t *obj) { - return obj->uart->STATE & 1; -} - -void serial_clear(serial_t *obj) { - obj->uart->DATA = 0x00; -} - -void serial_pinout_tx(PinName tx) { - pinmap_pinout(tx, PinMap_UART_TX); -} - -void serial_break_set(serial_t *obj) { -} - -void serial_break_clear(serial_t *obj) { -} -void serial_set_flow_control(serial_t *obj, FlowControl type, - PinName rxflow, PinName txflow) { -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/sleep.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/sleep.c deleted file mode 100644 index d6a64362b76..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/sleep.c +++ /dev/null @@ -1,29 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include "sleep_api.h" -#include "cmsis.h" - - void hal_sleep(void) - { - SystemPowerSuspend(POWER_MODE_SLEEP); - SystemPowerResume(POWER_MODE_SLEEP); - } - -void hal_deepsleep(void) -{ - SystemPowerSuspend(POWER_MODE_DEEP_SLEEP); - SystemPowerResume(POWER_MODE_DEEP_SLEEP); -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/spi_api.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/spi_api.c deleted file mode 100644 index 8385ecedae2..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/spi_api.c +++ /dev/null @@ -1,286 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include - -#include "spi_api.h" -#include "spi_def.h" -#include "cmsis.h" -#include "pinmap.h" -#include "mbed_error.h" -#include "mbed_wait_api.h" - -/* - * Driver private data structure that should not be shared by multiple - * instances of the driver (same driver for multiple instances of the IP) - */ -typedef struct { - uint32_t size; /* size of an SPI frame in bits: can be 8 or 16 */ -} private_spi_t; - -static const PinMap PinMap_SPI_SCLK[] = { - {SHIELD_SPI_SCK , SPI_0, 0}, - {ADC_SPI_SCK , SPI_1, 0}, - {NC, NC, 0} -}; - -static const PinMap PinMap_SPI_MOSI[] = { - {SHIELD_SPI_MOSI, SPI_0, 0}, - {ADC_SPI_MOSI, SPI_1, 0}, - {NC, NC, 0} -}; - -static const PinMap PinMap_SPI_MISO[] = { - {SHIELD_SPI_MISO, SPI_0, 0}, - {ADC_SPI_MISO, SPI_1, 0}, - {NC, NC, 0} -}; - -static const PinMap PinMap_SPI_SSEL[] = { - {SHIELD_SPI_nCS, SPI_0, 0}, - {ADC_SPI_nCS, SPI_1, 0}, - {NC, NC, 0} -}; - -/* - * Retrieve the private data of the instance related to a given IP - */ -static private_spi_t* get_spi_private(spi_t *obj) { - static private_spi_t data0, data1; - /* - * Select which instance to give using the base - * address of registers - */ - switch ((intptr_t)obj->spi) { - case SPI0_BASE: - return &data0; - case SPI1_BASE: - return &data1; - default: - error("SPI driver private data structure not found for this registers base address"); - return (void*)0; - } -} - -void spi_init(spi_t *obj, PinName mosi, - PinName miso, PinName sclk, PinName ssel) { - // determine the SPI to use - SPIName spi_mosi = (SPIName)pinmap_peripheral(mosi, PinMap_SPI_MOSI); - SPIName spi_miso = (SPIName)pinmap_peripheral(miso, PinMap_SPI_MISO); - SPIName spi_sclk = (SPIName)pinmap_peripheral(sclk, PinMap_SPI_SCLK); - SPIName spi_ssel = (SPIName)pinmap_peripheral(ssel, PinMap_SPI_SSEL); - SPIName spi_data = (SPIName)pinmap_merge(spi_mosi, spi_miso); - SPIName spi_cntl = (SPIName)pinmap_merge(spi_sclk, spi_ssel); - obj->spi = (SPI_TypeDef*)pinmap_merge(spi_data, spi_cntl); - if ((int)obj->spi == NC) { - error("SPI pinout mapping failed"); - } - - /* Set default format and frequency */ - if (ssel == NC) { - spi_format(obj, 8, 0, 0); // 8 bits, mode SPI_MSB, master - } else { - spi_format(obj, 8, 0, 1); // 8 bits, mode SPI_LSB, slave - } - spi_frequency(obj, 1562500); - - /* Pin out the spi pins */ - pinmap_pinout(mosi, PinMap_SPI_MOSI); - pinmap_pinout(miso, PinMap_SPI_MISO); - pinmap_pinout(sclk, PinMap_SPI_SCLK); - if (ssel != NC) { - pinmap_pinout(ssel, PinMap_SPI_SSEL); - } - - /* - * Set desired enabled IRQs: - * MF: Mode Fail - * TF: TX FIFO Full - * TNF: TX FIFO Not Full - * RNE: RX FIFO Not Empty - */ - uint32_t irqs = (IRQ_ENABLE_MFE | IRQ_ENABLE_TFE - | IRQ_ENABLE_TNFE | IRQ_ENABLE_RNEE); - - /* - * Enable: - * - Master mode - * - Manual start mode - * - Manual chip select - * - Peripheral select decode - */ - obj->spi->CONFIG |= (CONFIG_MSEL | CONFIG_MSE - /*| CONFIG_MCSE | CONFIG_PSD*/); - - /* Set all peripheral select lines high - these should be unused */ - obj->spi->CONFIG |= 0x00000; //CONFIG_PCSL; - - obj->spi->IRQ_ENABLE = irqs; - obj->spi->IRQ_DISABLE = ~irqs; - obj->spi->SPI_ENABLE |= SPI_ENABLE_SPIE; -} - -void spi_free(spi_t *obj) { -} - -void spi_format(spi_t *obj, int bits, int mode, int slave) { - private_spi_t *private_spi = get_spi_private(obj); - - obj->spi->SPI_ENABLE &= ~SPI_ENABLE_SPIE; - - /* - * The mbed API specifies 'bits' as being 4-16 per frame. This - * controller supports only 8 or 16 bit frames. Therefore we will - * assume 8 bits and, if anything larger is specified, we will use - * 16 bits. - */ - obj->spi->CONFIG &= ~CONFIG_TWS; /* 00 = 8 bit frame */ - private_spi->size = 8; - - if (bits > 8) { - switch (bits) { - case 16: - private_spi->size = 16; - break; - default: - obj->spi->CONFIG |= CONFIG_TWS_1; /* 01 = 16 bit frame */ - break; - } - } - - switch (mode) { - default: - case 0: - obj->spi->CONFIG &= ~CONFIG_CPOL; - obj->spi->CONFIG &= ~CONFIG_CPHA; - break; - case 1: - obj->spi->CONFIG &= ~CONFIG_CPOL; - obj->spi->CONFIG |= CONFIG_CPHA; - break; - case 2: - obj->spi->CONFIG |= CONFIG_CPOL; - obj->spi->CONFIG &= ~CONFIG_CPHA; - break; - case 3: - obj->spi->CONFIG |= CONFIG_CPOL; - obj->spi->CONFIG |= CONFIG_CPHA; - break; - } - - obj->spi->SPI_ENABLE |= SPI_ENABLE_SPIE; -} - -void spi_frequency(spi_t *obj, int hz) { - /* - * Valid frequencies are derived from a 25MHz peripheral clock. - * Frequency | Divisor | MBRD Value | Hz - * 12.0 MHz 2 000 12000000 - * 6.0 MHz 4 001 6000000 - * 3.0 MHz 8 010 3000000 - * 1.5 MHz 16 011 1500000 - * 750.0 KHz 32 100 750000 - * 375.0 KHz 64 101 375000 - * 187.500 KHz 128 110 187500 - * 93.750 KHz 256 111 93750 - */ - int valid_frequencies[] = {12000000, 6000000, 3000000, 1500000, - 750000, 375000, 187500, 93750}; - uint16_t mbrd_value = 0; - uint32_t config = (obj->spi->CONFIG & ~CONFIG_MBRD); - - /* Store the index of the minimum supported frequency */ - uint32_t index = 7; - - for (int i = 0; i < 8; i++) { - if (hz >= valid_frequencies[i]) { - /* - * Store the index of the closest lower or equal supported - * frequency. - */ - index = i; - break; - } - - mbrd_value++; - } - - /* - * Set the selected frequency. If the frequency is below the minimum - * supported the driver sets the minumum. - */ - config |= index << CONFIG_MBRD_SHIFT; - - /* - * If the specified frequency didn't match any of the valid frequencies - * then leave CONFIG_MBRD to the closest lower frequency supported. - */ - obj->spi->CONFIG = config; -} - -int spi_master_write(spi_t *obj, int value) { - private_spi_t *private_spi = get_spi_private(obj); - - int data = 0; - if(private_spi->size == 16) { - obj->spi->TX_DATA = (uint8_t)((value >> 8) & TX_DATA_TDATA); - obj->spi->TX_DATA = (uint8_t)(value & TX_DATA_TDATA); - - /* Manually trigger start */ - obj->spi->CONFIG |= CONFIG_MSC; - - while(!(obj->spi->IRQ_STATUS & IRQ_STATUS_TNF)) - continue; - - data = (obj->spi->RX_DATA & RX_DATA_RDATA) << 8; - data = data | (obj->spi->RX_DATA & RX_DATA_RDATA); - } else { - - obj->spi->TX_DATA = (uint16_t)(value & TX_DATA_TDATA); - - /* Manually trigger start */ - obj->spi->CONFIG |= CONFIG_MSC; - - while(!(obj->spi->IRQ_STATUS & IRQ_STATUS_TNF)) - continue; - - data = obj->spi->RX_DATA & RX_DATA_RDATA; - } - - return data; -} - -int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, - char *rx_buffer, int rx_length, char write_fill) { - int total = (tx_length > rx_length) ? tx_length : rx_length; - - for (int i = 0; i < total; i++) { - char out = (i < tx_length) ? tx_buffer[i] : write_fill; - char in = spi_master_write(obj, out); - if (i < rx_length) { - rx_buffer[i] = in; - } - } - - return total; -} - -uint8_t spi_get_module(spi_t *obj) { - return obj->spi->MID; -} - -int spi_busy(spi_t *obj) { - return 0; -} diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/spi_def.h b/targets/TARGET_ARM_SSG/TARGET_BEETLE/spi_def.h deleted file mode 100644 index 2555b32aec9..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/spi_def.h +++ /dev/null @@ -1,134 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -/* - * SSP interface Support - * ===================== - */ - -#ifndef MBED_SPI_DEF_H -#define MBED_SPI_DEF_H - -#include /* standard types definitions */ - -#define Module_ID 0x00090108 - -typedef struct beetle_spi -{ - __IO uint32_t CONFIG; /* 0x00 RW Configuration Register */ - __I uint32_t IRQ_STATUS; /* 0x04 RO Interrupt Status Register*/ - __O uint32_t IRQ_ENABLE; /* 0x08 WO Interrupt Enable Register*/ - __O uint32_t IRQ_DISABLE; /* 0x0C WO Interrupt Disable Register */ - __I uint32_t IRQ_MASK; /* 0x10 RO Interrupt Mask Register */ - __IO uint32_t SPI_ENABLE; /* 0x14 RW SPI Enable Register */ - __IO uint32_t DELAY; /* 0x18 RW Delay Register */ - __O uint32_t TX_DATA; /* 0x1C WO Transmit Data Register */ - __I uint32_t RX_DATA; /* 0x20 RO Receive Data Register */ - __IO uint32_t SLAVE_IDLE_COUNT; /* 0x24 RW Slave Idle Count Register */ - __IO uint32_t TX_THRESHOLD; /* 0x28 RW TX Threshold Register */ - __IO uint32_t RX_THRESHOLD; /* 0x2C RW RX Threshold Register */ - uint32_t reserved[208]; - __I uint32_t MID; /* 0xFC RO Module ID Register */ -}SPI_TypeDef; - - -#define SPI0_BASE (0x4000C000ul) /* Shield Header SPI Base Address */ -#define SPI1_BASE (0x4000D000ul) /* ADC SPI Base Address */ - -#define SHIELD_SPI ((SPI_TypeDef *) SPI0_BASE ) -#define ADC_SPI ((SPI_TypeDef *) SPI1_BASE ) - -/* Configuration Register Bit Masks */ -#define CONFIG_MSEL 0x00001 // Bit [00] MSEL Mode Select -#define CONFIG_CPOL 0x00002 // Bit [01] CPOL External Clock Edge -#define CONFIG_CPHA 0x00004 // Bit [02] CPHA Clock Phase -#define CONFIG_MBRD 0x00038 // Bits [05:03] MBRD Master Baud Rate Divisor (2 to 256) -#define CONFIG_MBRD_0 0x00008 -#define CONFIG_MBRD_1 0x00010 -#define CONFIG_MBRD_2 0x00020 -#define CONFIG_MBRD_SHIFT 3 -#define CONFIG_TWS 0x000C0 // Bits [07:06] TWS Transfer Word Size -#define CONFIG_TWS_0 0x00000 -#define CONFIG_TWS_1 0x00040 -#define CONFIG_MRCS 0x00100 // Bit [08] MRCS Reference Clock Select -#define CONFIG_PSD 0x00200 // Bit [09] PSD Peripheral Select Decode -#define CONFIG_PCSL 0x03C00 // Bits [13:10] PCSL Peripheral Chip Select Lines (master mode only) -#define CONFIG_MCSE 0x04000 // Bit [14] MCSE Manual Chip Select Enable -#define CONFIG_MSE 0x08000 // Bit [15] MSE Manual Start Enable -#define CONFIG_MSC 0x10000 // Bit [16] MSC Manual Start Command -#define CONFIG_MFGE 0x20000 // Bit [17] MFGE Mode Fail Generation Enable -#define CONFIG_SPSE 0x40000 // Bit [18] SPSE Sample Point Shift Enable - -/* Interrupt Status Register Bit Masks */ -#define IRQ_STATUS_ROF 0x01 // Bit [00] ROF RX FIFO Overflow -#define IRQ_STATUS_MF 0x02 // Bit [01] MF Mode Fail -#define IRQ_STATUS_TNF 0x04 // Bit [02] TNF TX FIFO Not Full (current FIFO status) -#define IRQ_STATUS_TF 0x08 // Bit [03] TF TX FIFO Full (current FIFO status) -#define IRQ_STATUS_RNE 0x10 // Bit [04] RNE RX FIFO Not Empty (current FIFO status) -#define IRQ_STATUS_RF 0x20 // Bit [05] RF RX FIFO Full (current FIFO status) -#define IRQ_STATUS_TUF 0x40 // Bit [06] TUF TX FIFO Underflow - -/* Interrupt Enable Register Bit Masks */ -#define IRQ_ENABLE_ROFE 0x01 // Bit [00] ROFE RX FIFO Overflow Enable -#define IRQ_ENABLE_MFE 0x02 // Bit [01] MFE Mode Fail Enable -#define IRQ_ENABLE_TNFE 0x04 // Bit [02] TNFE TX FIFO Not Full Enable -#define IRQ_ENABLE_TFE 0x08 // Bit [03] TFE TX FIFO Full Enable -#define IRQ_ENABLE_RNEE 0x10 // Bit [04] RNEE RX FIFO Not Empty Enable -#define IRQ_ENABLE_RFE 0x20 // Bit [05] RFE RX FIFO Full Enable -#define IRQ_ENABLE_TUFE 0x40 // Bit [06] TUFE TX FIFO Underflow Enable - -/* Interrupt Disable Register Bit Masks */ -#define IRQ_DISABLE_ROFD 0x01 // Bit [00] ROFD RX FIFO Overflow Disable -#define IRQ_DISABLE_MFD 0x02 // Bit [01] MFD Mode Fail Disable -#define IRQ_DISABLE_TNFD 0x04 // Bit [02] TNFD TX FIFO Not Full Disable -#define IRQ_DISABLE_TFD 0x08 // Bit [03] TFD TX FIFO Full Disable -#define IRQ_DISABLE_RNED 0x10 // Bit [04] RNED RX FIFO Not Empty Disable -#define IRQ_DISABLE_RFD 0x20 // Bit [05] RFD RX FIFO Full Disable -#define IRQ_DISABLE_TUFD 0x40 // Bit [06] TUFD TX FIFO Underflow Disable - -/* Interrupt Mask Register Bit Masks */ -#define IRQ_MASK_ROFM 0x01 // Bit [00] ROFM RX FIFO Overflow Mask -#define IRQ_MASK_MFM 0x02 // Bit [01] MFM Mode Fail Mask -#define IRQ_MASK_TNFM 0x04 // Bit [02] TNFM TX FIFO Not Full Mask -#define IRQ_MASK_TFM 0x08 // Bit [03] TFM TX FIFO Full Mask -#define IRQ_MASK_RNEM 0x10 // Bit [04] RNEM RX FIFO Not Empty Mask -#define IRQ_MASK_RFM 0x20 // Bit [05] RFM RX FIFO Full Mask -#define IRQ_MASK_TUFM 0x40 // Bit [06] TUFM TX FIFO Underflow Mask - -/* SPI Enable Register Bit Masks */ -#define SPI_ENABLE_SPIE 0x01 // Bit [00] SPIE SPI Enable - -/* Delay Register Bit Masks */ -#define DELAY_D_INIT 0x000000FF // Bits [07:00] D_INIT Delay Init -#define DELAY_D_AFTER 0x0000FF00 // Bits [15:08] D_AFTER Delay After -#define DELAY_D_BTWN 0x00FF0000 // Bits [23:16] D_BTWN Delay Between -#define DELAY_D_NSS 0xFF000000 // Bits [31:24] D_NSS Delay NSS - -/* Transmit Data Register Bit Masks */ -#define TX_DATA_TDATA 0xFF - -/* Receive Data Register Bit Masks */ -#define RX_DATA_RDATA 0xFF - -/* Slave Idle Count Register Bit Masks */ -#define SLAVE_IDLE_COUNT_SICNT 0xFF // Bits [07:00] SICNT Slave Idle Count - -/* TX Threshold Register Bit Masks */ -#define TX_THRESHOLD_TTRSH 0x07 // Bits [N:00] TTRSH TX Threshold - -/* RX Threshold Register Bit Masks */ -#define RX_THRESHOLD_RTRSH 0x07 // Bits [N:00] RTRSH RX Threshold - -#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_BEETLE/us_ticker.c b/targets/TARGET_ARM_SSG/TARGET_BEETLE/us_ticker.c deleted file mode 100644 index 79b305242bd..00000000000 --- a/targets/TARGET_ARM_SSG/TARGET_BEETLE/us_ticker.c +++ /dev/null @@ -1,118 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 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. - */ -#include -#include "cmsis.h" -#include "us_ticker_api.h" -#include "PeripheralNames.h" -/* Private data */ -/* us_ticker reload value */ -static uint32_t us_ticker_reload = 0x0; /* Max Value */ -/* us ticker initialized */ -static uint32_t us_ticker_inited = 0; -/* us ticker overflow */ -static uint32_t us_ticker_overflow_delta = 0; -/* us ticker overflow limit */ -static uint32_t us_ticker_overflow_limit = 0; - -void __us_ticker_irq_handler(void) { - Timer_ClearInterrupt(TIMER1); - /* - * For each overflow event adds the timer max represented value to - * the delta. This allows the us_ticker to keep track of the elapsed - * time: - * elapsed_time = (num_overflow * overflow_limit) + current_time - */ - us_ticker_overflow_delta += us_ticker_overflow_limit; -} - -void us_ticker_init(void) { - uint32_t us_ticker_irqn0 = 0; - uint32_t us_ticker_irqn1 = 0; - - if (us_ticker_inited) - return; - us_ticker_inited = 1; - - /* Initialize Timer 0 */ - Timer_Initialize(TIMER0, us_ticker_reload); - /* Enable Timer 0 */ - Timer_Enable(TIMER0); - - /* Initialize Timer 1 */ - Timer_Initialize(TIMER1, us_ticker_reload); - /* Enable Timer 1 */ - Timer_Enable(TIMER1); - - /* Timer 0 get IRQn */ - us_ticker_irqn0 = Timer_GetIRQn(TIMER0); - NVIC_SetVector((IRQn_Type)us_ticker_irqn0, (uint32_t)us_ticker_irq_handler); - NVIC_EnableIRQ((IRQn_Type)us_ticker_irqn0); - - /* Timer 1 get IRQn */ - us_ticker_irqn1 = Timer_GetIRQn(TIMER1); - NVIC_SetVector((IRQn_Type)us_ticker_irqn1, (uint32_t)__us_ticker_irq_handler); - NVIC_EnableIRQ((IRQn_Type)us_ticker_irqn1); - - /* Timer set interrupt on TIMER1 */ - Timer_SetInterrupt(TIMER1, TIMER_DEFAULT_RELOAD); - - /* - * Set us_ticker Overflow limit. The us_ticker overflow limit is required - * to calculated the return value of the us_ticker read function in us - * on 32bit. - * A 32bit us value cannot be represented directly in the Timer Load - * register if it is greater than (0xFFFFFFFF ticks)/TIMER_DIVIDER_US. - */ - us_ticker_overflow_limit = Timer_GetReloadValue(TIMER1); -} - -uint32_t us_ticker_read() { - uint32_t return_value = 0; - - if (!us_ticker_inited) - us_ticker_init(); - - return_value = us_ticker_overflow_delta + Timer_Read(TIMER1); - - return return_value; -} - -void us_ticker_set_interrupt(timestamp_t timestamp) { - if (!us_ticker_inited) - us_ticker_init(); - - uint32_t delta = timestamp - us_ticker_read(); - Timer_SetInterrupt(TIMER0, delta); -} - -void us_ticker_fire_interrupt(void) -{ - uint32_t us_ticker_irqn1 = Timer_GetIRQn(TIMER0); - NVIC_SetPendingIRQ((IRQn_Type)us_ticker_irqn1); -} - -void us_ticker_disable_interrupt(void) { - Timer_DisableInterrupt(TIMER0); -} - -void us_ticker_clear_interrupt(void) { - Timer_ClearInterrupt(TIMER0); -} - -void us_ticker_free(void) -{ - -} diff --git a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/analogin_api.c b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/analogin_api.c index 09028abdb1e..323d5ee87c1 100644 --- a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/analogin_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/analogin_api.c @@ -151,3 +151,8 @@ float analogin_read(analogin_t *obj) return (result * (1. / MAXIMUM_VALUE_12_BITS)); } + +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/i2c_api.c b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/i2c_api.c index 0ecff722801..dbd360d962f 100644 --- a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/i2c_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/i2c_api.c @@ -271,3 +271,23 @@ int i2c_byte_write(i2c_t *obj, int data) return ack; } + +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_I2C_SCL; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/serial_api.c b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/serial_api.c index ab97bc26271..6140eb0b934 100644 --- a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/serial_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/serial_api.c @@ -391,3 +391,34 @@ void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, error("serial_set_flow_control function not supported"); } +const PinMap *serial_tx_pinmap() +{ + return PinMap_UART_TX; +} + +const PinMap *serial_rx_pinmap() +{ + return PinMap_UART_RX; +} + +const PinMap *serial_cts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_CTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_CTS; +} + +const PinMap *serial_rts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_RTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_RTS; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/spi_api.c b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/spi_api.c index 3ce247cc937..72b9a588e4e 100644 --- a/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/spi_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_CM3DS_MPS2/spi_api.c @@ -263,3 +263,43 @@ int spi_busy(spi_t *obj) int32_t status = spi_pl022_get_status(obj->spi); return (status & SPI_PL022_SSPSR_BSY_MSK); } + +const PinMap *spi_master_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_master_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_master_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_master_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + +const PinMap *spi_slave_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_slave_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_slave_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_slave_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_IOTSS/analogin_api.c b/targets/TARGET_ARM_SSG/TARGET_IOTSS/analogin_api.c index bef3fb5f5f4..60f8220be10 100644 --- a/targets/TARGET_ARM_SSG/TARGET_IOTSS/analogin_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_IOTSS/analogin_api.c @@ -108,3 +108,7 @@ uint16_t analogin_read_u16(analogin_t *obj) { return 0; } +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_IOTSS/i2c_api.c b/targets/TARGET_ARM_SSG/TARGET_IOTSS/i2c_api.c index 49e0e8c4581..9cb12e7d275 100644 --- a/targets/TARGET_ARM_SSG/TARGET_IOTSS/i2c_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_IOTSS/i2c_api.c @@ -521,3 +521,23 @@ int i2c_byte_read(i2c_t *obj, int last) { int i2c_byte_write(i2c_t *obj, int data) { return 0; } + +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_I2C_SCL; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_IOTSS/serial_api.c b/targets/TARGET_ARM_SSG/TARGET_IOTSS/serial_api.c index d8b281afa41..a01c147fb3b 100644 --- a/targets/TARGET_ARM_SSG/TARGET_IOTSS/serial_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_IOTSS/serial_api.c @@ -365,3 +365,35 @@ void serial_break_clear(serial_t *obj) { void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, PinName txflow) { } +const PinMap *serial_tx_pinmap() +{ + return PinMap_UART_TX; +} + +const PinMap *serial_rx_pinmap() +{ + return PinMap_UART_RX; +} + +const PinMap *serial_cts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_CTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_CTS; +} + +const PinMap *serial_rts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_RTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_RTS; +} + diff --git a/targets/TARGET_ARM_SSG/TARGET_IOTSS/spi_api.c b/targets/TARGET_ARM_SSG/TARGET_IOTSS/spi_api.c index 88b2e89be27..23740b4e785 100644 --- a/targets/TARGET_ARM_SSG/TARGET_IOTSS/spi_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_IOTSS/spi_api.c @@ -299,3 +299,43 @@ void spi_slave_write(spi_t *obj, int value) { int spi_busy(spi_t *obj) { return ssp_busy(obj); } + +const PinMap *spi_master_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_master_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_master_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_master_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + +const PinMap *spi_slave_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_slave_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_slave_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_slave_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_MPS2/analogin_api.c b/targets/TARGET_ARM_SSG/TARGET_MPS2/analogin_api.c index bef3fb5f5f4..60f8220be10 100644 --- a/targets/TARGET_ARM_SSG/TARGET_MPS2/analogin_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_MPS2/analogin_api.c @@ -108,3 +108,7 @@ uint16_t analogin_read_u16(analogin_t *obj) { return 0; } +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_MPS2/i2c_api.c b/targets/TARGET_ARM_SSG/TARGET_MPS2/i2c_api.c index 7873205d9d5..5f79605f57e 100644 --- a/targets/TARGET_ARM_SSG/TARGET_MPS2/i2c_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_MPS2/i2c_api.c @@ -531,3 +531,23 @@ int i2c_byte_read(i2c_t *obj, int last) { int i2c_byte_write(i2c_t *obj, int data) { return 0; } + +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_I2C_SCL; +} diff --git a/targets/TARGET_ARM_SSG/TARGET_MPS2/serial_api.c b/targets/TARGET_ARM_SSG/TARGET_MPS2/serial_api.c index 8eba4b3db1b..619033ca5d0 100644 --- a/targets/TARGET_ARM_SSG/TARGET_MPS2/serial_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_MPS2/serial_api.c @@ -370,3 +370,35 @@ void serial_break_clear(serial_t *obj) { void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, PinName txflow) { } +const PinMap *serial_tx_pinmap() +{ + return PinMap_UART_TX; +} + +const PinMap *serial_rx_pinmap() +{ + return PinMap_UART_RX; +} + +const PinMap *serial_cts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_CTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_CTS; +} + +const PinMap *serial_rts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_RTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_RTS; +} + diff --git a/targets/TARGET_ARM_SSG/TARGET_MPS2/spi_api.c b/targets/TARGET_ARM_SSG/TARGET_MPS2/spi_api.c index affd5b25148..897d07c2c2a 100644 --- a/targets/TARGET_ARM_SSG/TARGET_MPS2/spi_api.c +++ b/targets/TARGET_ARM_SSG/TARGET_MPS2/spi_api.c @@ -299,3 +299,43 @@ void spi_slave_write(spi_t *obj, int value) { int spi_busy(spi_t *obj) { return ssp_busy(obj); } + +const PinMap *spi_master_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_master_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_master_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_master_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + +const PinMap *spi_slave_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_slave_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_slave_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_slave_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/analogin_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/analogin_api.c index 621c8b20387..5629d163655 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/analogin_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/analogin_api.c @@ -186,6 +186,11 @@ uint16_t analogin_read_u16(analogin_t *obj) return( (uint16_t)( ((uint16_t *)pAdcBuffer->pDataBuffer)[(pAdcBuffer->nNumConversionPasses) - 1]) ); } +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} + /* Retrieve the active channel corresponding to the input pin */ static uint32_t adi_pin2channel(PinName pin) { diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/i2c_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/i2c_api.c index 6abd9bf79c1..f30ca375c3e 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/i2c_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/i2c_api.c @@ -221,4 +221,24 @@ int i2c_byte_write(i2c_t *obj, int data) return -1; } +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + #endif // #if DEVICE_I2C diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/serial_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/serial_api.c index f54b390f713..cd0d2b2bf76 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/serial_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/serial_api.c @@ -292,4 +292,36 @@ void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) irq_handler = handler; serial_irq_ids[0] = id; } + +const PinMap *serial_tx_pinmap() +{ + return PinMap_UART_TX; +} + +const PinMap *serial_rx_pinmap() +{ + return PinMap_UART_RX; +} + +const PinMap *serial_cts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_CTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_CTS; +} + +const PinMap *serial_rts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_RTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_RTS; +} #endif diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/spi_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/spi_api.c index dbecf7a1494..6d91a3ad3a6 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/spi_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/spi_api.c @@ -367,4 +367,44 @@ int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, cha } } +const PinMap *spi_master_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_master_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_master_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_master_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + +const PinMap *spi_slave_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_slave_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_slave_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_slave_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + #endif diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/analogin_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/analogin_api.c index 621c8b20387..5629d163655 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/analogin_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/analogin_api.c @@ -186,6 +186,11 @@ uint16_t analogin_read_u16(analogin_t *obj) return( (uint16_t)( ((uint16_t *)pAdcBuffer->pDataBuffer)[(pAdcBuffer->nNumConversionPasses) - 1]) ); } +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} + /* Retrieve the active channel corresponding to the input pin */ static uint32_t adi_pin2channel(PinName pin) { diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/i2c_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/i2c_api.c index 953cab289cd..5d171031524 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/i2c_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/i2c_api.c @@ -221,4 +221,24 @@ int i2c_byte_write(i2c_t *obj, int data) return -1; } +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + #endif // #if DEVICE_I2C diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/serial_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/serial_api.c index fabe28d035e..ef48996dc9a 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/serial_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/serial_api.c @@ -248,4 +248,36 @@ void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) serial_irq_ids[obj->index] = id; } +const PinMap *serial_tx_pinmap() +{ + return PinMap_UART_TX; +} + +const PinMap *serial_rx_pinmap() +{ + return PinMap_UART_RX; +} + +const PinMap *serial_cts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_CTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_CTS; +} + +const PinMap *serial_rts_pinmap() +{ +#if !DEVICE_SERIAL_FC + static const PinMap PinMap_UART_RTS[] = { + {NC, NC, 0} + }; +#endif + + return PinMap_UART_RTS; +} + #endif diff --git a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/spi_api.c b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/spi_api.c index 7f9fd048c5e..9f4269bc40f 100755 --- a/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/spi_api.c +++ b/targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/spi_api.c @@ -342,4 +342,44 @@ int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, cha } } +const PinMap *spi_master_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_master_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_master_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_master_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + +const PinMap *spi_slave_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_slave_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_slave_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_slave_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + #endif diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAMD21G18A/analogout_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAMD21G18A/analogout_api.c index 4fc477638a3..f11d47fb598 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAMD21G18A/analogout_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAMD21G18A/analogout_api.c @@ -108,3 +108,8 @@ uint16_t analogout_read_u16(dac_t *obj) uint32_t data_val = data_reg_read(obj); return (uint16_t)((data_val / (float)MAX_VAL_10BIT) * 0xFFFF); /*Normalization to the value 0xFFFF*/ } + +const PinMap *analogout_pinmap() +{ + return PinMap_DAC; +} diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAMD21J18A/analogout_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAMD21J18A/analogout_api.c index 4fc477638a3..f11d47fb598 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAMD21J18A/analogout_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAMD21J18A/analogout_api.c @@ -108,3 +108,8 @@ uint16_t analogout_read_u16(dac_t *obj) uint32_t data_val = data_reg_read(obj); return (uint16_t)((data_val / (float)MAX_VAL_10BIT) * 0xFFFF); /*Normalization to the value 0xFFFF*/ } + +const PinMap *analogout_pinmap() +{ + return PinMap_DAC; +} diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAML21J18A/analogout_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAML21J18A/analogout_api.c index b2e73bc2088..773f113cdb5 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAML21J18A/analogout_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/TARGET_SAML21J18A/analogout_api.c @@ -114,3 +114,9 @@ uint16_t analogout_read_u16(dac_t *obj) uint32_t data_val = data_reg_read(obj); return (uint16_t)((data_val / (float)MAX_VAL_12BIT) * 0xFFFF); /*Normalization to the value 0xFFFF*/ } + +const PinMap *analogout_pinmap() +{ + return PinMap_DAC; +} +#endif diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/analogin_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/analogin_api.c index a205e17f704..46dbe082402 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/analogin_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/analogin_api.c @@ -225,3 +225,7 @@ float analogin_read(analogin_t *obj) return (float)value * (1.0f / (float)0xFFFF); } +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/i2c_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/i2c_api.c index b3a8fad88ca..a5d6b5188d6 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/i2c_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/i2c_api.c @@ -573,6 +573,26 @@ int i2c_byte_write(i2c_t *obj, int data) return 0; } +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_SERCOM_PAD; +} + #if DEVICE_I2CSLAVE diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/pwmout_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/pwmout_api.c index 7e83ed67e82..0d286b37b6f 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/pwmout_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/pwmout_api.c @@ -300,3 +300,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) /* This call updates pulse width as well as period */ pwmout_write(obj, duty_cycle); } + +const PinMap *pwmout_pinmap() +{ + return PinMap_PWM; +} diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/serial_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/serial_api.c index 34d34d5ef7d..18666306201 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/serial_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/serial_api.c @@ -823,6 +823,26 @@ int serial_writable(serial_t *obj) return status; } +const PinMap *serial_tx_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *serial_rx_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *serial_cts_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *serial_rts_pinmap() +{ + return PinMap_SERCOM_PAD; +} + /************************************************************************************ * ASYNCHRONOUS HAL * ************************************************************************************/ diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/spi_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/spi_api.c index 9da9a458dda..83b8ab8678c 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/spi_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM0P/spi_api.c @@ -667,6 +667,46 @@ uint8_t spi_get_module(spi_t *obj) return _sercom_get_sercom_inst_index(pSPI_SERCOM(obj)); } +const PinMap *spi_master_mosi_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *spi_master_miso_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *spi_master_clk_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *spi_master_cs_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *spi_slave_mosi_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *spi_slave_miso_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *spi_slave_clk_pinmap() +{ + return PinMap_SERCOM_PAD; +} + +const PinMap *spi_slave_cs_pinmap() +{ + return PinMap_SERCOM_PAD; +} + #if DEVICE_SPI_ASYNCH /** diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/analogin_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/analogin_api.c index 9c6868a5254..099d6a1e151 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/analogin_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/analogin_api.c @@ -64,3 +64,8 @@ float analogin_read(analogin_t *obj) uint16_t value = analogin_read_u16(obj); return (float)value * (1.0f / (float)0xFFFF); } + +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/i2c_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/i2c_api.c index 213e9f58bc4..80e7ae81db7 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/i2c_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/i2c_api.c @@ -425,6 +425,26 @@ int i2c_byte_write(i2c_t *obj, int data) return ACK; } +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + /**@}*/ #if DEVICE_I2CSLAVE @@ -712,4 +732,4 @@ void i2c_abort_asynch(i2c_t *obj) NVIC_DisableIRQ(obj->i2c.irq_type); } -#endif \ No newline at end of file +#endif diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/pwmout_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/pwmout_api.c index f4d34083907..19f206a51b1 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/pwmout_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/pwmout_api.c @@ -305,3 +305,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) float new_duty = (us / 1000000.0) * (float)obj->waveconfig.us_frequency; pwmout_write(obj, new_duty); } + +const PinMap *pwmout_pinmap() +{ + return PinMap_PWM; +} diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/serial_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/serial_api.c index 386559df179..42dbf6eecb9 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/serial_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/serial_api.c @@ -579,6 +579,26 @@ int serial_writable(serial_t *obj) return status; } +const PinMap *serial_tx_pinmap() +{ + return PinMap_UART_TX; +} + +const PinMap *serial_rx_pinmap() +{ + return PinMap_UART_RX; +} + +const PinMap *serial_cts_pinmap() +{ + return PinMap_UART_CTS; +} + +const PinMap *serial_rts_pinmap() +{ + return PinMap_UART_RTS; +} + /************************************************************************************ * ASYNCHRONOUS HAL * ************************************************************************************/ diff --git a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/spi_api.c b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/spi_api.c index 13a326eab35..bb80fd776a1 100644 --- a/targets/TARGET_Atmel/TARGET_SAM_CortexM4/spi_api.c +++ b/targets/TARGET_Atmel/TARGET_SAM_CortexM4/spi_api.c @@ -371,6 +371,46 @@ uint8_t spi_get_module(spi_t *obj) return obj->spi.module_number; } +const PinMap *spi_master_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_master_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_master_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_master_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + +const PinMap *spi_slave_mosi_pinmap() +{ + return PinMap_SPI_MOSI; +} + +const PinMap *spi_slave_miso_pinmap() +{ + return PinMap_SPI_MISO; +} + +const PinMap *spi_slave_clk_pinmap() +{ + return PinMap_SPI_SCLK; +} + +const PinMap *spi_slave_cs_pinmap() +{ + return PinMap_SPI_SSEL; +} + /**@}*/ #if DEVICE_SPI_ASYNCH @@ -518,4 +558,4 @@ void spi_abort_asynch(spi_t *obj) NVIC_DisableIRQ(obj->spi.irq_type); } -#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 da01a569ea8..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. diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/README.md b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/README.md deleted file mode 100644 index 2ebdb602db0..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/README.md +++ /dev/null @@ -1,16 +0,0 @@ -README for pre-compiled PSoC 6 Cortex M0+ core images -===================================================== - -This folder contains precompiled program images for the CM0+ core of the PSoC 6(63xx) MCU suitable for use with MBed OS applications running on CM4 core. Two images are available: - -* `psoc63_m0_default_1.02.hex` - - This image contains basic code, that brings up the chip, starts CM4 core and puts CM0+ core into a deep sleep. It is suitable for use with all Mbed applications except those intendif to use BLE feature. - -* `psoc63_m0_ble_controller_1.01.hex` - - This image brings up the chip, starts CM4 core and runs BLE HCI controller for the build-in BLE device. This image is suitable for use with Mbed BLE applications. - -The images are 'bare metal' code prepared with Cypress PSoC Creator IDE and are toolchain agnostic, i.e. can be used with CM4 Mbed applications build with any supported toolchain. - -**These images were prepared by Future Electronics and are made available under the conditions of Permissive Binary Licence, see file LICENSE.txt** 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.02.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/psoc63_m0_default_1.02.hex deleted file mode 100644 index d2a9fed0a11..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/TARGET_MCU_PSOC6_M4/hex/psoc63_m0_default_1.02.hex +++ /dev/null @@ -1,150 +0,0 @@ -:020000041000EA -:4000000000000108310100100D00000095010010000000000000000000000000000000000000000000000000000000009101001000000000000000009101001091010010DC -:4000400091010010F10700109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010FA -:400080009101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001020 -:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD7804000800000000E01F0010084B10B5002B03D00749084800E000BF07480368002B00D1F1 -:4001000010BD064B002BFBD09847F9E7000000007C040008E01F001044010008000000007047EFF3108072B6704780F310887047FFF7F6FF72B6104C104DAC4209DA216818 -:400140006268A368043B02DBC858D050FAE70C34F3E70B490B4A0020521A02DD043A8850FCDC094809490860BFF34F8F00F0ECF800F01EF8FEE70000E41F0010FC1F0010B9 -:4001800078040008480700080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043001F08FFAFEE710B500F0A5F962B6064B5B689B0301D5D5 -:4001C00001F046FA044800F02FF9002001F0DCF9FBE7C0460000264000000810F8B5E023504C9B00E2580F231340D022990092000919885807224C4D0240032A05D0042A25 -:4002000005D0002A0FD0494811E028680FE0C022920089581F220A40112A01D0132A04D18020000203E0424801E0FA20C001002B27D1B223B1210322DB00C900E65863588A -:4002400067581B0F3F0F1340174205D0354F7958090F0A40012A01D1F20701D4032B3AD1B023344ADB00E658A158E758C904C90C01F05EFDB603F901B60BC90F704301314A -:4002800027E0012B27D1C823C0210322DB00C900E658635867583F0F174205D0214F7958090F0A40012A01D1F20703D49B009B0F032B10D1C0227F23D200A758A1583B40BD -:4002C0001F27A658090A3940584301F031FD310C394001F02DFDE0239B00E3589B069B0FD840154B68601C691969240A090E013101F01EFDE1B2A860013101F019FD0F4B87 -:40030000E860286104000E49C01801F011FDFA210C4B28758900E01801F00AFDA861C003E861F8BD00002640C000000800366E0100127A0084050000000021403F420F008F -:4003400040420F00E7030000B021E02010B530241F4BC9005A588000520052085A501A58A2431A50802252045A501A491A4A80209950A021043289019950FF21174AC005FA -:40038000995081315A5892009208024380205A505A580006024301205A505A5882435A5000F054FAFFF71AFF00F02AFA00F032FA00F0B8FEB0235B055A78002A02D05B7855 -:4003C000212B03D10022064BDA605A6010BDC0460000264001000200840500008C050000E0002340024BD86F032318407047C0460400214010B5FFF794FE074A074BD16F79 -:400400000B4007490B43D367102306490A681A42FCD0FFF78AFE10BD04002140FCFF00000100FA058800214070B50F4C0600FFF778FEE36F0500DB439B0701D1FFF7DAFF3F -:40044000B0230A4A9B00D650E26F094B09491340094A1343E36710230A681A42FCD02800FFF763FE70BDC0460400214000002140FCFF0000880021400300FA0510B5040063 -:40048000007B00F0F3F8606010BD10B50400007B216900F0B5F8606010BD10B5037B0169180000F0CDF810BD10B50400C06800F009F9606010BD10B5C06800F017F910BDF0 -:4004C00010B50400C06800F023F9606010BD10B5C06800F037F910BD10B504000C23C05E00F056F8606010BD10B50C23C05E00F06FF810BD10B5C06800F036F910BD0000A8 -:4005000010B500221849042000F0A4FC01221749042000F09FFC02221549042000F09AFC03221449042000F095FC04221249100000F090FC05221149042000F08BFC0622E9 -:400540000F49042000F086FC07220E49042000F081FC08220C49042000F07CFC09220B49042000F077FC10BD7D0400108B0400109B040010A9040010B7040010C104001062 -:40058000CF040010D9040010E9040010F504001070B507260512EDB206400D2D11D801F0FCF80A4901224B5D1C003441144003D1B24013434B5501E00124644201F0F1F8CA -:4005C00001E001246442200070BDC0469404000870B50412E4B20D2C0FD80725054001F0DCF8064901220B5D1E002E41164202D0AA4093430B5501F0D4F870BD94040008FA -:40060000F8B50C00050001F0C8F80C2301225D431300A3401A00094E71198F683A4008D13B43AD598B60631C4B60AB4202D94A6000E0FF2401F0B5F82000F8BDE0000008B5 -:4006400070B50C00050001F0A8F801210C23A1406B43054AD3189A680A4201D08A439A6001F09FF870BDC046E0000008F0B50C2485B0019001F091F8019B114D5C432B191E -:400680005B68029003932E1971680198FFF7B8FF0700FF280DD173682A59934201D9002373602A1953680399994202D001335360E9E7029801F075F8380005B0F0BDC04644 -:4006C000E000000810B5040007280AD801F065F8054B0E331A5D002A01D101321A5501F060F80120404210BD9404000810B5040007280AD801F051F8044B0E331A5D012AA5 -:4007000001D100221A5501F04CF810BD9404000870B505001F280ED801F03FF8084B30335C5D002C02D101225A5501E00124644201F037F801E001246442200070BDC0462A -:40074000E000000810B504001F280AD801F025F8044B30331A5D012A01D100221A5501F020F810BDE000000870B5B024C025144B144A15496405ED00E35CA25C615C665D10 -:400780003F251F242A400C4024039201224311002B407F2219430B003240520413430B4A1C0A110050310B701B0C8B7000234C7011005031595CC1540133062BF8D170BDDB -:4007C000040600000506000003060000E000000810B50248583000F051FB10BD2C05000810B50248B03000F049FB10BD2C05000810B5024800F042FB10BDC0462C050008A9 -:4008000010B5034A80216032042000F001FA10BD2C06000870B500F0C0FF0500094800F08BFA094C200000F0B9FA2000343000F0B5FA2000683000F0B1FA280000F0B1FF68 -:4008400070BDC0462C050008A81E0010F0B5962191B0002000F052FF00F028FF002801D100F016FF012000F0EFFDE821724C734B626C89011A400A436264626C0193120A5D -:40088000D2B23A2A04D1636C6D4A13400B4363643422002103A801F0E0FA03AA0021694800F06EFC3422002103A801F0D6FA03AA0121644800F064FC082204262368624D8B -:4008C000134323602369334207D1002D04D0012000F0D4FE013DF5E701E0002D00D1FEE7A02603220127594CF600A35903AD93433B43A351D2195649280001F0A5FA280078 -:4009000000F0F2FF534901980B68534A03400B608021136949041B021B0A0B4313611369019902200B401361E0230F219B00E2588A433A43E250E25821318A438021E250CE -:40094000E25809060A43E250002100F0D3FA0021032000F0CFFA0021042000F0CBFA0321002000F0C7FA0321380000F0C3FA384B0522191D280001F067FA2900380000F031 -:40098000DBFA002800D0FEE73449380000F026FB002800D0FEE7324B324AE1580A403A43E250E158304A0A408021E250E25809060A43E250A2592D4B1340A351A2592C4BF3 -:4009C00013408022920113438022A351A35912021343A351184B1A68264B1340164A136000F0E2FEC0235B00E3583B4204D1224AA3585B005B08A3506421002000F07EFEE9 -:400A000024220021280001F028FA29000D4800F031FC2A000E4B0C3313CB13C213CB13C213CB13C22900154800F024FC144A154B1A6011B0F0BDC04600002740FF00FFFFF8 -:400A4000FFC5FFDF0000324020A1070000002640441F001090002140000021401027000004050000FEFCFFFFFFFF00FFFFF0FFFFFF8FFFFFFFFCFFFF0C0500000003324042 -:400A800001001180000E1F41030010B5FF24800882009B1ADB009C409940E243214007282DD8174B01F03AF904090E13181D2227186A02401143196221E0586A0240114324 -:400AC00059621CE0986A02401143996217E0D86A02401143D96212E0186B0240114319630DE0586B02401143596308E0986B02401143996303E0D86B02401143D96310BDD7 -:400B000000002140064B10309A68064B9A4203D183009858995002E0034B8000C058704700ED00E00000000800000010F7B5051E01913DD00023C05E002802DBA978FFF735 -:400B4000A3FF6A680023E85E9201002812DB1A4B81088900C918FF2303271C00C0250740FF00BC401A40BA40AD004E59A64332434A5113E003250F2381B20B402940A9404B -:400B8000FC352F002A408F408A40083B9B080B4C9B001B19DE69BE433243DA61074B00259A68074B9A4204D10199FFF7ABFF00E0044D2800FEBDC04600E100E000ED00E070 -:400BC00000000008010056000369002B03DA89B24160002000E001487047C04601008A000368002B01DB034803E089B2C26081600020704701008A000369002B03DAC368D6 -:400C000000200B6000E001487047C04601008A0070B5040010000F2C2BD8002A07D1002927D1154B6401E418144B1C6022E000291FD01F260E401CD1104D0F4B6401E418D0 -:400C40006960AA60CA0831002C6001F006F931002000FFF7B9FF31002A1D2868FFF7C0FF011E04D12868FFF7AFFF011E02D0044900E00449080070BD000023401C07000810 -:400C800001018A0003018A00194BF7B51A680193D76804003B680E00834223D90025A94202D100F07AFD0500019B18680368002B01DB104C10E063095A01A41A0122A2408C -:400CC00079689B00CB18196811420DD00024914319600021FFF778FF002E07D1280000F060FD03E0044C01E0044CF2E72000FEBD1C0700080301880004018A000201880081 -:400D00000A4B1B68DA68136883420DD9430999005B01C31A0120984052688B581840431E9841034BC01800E0024870471C0700080001880004018A00024B1A68002A00D119 -:400D40001860704728070008F0B52C246043104C1E0024681F0A2018FF2426403C400D4F06607601F61906610B4E1B0C44606401A4191E04836033434461A3600023059D2C -:400D8000C261016283619D4201D02B888381F0BD280700080000234000102340F0B5038985B002AD2B800368066A1933AB704368476A0095826AC16A040003930369C06870 -:400DC000FFF7C2FF00213B000A0000913000FFF7BBFF216B2800FFF7A9FE0023EA5E002A05DB1F231A401E3B9340024A136005B0F0BDC04600E100E0F7B52C25124C6843E9 -:400E0000276801933C182669002E08D04D4379198869002805D13568002D02DA03E00B4811E00B480FE06768012425004B689D4013882D041D431560F2608C61BC40019B65 -:400E4000A4B24B62B460FEBD2807000804028A0007028A002C235843064B1B681818C369934204D9036A9200D150002000E002487047C046280700080A028A0073B5002638 -:400E800042690400D56801962B0CB3421CD01B040069136013680369B34215DA01A9FFF7ABFEB0420CD10198E26903681E0C0378934205D2226A9B009B58002B00D0984725 -:400EC00031002069FFF780FEADB2002D0ED063691D6000251B68636AAB4202D09847656203E0A36A002B00D09847A56163691B6873BD0000042819D804290FD94B1EFF3B13 -:400F0000132B13D81F231940094B8000C018C02304229B00C1504033C25005E00723D0301940034B8000C150002000E0014870470000264001004A00F0B5012819D1C02275 -:400F4000224BD2009A58002A0CDB8A78901E0E280FD84C78601E11280BD8C8780D7800282FD101E01A4830E07026152D01D9AE4201D2184829E00E79022E14D0F82124020C -:400F80004901F8270C4021007F2412047F033A4011432C4021438024C022C006240520400143D2009950C020C0248005360706403200E4001D590849002029400A431A51C4 -:400FC00003E03826122DD4D9D1E7F0BD0000264003004A0001004A00FFFFFFCFF8B50D00012819D1C02180240D4BC9005A582406C826224307001C005A50F600A3593B42B7 -:4010000006D1002D0AD0012000F038FB013DF5E70020002D03D101E0024800E00248F8BD0000264001004A0002004A001E4A0300904238D010D840282ED005D8002831D0B3 -:4010400010282DD119482EE0802827D08021100049008B4227D023E0154A904214D008D8A022120690421DD0124AA020934211D016E0114A904209D0104A904208D0104AB1 -:4010800090420DD10F480EE0A42003E00E480AE00E4808E0C00306E00D4804E00D4802E00D4800E0002070470600520001005000010000F0090000A0040000F0050000F0C5 -:4010C000030000F00100520002005200030052000200500005005200FF0052000B4B10B51B69002B10DB0A4B0A4C1868FFF79EFF0121094B094A995099580029FCD10649AC -:4011000009590029F8D100E0054810BD000023402C0700088C040000000025400C0400000200500010B5022202490020FFF792FE10BDC046990100080F4B30B5C0180F4BAC -:40114000C009C01800011F23032909D81D00C9008D4013408B400468AC432343036009E01D000439C9008D4013408B404468AC432343436030BDC0460000CEBF0010030457 -:40118000F7B504000E00150000286ED0002A6CD0012312688B40002A01D1436000E08360B30001930F231900B0008140A26A8A4369680B4083401343A3622A7A31002000BA -:4011C000FFF7BAFF0320710088400322636A83431800EB6813408B400343636201231F00B7400097FF43BC462F6962461F40B740A0691031104038436F69A0611F40B740A9 -:40120000E06A10403843E062A86903221840B0400600E869276B10408A408840009930430A4397436A6A384356000222206304201640AA6A616B92000240286A3243034017 -:401240001A43EB6AD80018230340FF2013432A6B019D520102401343FE2292002A40934081430B436363002000E00148FEBDC04601005A0000281BD0002919D00D4B0E4AD2 -:40128000C318DB099B180A681B010260CA6882620A69C2624A6902638A6842624A6882618A694263CA6900201A600A6A5A6000E0024870470000CEBF0010030401005A0069 -:4012C0000120024B1B68DB0D984370470000264010B50F2402200649064BCA58A2430243CA50F02212028B58A34303438B5010BD0000214004F0000010B50F240320064961 -:40130000064BCA58A2430243CA50F02212028B58A34303438B5010BD0000214004F000000449054A054B88580340C020C00103438B5070470000214004F00000FF8FFFFF5B -:401340000449054A054B885803408020C00103438B5070470000214004F00000FF8FFFFF70B50400002000F037FA00280BD1802324065B041C4023000E490F4A8D692A401B -:4013800013438B6115E0002C01D10C4A00E00C4A01210C48FFF724FC002809D1094A1369002BFCDB074B0020DB681B0EA02B00D0054870BD00F02540FFFFFFFE0100003099 -:4013C00001010030000023400400420010B5002000F002FAB0235B055A78002A03D05A780123222A01D843424341180010BD0000031E03D1084B5869C00F0CE00020012B26 -:4014000009D1054918008A69920F1A4201D18869C00F01231840704700002640072370B5084CA2691A4090420BD0A5699D4303402B43A361002904D0904202D9C82000F077 -:401440001DF970BD00002640F8B50500FFF7BEFF002844D000F0A1F9B02306005B05002D15D1E8220120D2009C5CFFF779FFE4B2071E30D1FFF72CFF1F201A491A4A8B5823 -:401480008343143803438B50FFF74AFF0FE01F20164A14499C5C144AE4B28B588343143803438B50023800F0E9F8FFF749FF1F230C480D491C40425800279A4314434450B3 -:4014C000012D08D1092000F0D9F8FFF715FF0020FFF746FF0700300000F063F900E0044F3800F8BD000026401CFF00004107000003004200F0B5060085B00D00204F04295C -:4015000001D001291AD100207C68002C35D01D4B984232D02379B3420ED1A368002B01D02B4209D1E36801A85A689B6842608360057023689847BC606469E6E7BC6802296C -:4015400002D1002C00D024690020002C15D00D4B984212D02379B3420DD1A368002B01D02B4208D1E36801A85A689B68426083600570236898472469E7E705B0F0BDC0462E -:401580003C070008FF004200F0B52B4C85B023680700002B0AD100F000F923680190002B10D004210120FFF7A5FF0BE001210800FFF7A0FF0028EED002210120FFF79AFF63 -:4015C0001E4C35E0B0256D056B78002B02D06B78212B03D1380000F057FC1EE0184E194BF3580293E823DB00EB5CDBB20393FFF767FE3100144A00280AD01F2302981840AF -:4016000003000398834203D0104BEB58B35001E000238B50380000F03FFC019800F0C1F823680024A34203D008210120FFF762FF200005B0F0BDC0463C070008FF00420033 -:40164000000026401CFF0000307F00001018000010B5E82400F0A1F8064B07495A68A4010A4022435A605A68114059605B6800F098F810BD00002640FF00FC0F10B5034BE8 -:401680001B78584300F080F810BDC046D400000880220020034B12069A649B6C834200DA0148704700002740030046008022054B120198585B68DBB2002B02D08023DB02A7 -:4016C0001843704700002640FEE7000002680A4B10B51A6042685A6082689A60C268DA6002691A6142695A6182699A61C269DA61FFF7EAFF10BDC04658040008F0B5192255 -:40170000002800D14B32E82403258A429241194E640033595242AB43134333513359164F3B403351154B5C68AC4322435A605A6817405F60002808D00023102913D9213317 -:401740008B429B415B4201330DE003001D290AD901233A2907D9DB18572904D976338B4240410422131A0F21054A1068884303431360F0BD00002140FFFCFFFFFC002140F6 -:4017800000002540000000000230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047094B042803D11A68104318600BE0C02200069204104090221D -:4017C00004499200885004211A688A431A60704710E000E000002140034B8002C0180F23006818407047C04600402440F8B58023FA250C0001271B0218430D4E0004F06196 -:40180000AD00326C0A4B01203A4205D1002D0CD0013DFFF733FFF4E7002D06D01A6C10431864DB6A0020238000E00248F8BDC04600003C400400160070B5FA2401260D4BAE -:40184000000418400C4D0143E961A4002B6C0A4A0120334205D1002C0AD0013CFFF70EFFF4E7002C04D0136C18431064002000E0024870BD0000FF7F00003C400400160030 -:40188000F0B5154B9DB001A90A00180070C870C270C870C270C870C20AAC1A0020002432E0CAE0C0E0CAE0C0E0CAE0C013AD2A004833C1CBC1C2C1CBC1C2C1CBC1C20748C7 -:4018C000FFF7D8FC21000648FFF7D4FC29000548FFF7D0FC1DB0F0BD741F0010000132408001324000023240F0B585B00090002800D159E1C54F7B689B0301D5FFF7A8FE16 -:40190000C34CC44DC44BEA58002A06D0013C002C03D00120FFF7B2FEF3E70122BF4C2959114205D0BE49BB484158114200D03DE1EB58B84E002B00D038E1FFF7A1FFB94AA7 -:40194000B94BF2508022009BD2021B781343B74AB350B74AB74BF250B74B5A6801231A4200D025E1B54A116F08220A4008D1B44BB44918681300884202D900F0D9F9431EA1 -:401980002A68002B03D0B0485B03034300E0AF4B13432B607B699F499C4E01275B000DD539000320FFF73AFD73699B0F3B420AD08022B369D2051343B36104E00320A44ACB -:4019C0008B5803438B502B5940200193019AA14BA14E13432B51FFF751FE0123AA598D4F1A4208D1BB514020FFF748FE03234020BB51FFF743FEFA27019A984B984E1A4056 -:401A000016430192FF002E51964A974BD3581022134207D1002F00D1CCE00120013FFFF72DFEF1E7002F00D1C4E008218F4A0120AB580B43AB50FFF7DBFC002802D18C4E35 -:401A4000019B1E438B4B1E4001231E432E511E00894C734BEB58334207D1002C00D1A9E00120013CFFF70AFEF3E7002C00D1A1E00B27C02181484901FFF7DEFE041E05D1C6 -:401A800002AB991D7D48FFF7B1FE0400013F002F00D136E1002C26D1C02202AB9E1D338852019342E5D131007548FFF79FFE041E19D180233288DB001A4200D081E00B2774 -:401AC000019380216E48C900FFF7B6FE041E04D131006B48FFF78AFE0400013F002F00D10FE1002C68D0B0256D056B78002B44D06B78212B41D0634FEB5B002B3DD0002C92 -:401B000000D000E102AB9E1D31005F48FFF76EFE041E00D0F7E0C021E85B3488084060398C434008594920430140F020EA5BC000EB5BD201024011439B05554A9B0F11406D -:401B4000DB02194350483180FFF776FE041E00D0D9E031004F48FFF749FE041E00D0D2E0C022EB5B31889B069B0F9B019143194348483180FFF760FE0400002C00D0C2E0F6 -:401B8000009B454859781D78444B49001943FFF753FE041E04D142494248FFF74DFE04006801FFF76BFDAEE03F4CACE03F4CAAE03F4CA8E03F4CA6E03388019A934200D02B -:401BC0007FE731003C48FFF711FE041E00D08AE732883F2310009843009B38499F78DB78012F0ED10222012B04D89FB2D21B92B2019201E017000194702210433080304AE9 -:401C000069E0002B5ED0019401275EE000002640F17E0E0000003C406CF00100A0F00100B4F0010006000001A4F00100A8F0010001000100ACF00100FC003C4000F03D405C -:401C4000C800000800093D00041A0080040A0080C4F0010030000300B0F00100EFFFFEFF20000200000032401040000068F0010028000200FFFFFBFFF07E0E00021E0000B3 -:401C8000031E000016180000071E00007FF5FFFFFFE7FFFF061E0000081E000001100000376800000F1E000001001600030016000200160004001600091E0000C0000008E2 -:401CC0000048E80101201F0001907F2082436F38024332800D4ADA400A6031880C4839433180FFF7A9FD009B0400DB78DF1B03231F40019B9B001F43064BBFB23780EF506D -:401D0000F1E6054CEFE6200005B0F0BD0024F400091E000064F001000400160002B4714649084900095C49008E4402BC7047C046002243088B4274D303098B425FD3030ADB -:401D40008B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03BF -:401D8000C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A52416A -:401DC000030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C308B9 -:401E00008B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D08E -:401E400076E770477047C046002310B59A4203D0CC5CC4540133F9E710BD03008218934202D019700133FAE770470000F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC4F -:401E80009E4670470000000001B40248844601BC604700BF9D02000801B40248844601BC604700BF610300080300000001000000010000000000000005036000040000002B -:401EC00001000000000000000100000006046000080000009C060008F10700100800000001000000020000000200000008080003090000000100000000000000030000008F -:401F00000909000308000000BC060008D10700100A0000000100000004000000040000000A0A000C0B0000000100000000000000050000000B0B000C10000000DC06000872 -:401F4000E1070010192001021901020000000000000000000000000000000000000000BA0000000000000000000000000000000000001D1D0000000000000000000000001D -:401F800066666666000000000000FFFF000000001C1C1C1C1C1C1C1C00000000000000000000000066E6EE66000000000000FFFF000000001C1A1A1A1A1A0000000000006F -:401FC000000000000000000066E66666000000000000FFFF000000001A1A001C00000000000000000000001000000008C000000004200010C0000008980300007804000888 -:40200000D002000000127A0000127A0000093D0000093D0000093D0004000000A00F00000000D0070700000002000000030000000F0000000000000000000000030000003C -:402040000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000019000050A000000002FF000053 -:40208000E9000010C10000100000000080B2C00017D00C4A1368002BFCDA3E220A4B06211A600A4A0A4B1A60A3220A4BD2009950094A985000209958024948609958002904 -:4020C000FCDA7047E0002340040126401E1F000008012640000026401C05000010B54378FF2B0DD100F022F9064BDB685A68012311681943116011681942FCD100F00EF987 -:4021000010BDC04680002340F7B50F00019000F03DF9050003281FD1274B1B69002B19DB002000F02BF9254EB04213D00023244A1900012000F01AF9041E0BD1002000F0EA -:402140001DF9204BB04203D09C4203D00134F5E79C4201D11C4E2CE000F0E8F81B4B1C4A0400D358002B06DA1A4A01211A4800F0F5F8002801D0144E0EE03800FFF786FF9A -:40218000019B002B07D0144A1369002BFCDB00F0DDF8060000E0114E032D03D0200000F0BDF806E00121002000F0C8F80028F9D1F4E73000FEBDC046C00023400101880090 -:4021C00038010008F0490200050052001C050000000026402C070008000023400100500070B52B490A682A4B002AFBDA0221DA680A43DA60DA68D2071BD5264D264CD968FA -:402200002A69266889B2360A36060E43FF21120209040A4032439026DA6029691F4A360111403143296121680A40324322602A692268002204241A495A605A680A6922431C -:402240000A61012801D030BF00E020BF1A68104D002AFBDAEA68D20712D5FF240D4E0F4A3069E9682402090A1040214001430A4831610668E9683240090C0C40224302602F -:402280000221DA688A43DA6000225A6070BDC046E00023400000214090002140FF00FFFF00ED00E00421134A13690B431361012801D030BF00E020BF0F4A1368002BFCDA07 -:4022C0000E4B19691A00002910D10D490D4B196006210D4B19600D4B383119600C4B0631196019680029FCDA0A4B13610022024B5A60704700ED00E0E0002340FC002540E5 -:402300001E1F00000801264018052640040126401C052640AAAAAAAA0000000001B40248844601BC604700BFA317001001B40248844601BC604700BF9B17001001B4024871 -:40234000844601BC604700BF890C001001B40248844601BC604700BFDD10001001B40248844601BC604700BFE10B001001B40248844601BC604700BFF90D001001B40248F9 -:40238000844601BC604700BF010D001001B40248844601BC604700BFE50300100000000000000000000000000000000000000000000000000000000000000000000000002E -:4023C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD -:0200000490303A -:02000000355376 -:0200000490501A -:0C0000000005E20721002101E212565326 -:00000001FF \ No newline at end of file diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/device.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/device.h deleted file mode 100644 index 0ef546175a6..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8C63XX/device.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT 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_DEVICE_H -#define MBED_DEVICE_H - -/*----------------------------------------------------------------------------*/ -/** Config options. */ -/*----------------------------------------------------------------------------*/ -/** ALTHF (BLE ECO) frequency in Hz */ -#define CYDEV_CLK_ALTHF__HZ ( 8000000UL) - -/*----------------------------------------------------------------------------*/ - -#include "cmsis.h" -#include "objects.h" - -/* - * Board clocks. - */ -/** IMO frequency in Hz */ -#define CY_CLK_IMO_FREQ_HZ ( 8000000UL) -/** PILO frequency in Hz */ -#define CY_CLK_PILO_FREQ_HZ ( 32768UL) - -/** WCO frequency in Hz */ -#define CY_CLK_WCO_FREQ_HZ ( 32768UL) - -/** HVILO frequency in Hz */ -#define CY_CLK_HVILO_FREQ_HZ ( 32000UL) - -/** ALTLF frequency in Hz */ -#define CY_CLK_ALTLF_FREQ_HZ ( 32768UL) - -/** Default HFClk frequency in Hz */ -#ifndef CY_CLK_HFCLK0_FREQ_HZ -#define CY_CLK_HFCLK0_FREQ_HZ (100000000UL) -#endif - -/** Default PeriClk frequency in Hz */ -#ifndef CY_CLK_PERICLK_FREQ_HZ -#define CY_CLK_PERICLK_FREQ_HZ (CY_CLK_HFCLK0_FREQ_HZ / 2) -#endif - -/** Default SlowClk system core frequency in Hz */ -#ifndef CY_CLK_SYSTEM_FREQ_HZ -#define CY_CLK_SYSTEM_FREQ_HZ (CY_CLK_PERICLK_FREQ_HZ) -#endif - - -/** Interrupt assignment for CM0+ core. - * On PSoC6 CM0+ core physical interrupt are routed into NVIC through a programmable - * multiplexer. This requires that we define which of the 32 NVIC channels is used - * by which interrupt. This is done here. - */ -#define CY_M0_CORE_IRQ_CHANNEL_US_TICKER ((IRQn_Type)0) -#define CY_M0_CORE_IRQ_CHANNEL_SERIAL ((IRQn_Type)4) -#define CY_M0_CORE_IRQ_CHANNEL_BLE ((IRQn_Type)3) - -/** Identifiers used in allocation of NVIC channels. - */ -#define CY_US_TICKER_IRQN_ID (0x100) -#define CY_SERIAL_IRQN_ID (0x200) -#define CY_BLE_IRQN_ID (0x300) -#define CY_GPIO_IRQN_ID (0x400) -#define CY_LP_TICKER_IRQN_ID (0x500) -#endif 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/TARGET_FUTURE_SEQUANA/PinNames.h b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA/PinNames.h deleted file mode 100644 index 10a8f6dd416..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA/PinNames.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT 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" - -#if PSOC6_ENABLE_M0_M4_DEBUG - -#define CY_STDIO_UART_RX P9_0 -#define CY_STDIO_UART_TX P9_1 -#define CY_STDIO_UART_CTS P9_2 -#define CY_STDIO_UART_RTS P9_3 -#else - -#define CY_STDIO_UART_RX P5_0 -#define CY_STDIO_UART_TX P5_1 -#define CY_STDIO_UART_CTS P5_2 -#define CY_STDIO_UART_RTS P5_3 - -#endif // PSOC6_ENABLE_M0_M4_DEBUG - -// 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, - - P14_0 = (Port14 << 8) + 0x00, - P14_1 = (Port14 << 8) + 0x01, - P14_2 = (Port14 << 8) + 0x02, - P14_3 = (Port14 << 8) + 0x03, - P14_4 = (Port14 << 8) + 0x04, - P14_5 = (Port14 << 8) + 0x05, - P14_6 = (Port14 << 8) + 0x06, - P14_7 = (Port14 << 8) + 0x07, - - // Arduino connector namings - A0 = P10_4, - A1 = P10_5, - A2 = P10_2, - A3 = P10_3, - A4 = P10_1, - A5 = P10_0, - - D0 = P6_4, - D1 = P6_5, - D2 = P10_6, - D3 = P12_6, - D4 = P12_7, - D5 = P6_2, - D6 = P6_3, - D7 = P7_2, - D8 = P7_1, - D9 = P7_7, - D10 = P9_4, - D11 = P9_0, - D12 = P9_1, - D13 = P9_2, - D14 = P10_1, - D15 = P10_0, - - // Generic signal names - - I2C_SCL = P10_0, - I2C_SDA = P10_1, - SPI_MOSI = P9_0, - SPI_MISO = P9_1, - SPI_CLK = P9_2, - SPI_CS = P9_3, - UART_RX = P6_4, - UART_TX = P6_5, - - SWITCH2 = P0_4, - LED1 = P6_2, - LED2 = P6_3, - LED3 = P7_2, - LED4 = P6_2, - LED_RED = LED1, - - USER_BUTTON = SWITCH2, - BUTTON1 = USER_BUTTON, - - // Standardized interfaces names - STDIO_UART_TX = CY_STDIO_UART_TX, - STDIO_UART_RX = CY_STDIO_UART_RX, - STDIO_UART_CTS = CY_STDIO_UART_CTS, - STDIO_UART_RTS = CY_STDIO_UART_RTS, - USBTX = CY_STDIO_UART_TX, - USBRX = CY_STDIO_UART_RX, - - // Not connected - NC = (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_FUTURE_SEQUANA_PSA/prebuilt/README.md b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/README.md deleted file mode 100644 index b90d675937b..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/README.md +++ /dev/null @@ -1,23 +0,0 @@ - -This directory tree contains Secure images released under Permissive Binary License. - -Build by mbed-cli using GNU Arm Embedded - version 6.3.1 - -These images were compiled by the following command: - -``` -mbed compile -m FUTURE_SEQUANA_M0_PSA -t GCC_ARM --profile release -N psa_release_1.0 -mbed compile -m FUTURE_SEQUANA_M0_PSA -t GCC_ARM --profile debug -N psa_debug_1.0 -``` - -There are also prebuilt images for PSA tests. - -Those images can be found in the test folder under a `TARGET_FUTURE_SEQUANA_PSA` directory - -These images were compiled by the following command: - -``` -mbed test --compile -m FUTURE_SEQUANA_M0_PSA -t GCC_ARM --profile debug -n *psa-* -``` - -To update the prebuilt binaries run the previous commands and then run ```python export_binaries.py``` diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/export_binaries.py b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/export_binaries.py deleted file mode 100644 index 054df24bc9e..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/export_binaries.py +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (c) 2017-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. - -import fnmatch -import shutil -import os - -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -ROOT_DIR = os.path.realpath(os.path.join(SCRIPT_DIR, '..', '..', '..', '..', '..')) -DELIVERY_DIR = os.path.join(ROOT_DIR, 'DELIVERY', 'TARGET_FUTURE_SEQUANA_PSA') - -for f in fnmatch.filter(os.listdir(DELIVERY_DIR), '*.hex'): - test_suite_name = os.path.splitext(f)[0] - test_directory = os.path.join(ROOT_DIR, 'TESTS', 'psa', test_suite_name) - - if os.path.exists(test_directory): - target_dir = os.path.join(test_directory, 'TARGET_FUTURE_SEQUANA_PSA', f) - if not os.path.exists(os.path.join(test_directory, 'TARGET_FUTURE_SEQUANA_PSA')): - continue - else: - target_dir = os.path.join(SCRIPT_DIR, f) - - shutil.copyfile(os.path.join(DELIVERY_DIR, f), target_dir) diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/psa_debug_1.0.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/psa_debug_1.0.hex deleted file mode 100644 index 0be566431d5..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/psa_debug_1.0.hex +++ /dev/null @@ -1,4586 +0,0 @@ -:020000041000EA -:40000000000001089D1803100D00000099010010000000000000000000000000000000000000000000000000000000001DDA02100000000000000000A1DA0210ADDA021009 -:40004000F5180310051F0310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F518031069 -:40008000F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F5180310F518031040 -:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BDA814000800000000AC630410084B10B5002B03D00749084800E000BF07480368002B00D19D -:4001000010BD064B002BFBD09847F9E700000000AC140008AC630410C00F000800000000164B002B00D1144B9D46402292029A1A924600218B460F461348144A121A37F0B6 -:4001400015FD0F4B002B00D098470E4B002B00D098470020002104000D000D48002802D00C482DF047F837F0FFF8200029002DF079FA2DF035F8C04600000800000001085D -:400180000000000085D50210A814000850840008F5D10210000000002C4B05E02C4B03E02C4B01E02C4BFFE7EFF308802B4972460A4201D0EFF309809C46294B1968026891 -:4001C0000A60043142680A60043182680A600431C2680A600431F0C147460F6004314F460F60043157460F6004315F460F60043102690A60083142690A60043182690A6073 -:400200000431C2690A60043103462033154E324200D0043375460D4E354200D148330C46103C2360EFF309820A600431EFF308820A60043172460A600431EFF314820A60FB -:400240006046074900F010F8FEE70000100000002000000030000000400000000400000078D903100002000000B587B003900291002305931C4B18002BF066FF039B302BDC -:400280000AD0402B0FD0202B14D1184B18002BF05BFF174B059314E0164B18002BF054FF154B05930DE0154B18002BF04DFF144B059306E0134B18002BF046FF124B0593B9 -:4002C000C046124B18002BF03FFF00F027F8104B18002BF039FF0F4BDA6B0F4905980023009300232CF050F97CD90310A8D903103E01FF80B8D903103F01FF80C4D90310B6 -:400300004001FF80D0D903103D01FF80DCD90310E8D90310EC72000808DA031070B586B0002305930CE02E4A059B9B00D3181A6805992C4B18002BF007FF059B01330593B1 -:40034000059B0C2BEFDD264B5C6B254B9D6B244BDE6B234B1A6C224B596C214B9B6C224802930191009233002A0021002BF0ECFE1E4B1A681E4B110018002BF0E5FE184B55 -:40038000DB6C0822134012D01A4B18002BF0DCFE134B1B6D0122134004D0174B18002BF0D3FE0CE0154B18002BF0CEFE07E0144B18002BF0C9FE114B18002BF0C5FE084B5F -:4003C000DB6C0422134004D00E4B18002BF0BCFE03E00D4B18002BF0B7FEC04606B070BDEC72000818DA031028DA031000ED00E078DA031088DA031098DA0310A8DA0310D6 -:40040000BCDA0310CCDA0310D8DA031082B001900091009B180002B07047000000B583B00190019B180005F07FFC019B180000F095F8084A019B1A60019B283300211800BF -:4004400000F04CF8019B382201219954019B180003B000BDE8FE031000B583B001900C4A019B1A60019B180005F08DFB019B2833180000F04BF8019B180000F075F8019B21 -:40048000180005F08BFC019B180003B000BDC046E8FE031000B583B00190019B1800FFF7DBFF019B18002CF059FF019B180003B000BD000000B583B00190019B1800FFF719 -:4004C000ADFF019B180000F07BF8034A019B1A60019B180003B000BDFCFE031000B583B001900091009B002B06D1019B10220021180037F03BFB05E06A46019B1100180040 -:4005000000F06AF8019B180003B000BD00B583B00190019BDB68002B05D0019BDB689B68019A10009847019B180003B000BD00B583B001900091009BDB68002B06D0009BD9 -:40054000DB685B680099019A10009847009BDA68019BDA60019B180003B000BD82B00190019B180002B0704782B00190019B180002B0704782B00190019BDB685A1E9341CD -:40058000DBB2180002B0704700B583B001900091019A009B9A420FD0019B1800FFF7B6FF019B19001020FFF731FF031E04D0009A11001800FFF7BBFF019B180003B000BD3C -:4005C00082B00190019B180002B0704782B00190019B180002B0704700B583B001900091019B10220021180037F0C0FA019B19000420FFF70BFF031E02D0009A12681A60EF -:40060000019B024ADA60C04603B000BDE4DA031000B583B00190019B1B68984703B000BD00B583B001900091019B19000420FFF7EDFE031E02D0009A12681A60C04603B06C -:4006400000BD82B00190C04602B0704700B583B00190074A019B1A60019B1800FFF7B6FF019B1800FFF7F8FE019B180003B000BDFCFE031000B583B00190019B1800FFF758 -:40068000E5FF019B18002CF069FE019B180003B000BD000000B58DB06B4618002C231A00002137F063FA00230B936B461900102003F01EFC6B461B68022B04D0032B12D025 -:4006C000012B10D00CE00BF0B5F803000B930B9B002B0AD10A4B1B685A1C094B1A6004E002230B9302E0C04600E0C0466B465B680B9A1100180003F0CFFDC0460DB000BDFB -:40070000C414000800B58DB06B4618002C231A00002137F02BFA00230B936A4680235B011100180003F0E4FB6B461B68022B04D0032B11D0012B0FD00BE00E4B1B685A1E4F -:400740000C4B1A600B4B1B68002B07D10BF02EF804E002230B9302E0C04600E0C0466B465B680B9A1100180003F096FDC0460DB000BDC046C414000800B597B005AB180044 -:400780002C231A00002137F0F1F90023159305AB1900202003F0ACFB05AB1B68022B1BD0032B00D130E1012B00D03CE1B4235B001900012036F08AFA03001493149B002B22 -:4007C00002D10923159332E105AB5B68149A1100180003F0C9FE2AE103AB180008231A00002137F0C3F905ABDB68082B02D00B2315931CE105AB586805ABDB6803AA002125 -:4008000003F08AFC0300139305ABDA68139B9A4205D08C498C4B722218002BF01DFE03AB1B78143B052B00D9E9E09A00874BD3181B689F4605AB986803AB598803AB5B68E6 -:400840001A0007F02FFD03001593DBE005AB986803AB598803AB5B681A0007F037FD03001593CFE005AB1B691900012036F02EFA03001293129B002B02D109231593C1E002 -:4008800005AB586805AB1B69129A012103F044FC0300139305AB1A69139B9A4205D06949694B8E2218002BF0D7FD05AB986805AB1A69129B190007F01DFD03001593129B29 -:4008C000180036F087FD9DE00023029305AB586805AB1B6902AA012103F01EFC0300139305AB1A69139B9A4205D05649564B9E2218002BF0B1FD00230193029B19000120D8 -:4009000036F0E4F903001193119B002B02D10923159377E005AB9868029A01AB119907F00FFE03001593159B002B0DD105AB5868019B119A002103F02BFC05AB586801AA21 -:400940000423012103F024FC119B180036F042FDC04657E00023009305AB586805AB1B696A46012103F0D8FB0300139305AB1A69139B9A4204D105AB5A69009B9A4205D0C9 -:400980003049314BB82218002BF066FD009B1900012036F09BF903001093109B002B02D1092315932EE005AB586805AB5B69109A022103F0B1FB0300139305AB5A69139BF8 -:4009C0009A4205D01F49204BC12218002BF044FD05AB9B68009A1099180007F0F6FD03001593109B180036F0F5FCC0460AE005AB9B68180007F0B8F80300159302E002238B -:400A00001593C046C04612E005AB9B68180007F0ABF805AB9B68002B08D005AB9B68180036F0D8FC02E00223159300E0C04605AB5B68159A1100180003F02EFCC04617B066 -:400A400000BDC04614DC0310F0DA031010DB031000B597B005AB18002C231A00002137F085F80023159305AB1900402003F040FA05AB1B68022B19D0032B00D12BE1012B42 -:400A800000D037E1E021012036F020F903001493149B002B02D1092315932FE105AB5B68149A1100180003F05FFD27E10023139303AB180008231A00002137F057F805ABF6 -:400AC000DB68082B02D00B23159317E105AB586805ABDB6803AA002103F01EFB0300139305ABDA68139B9A4207D00223FF331A008749884B18002BF0AFFC03AB1B780F3B2A -:400B0000042B00D9E2E09A00834BD3181B689F4605AB9A6803AB5B681900100006F084FC03001593D5E005AB1B691900012036F0CDF803001293129B002B02D1092315938E -:400B4000C7E005AB586805AB1B69129A012103F0E3FA0300139305AB1A69139B9A4207D01623FF331A006A496A4B18002BF074FC05AB986805AB1A69129B190006F0CCFC58 -:400B800003001593129B180036F024FCA1E00023029305AB586805AB1B6902AA012103F0BBFA0300139305AB1A69139B9A4206D092235A005649574B18002BF04DFC002301 -:400BC0000193029B1900012036F080F803001193119B002B02D1092315937AE005AB9868029A01AB119906F0DBFC03001593159B002B0DD105AB5868019B119A002103F0CF -:400C0000C7FA05AB586801AA0423012103F0C0FA119B180036F0DEFBC0465AE00023009305AB586805AB1B696A46012103F074FA0300139305AB1A69139B9A4204D105AB67 -:400C40005A69009B9A4206D09F235A003049314B18002BF001FC009B1900012036F036F803001093109B002B02D10923159330E005AB586805AB5B69109A022103F04CFADD -:400C80000300139305AB5A69139B9A4207D04823FF331A001E491F4B18002BF0DDFB05AB9B68009A1099180006F0ACFD03001593109B180036F08EFBC0460AE005AB9B68B7 -:400CC000180006F083FB0300159302E002231593C046C04612E005AB9B68180006F076FB05AB9B68002B08D005AB9B68180036F071FB02E00923159300E0C04605AB5B68BC -:400D0000159A1100180003F0C7FAC04617B000BD28DC0310F0DA031028DB031070B5A2B00DAB18002C231A00002136F01FFF002321930DAB1900802003F0DAF80DAB1B6836 -:400D4000022B06D0032B00D197E1012B00D196E190E10DABDB68102B02D00B2321938FE10023209309AB180010231A00002136F0FDFE0DAB58680DABDB6809AA002103F04F -:400D8000CBF9030020930DABDA68209B9A4207D08023FF331A00BF49BF4B18002BF05CFB09AB1B78242B6AD002DC232B04D05DE1262B00DD5AE1C5E0002308930DABDB69F0 -:400DC0001900012035F082FF03001F931F9B002B02D1092321934CE10DAB1B691900012035F074FF03001E931E9B002B06D1092321931F9B180036F0EDFA3AE10DAB5868CA -:400E00000DAB1B691E9A012103F086F9030020930DAB1A69209B9A4206D0CC235A009D499D4B18002BF018FB09AB588809AB59680DAB1D690DABDB691E9C08AA0292019398 -:400E40001F9B00932B00220007F078FE03002193219B002B06D10DAB5868089B1F9A002103F096F90DAB586808AA0423012103F08FF91F9B180036F0ADFAC046F9E00DAB5B -:400E80001B691900012035F021FF03001D931D9B002B02D109232193EBE00DAB58680DAB1B691D9A012103F037F9030020930DAB1A69209B9A4207D0B823FF331A00754927 -:400EC000754B18002BF0C8FA0DAB5B691900012035F0FCFE03001C931C9B002B02D109232193C6E00DAB58680DAB5B691C9A022103F012F9030020930DAB5A69209B9A42E8 -:400F000006D0E1235A006349634B18002BF0A4FA09AB588809AB59680DAB5C690DAB1B691C9A01931D9B0093230007F091FE030021931D9B180036F04DFA1C9B180036F069 -:400F400049FA96E0002307930DAB1B691900012035F0BCFE03001B931B9B002B02D10923219386E00DAB58680DAB1B691B9A012103F0D2F8030020930DAB1A69209B9A422B -:400F800007D0E023FF331A004249434B18002BF063FA1B9B1A9309AB9B681B9AD31819930DABDB691900012035F090FE03001893189B002B06D1092321931B9B180036F0DC -:400FC00009FA56E009AB1B78252B1AD109AB588809AB5C6809AB9E6809ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F0B2FE03002193EE -:4010000019E009AB588809AB5C6809AB9E6809ABDA680DABDB691A9D07A904910393189B02930192199B009333002A00210007F03BFF03002193219B002B06D10DAB5868AF -:40104000079B189A002103F0A3F80DAB586807AA0423012103F09CF8189B180036F0BAF91B9B180036F0B6F9C04602E00223219303E002E00223219302E0C04600E0C04600 -:401080000DAB5B68219A1100180003F005F9C04622B070BD3CDC0310F0DA0310F0B5A5B013AB18002C231A00002136F05FFD0023239313AA80239B001100180002F018FFF1 -:4010C00013AB1B68022B06D0032B00D1DBE0012B00D1DAE0D4E013ABDB68242B02D00B232393D3E00023229309AB180024231A00002136F03BFD13AB586813ABDB6809AA18 -:40110000002103F009F80300229313ABDA68229B9A4206D08C239A006149624B18002BF09BF909AB1B78213B012B00D9A3E00023129313AB1B691900012035F0C7FD0300B1 -:401140002193219B002B02D10923239396E013AB586813AB1B69219A012102F0DDFF0300229313AB1A69229B9A4205D04E4A4C494C4B18002BF070F9219B209309ABDB6811 -:40118000219AD3181F9313ABDB691900012035F09DFD03001E931E9B002B06D1219B180036F018F90923239368E009AB1B78212B23D109AB5C8809AB5D6809AB1B891F0029 -:4011C00009ABDA6809AB196913ABDB6909A81430060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F09AFB0300239322E009AB5C8809AB80 -:401200005D6809AB1B891F0009ABDA6809AB196913ABDB6909A81430060012A8069005931E9B049303911F9B02930192209B00933B0032002900200008F04CFC030023939E -:40124000239B002B0DD113AB5868129B1E9A002102F09EFF13AB586812AA0423012102F097FF219B180036F0B5F81E9B180036F0B1F8C04602E002232393C046C04605E00E -:401280000223239302E0C04600E0C04613AB5B68239A1100180002F0FFFFC04625B0F0BD58DC0310F0DA03104302000010B5A6B00023259310AB18002C231A00002136F0C4 -:4012C00055FC10AA80235B001100180002F010FE10AB1B68022B19D0032B00D14FE1012B00D05BE14C21012035F0F0FC03002493249B002B02D10923259353E110AB5B6855 -:40130000249A1100180003F02FF94BE10EAB180008231A00002136F029FC10ABDB68082B02D00B2325933DE110AB586810ABDB680EAA002102F0F0FE0300239310ABDA680E -:40134000239B9A4205D09C4A9C499D4B18002BF083F80EAB1B781A3B062B00D909E19A00984BD3181B689F4610AB98680EAB59880EAB5B681A0007F06DFF03002593FCE053 -:4013800010AB98680EAB59880EAB5B681A0007F075FF03002593F0E000230D9310ABDB69229309AB180010231A00002136F0DEFB10AB98680DAB229A09A907F073FF03004F -:4013C0002593259B002B00D0D6E010AB58680D9B09AA002102F0DCFE10AB58680DAA0423012102F0D5FEC046C6E010AB1B69219305AB180010231A00002136F0B7FB10AB59 -:401400005868219B05AA012102F086FE03002393239A219B9A4205D06B4A6849684B18002BF01AF810AB9B68219A05A9180007F089FF03002593C0469FE010AB1B692093B8 -:4014400010ABDB691F9300230493209B1900012035F03CFC03001E931E9B002B02D1092325938AE010AB5868209B1E9A012102F053FE03002393239A209B9A4205D0534A24 -:401480004E494F4B18002AF0E7FF1F9B1900012035F01CFC03001D931D9B002B06D11E9B180035F097FF0923259366E010AB98681D9C209A1E9904AB01931F9B00932300F7 -:4014C00007F07FFF03002593259B002B0DD110AB5868049B1D9A002102F05AFE10AB586804AA0423012102F053FE1E9B180035F071FF1D9B180035F06DFFC0463DE010AB5D -:40150000DB691C93002303931C9B1900012035F0DDFB03001B931B9B002B02D1092325932BE010AB986803AB1C9A1B9907F090FF03002593259B002B0DD110AB5868039BC7 -:401540001B9A002102F024FE10AB586803AA0423012102F01DFE1B9B180035F03BFFC0460BE010AB9B68180007F0F0FF0300259303E00223259300E0C046C04612E010AB15 -:401580009B68180007F0E2FF10AB9B68002B08D010AB9B68180035F01DFF02E00223259300E0C04610AB5B68259A1100180002F073FEC04626B010BD9E0200006CDC03104E -:4015C000F0DA03103CDB0310C2020000D702000010B5AAB010AB18002C231A00002136F0C5FA0023299310AA8023DB001100180002F07EFC10AB1B68022B06D0032B00D1FA -:40160000CCE1012B00D1D9E1C5E110ABDB680C2B02D00B232993D2E1002327930DAB18000C231A00002136F0A1FA10AB586810ABDB680DAA002102F06FFD0300279310ABFD -:40164000DA68279B9A4205D0D54AD649D64B18002AF002FF0DAB1B7A282B00D991E19A00D24BD3181B689F4610ABDB6926930DAB1B880CAA1100180007F0F0FF0300299397 -:40168000299B002B00D07FE110AB5868269B0CAA002102F07DFDC04676E110AB1B69259310AB5868259B0BAA012102F035FD03002793279A259B9A4206D0D3239A00B94980 -:4016C000B94B18002AF0C8FE0DAB1B880B9A1100180007F0E1FF03002993C04659E110AB1B69249310AB5868249B09AA012102F013FD03002793279A249B9A4206D0D62300 -:401700009A00A849A84B18002AF0A6FE0DAB1B8809AA1100180007F04FFF03002993C04637E110ABDB6923930DAB1B8807AA1100180007F06FFF03002993299B002B00D02F -:4017400024E110AB5868239B07AA002102F020FDC0461BE110AB1B692293229B1900012035F0B4FA03002193219B002B02D1092329930EE110AB5868229B219A012102F03B -:40178000CBFC03002793279A229B9A4205D0884A8449854B18002AF05FFE0DAB18880DAB5968229B219A05F0CBFA03002993219B180035F00FFEECE00DAB1B88180005F07C -:4017C0000BFB03002993E4E00DAB1B8805AA06A9180005F06FFB03002993299B002B00D0D6E010ABDB69032B06D910AB586806AA0423002102F0CCFC10AB1B6A032B00D87D -:40180000C6E010AB586805AA0423012102F0C0FCC046BDE010ABDB692093209B1900012035F054FA03001F931F9B002B02D109232993AEE00DAB188804AB209A1F9905F0D3 -:4018400099FC03002993299B002B06D110AB5868049B1F9A002102F09BFC10AB586804AA0423012102F094FC1F9B180035F0B2FDC0468EE010ABDB691E931E9B1900012020 -:4018800035F024FA03001D931D9B002B02D1092329937EE00DAB188803AB1E9A1D9905F091FC03002993299B002B06D110AB5868039B1D9A002102F06BFC10AB586803AA49 -:4018C0000423012102F064FC1D9B180035F082FDC0465EE010AB1B691C9310AB5B691B930023289310AB58681C9B02AA012102F013FC03002793279A1C9B9A4206D0EF23A2 -:401900009A002849284B18002AF0A6FD0DAB5B68284A934222D11B9B002B1FD01B9B1900012035F0D3F903002893289B002B02D1092329932DE010AB58681B9B289A022164 -:4019400002F0EAFB03002793279A1B9B9A4205D0194A1449144B18002AF07EFD0DAB18880DAB5968029A289C1B9B0093230009F03FFE03002993289B180035F02BFDC0461F -:4019800007E00223299304E0C04602E0C04600E0C046C04613E00223299310E0C0460EE03503000084DC0310F0DA031058DB03107103000000000170CB030000C04610ABA7 -:4019C0005B68299A1100180002F066FCC0462AB010BDC04600B591B001AB18002C231A00002136F0C3F800230F9301AA8023DB011100180002F07CFA01AB1B68022B04D05C -:401A0000032B3DD0012B3DD037E001ABDB680E930E9A8023DB009A4202D908230F9332E00E9B1900012035F051F903000D930D9B002B02D109230F9325E001AB58680E9B4C -:401A40000D9A002102F068FB03000C930C9A0E9B9A4205D0114A1249124B18002AF0FCFC0E9A0D9B1100180009F07EFD03000F930D9B180035F0AEFC05E002230F9302E0BB -:401A8000C04600E0C04601AB5B680F9A1100180002F002FCC04611B000BDC04601040000A4DC0310F0DA031000B58FB06B4618002C231A00002136F059F800230D936A46D9 -:401AC00080231B011100180002F012FA6B461B68022B04D0032B2CD0012B2CD026E06B46DB690C930C9B1900012035F0EFF803000B930B9B002B02D109230D931CE00C9A3F -:401B00000B9B1100180009F0F1FC03000D930D9B002B06D16B4658680C9B0B9A002102F037FB0B9B180035F055FC05E002230D9302E0C04600E0C0466B465B680D9A1100C9 -:401B4000180002F0A9FBC0460FB000BD70B59EB000231D930BAB18002C231A00002136F005F80BAA80239B011100180002F0C0F90BAB1B68022B1BD0032B00D15FE1012BF0 -:401B800000D06BE1FC235B001900012035F09EF803001C931C9B002B02D109231D9361E10BAB5B681C9A1100180002F0DDFC59E108AB18000C231A00002135F0D7FF0BABD2 -:401BC000DB680C2B02D00B231D934BE10BAB58680BABDB6808AA002102F09EFA03001B930BABDA681B9B9A4205D0A34AA349A44B18002AF031FC08AB1B78293B052B00D9D9 -:401C000017E19A009F4BD3181B689F46002307930BAB9B6807AA1100180008F0BDF803001D931D9B002B00D006E10BAB586807AA0423002102F0ACFAC046FDE000231A93D1 -:401C40000BABDB691993199B1900012035F03EF803001A931A9B002B02D109231D93ECE00BAB9B68199A1A99180008F0DDFC03001D931D9B002B06D10BAB5868199B1A9A17 -:401C8000002102F085FA1A9B180035F0A3FBD4E00BAB58680BAB1B6906AA012102F03CFA03001B931B9B042B05D0774A7349744B18002AF0D1FB0BAB58680BAB5B6905AA60 -:401CC000022102F029FA03001B931B9B042B05D06E4A6A496A4B18002AF0BEFB08AB58880699059A0BAB9B6808F02AFD03001D93C046A2E00BAB9B68180007F0D3FF0300B5 -:401D00001D939AE00BAB1B691900012034F0DEFF03001893189B002B02D109231D938CE00BAB58680BAB1B69189A012102F0F4F903001B930BAB1A691B9B9A4205D0544A0B -:401D40004E494F4B18002AF087FB0BAB5B691900012034F0BBFF03001793179B002B06D109231D93189B180035F034FB65E00BAB58680BAB5B69179A022102F0CDF90300CC -:401D80001B930BAB5A691B9B9A4205D0414A3B493B4B18002AF060FB0BAB986808AB5C8808AB5D680BAB1A690BAB596908AB9B68189E03930291179B0193009233002A0033 -:401DC000210009F039FA03001D9336E00BAB1B691900012034F07AFF03001693169B002B02D109231D9328E00BAB58680BAB1B69169A012102F090F903001B930BAB1A6996 -:401E00001B9B9A4205D0244A1C491D4B18002AF023FB0BAB986808AB59880BAB1C6908AB5B68169A0093230009F026FB03001D9303E002231D9300E0C046C04612E00BAB36 -:401E40009B68180007F02EFF0BAB9B68002B08D00BAB9B68180035F0BDFA02E002231D9300E0C0460BAB5B681D9A1100180002F013FAC0461EB070BD57040000BCDC0310BE -:401E8000F0DA0310FCDB031081040000870400009D040000AA040000C204000000B585B00190002303930023029380231B06180002F010F803000393039B1022134001D0E7 -:401EC000FEF7E8FB039B2022134001D0FEF754FC039B4022134001D0FEF7BAFD039A80235B00134001D0FFF7E1F9039B8022134001D0FEF713FF039A80239B00134001D0F8 -:401F0000FFF7CCF8039A8023DB00134001D0FFF75FFB039A80231B01134001D0FFF7C4FD039A80235B01134001D0FEF7EBFB039A80239B01134001D0FFF708FE039A80234A -:401F4000DB011340B1D0FFF745FDAEE700B585B00190019B002B05D11F49204BD42218002AF07AFA1E4B18002DF03AFD0200019B1A62019B1B6A002B05D11749194BD9228D -:401F800018002AF069FA0023039309E0164A039B5B01D3180833019A1A60039B01330393039B0A2BF2D9019B0F4A1A610F4A104B002118002FF034FA0200019B5A60019BB1 -:401FC0005B68002B05D104490A4BE32218002AF043FAC04605B000BDA8DD0310F0DC031098DD03100CDD0310E8000008C40000089D1E001048DD031000B583B00190019BC0 -:40200000180000F051FA019B180003B000BD000010B5144B1B78BFF35B8FDBB21A00012313405A425341DBB2002B17D00D4B18002BF0FAF803005A1E9341DBB2002B0DD088 -:40204000094B1800FFF7D8FF064B18002BF024F9064A0749044B18002BF0BAF8024B180010BDC0467855000828550008C00000082983021000B583B0FFF7CAFF030001935C -:40208000044A019B1100180026F026FB0300180003B000BDF4DD031000B589B00390029101920093039B002B05D14349434B3D22180029F093FF029B0D2B05D83E49404B8E -:4020C0003E22180029F08AFF1F236B4400221A70019B0693009B05931F236B441B780E2B05DD3549374B4622180029F077FF1F236B441B781F226A44591C11701A00039BF2 -:402100009B18069A3F210A402F498A5C1A70069B9B090693069B002B00D0DDE71F236B441B780E2B05DD2449264B4C22180029F055FF1F236B441B781F226A44591C1170A3 -:402140001A00039B9B1823221A701F236B441B780E2B05DD18491B4B5122180029F03EFF1F236B441B781F226A44591C11701A00039B9B18059A3F210A4013498A5C1A70F5 -:40218000059B9B090593059B002B00D0DDE71F236B441B780E2B05DD07490A4B5622180029F01CFF1F236B441B78039AD31800221A70C04609B000BD14DE031094DE03101E -:4021C000ACDE0310D8DE0310B4DD031030B58FB00590049103920293FFF74CFF03000B930B9B002B03D1234B18002AF035F9129B002B04D0129B012B01D0022337E006ABC5 -:4022000018000E231A00002135F0B0FC059B049A06A80E21FFF740FF00230D93129B0122134001D001230D930B9B1B6814331C68039D029A06A90B980D9B00932B00A047AF -:4022400003000A9300230C930A9B002B0ED00A9B094A934205D0094A934205D101230C9304E003230C9301E005230C930C9B18000FB030BD04DF03100B01FF801201FF801C -:4022800030B591B00590049103920293FFF7F2FE03000E930E9B002B03D1364B18002AF0DBF809AB18000E231A00002135F05EFC059B049A09A80E21FFF7EEFE0E9B1B6809 -:4022C0001C331B6807AA09A90E98984703000D9300230F930D9B002B08D00D9B264A934202D107230F9301E005230F930D9B002B3CD107AB1A68039B9A4201D2092336E037 -:40230000029A039BD218029B9A4201D208232EE0039A029BD21807AB1B689A4201D9082325E0002306930E9B1B6818331C68029D149A09A90E98039B019306AB00932B00B8 -:40234000A04703000D930D9B002B06D1069A029B9A420BD208230F9308E00D9B064A934202D107230F9301E005230F930F9B180011B030BD3CDF03100701FF8000B58FB04E -:40238000039002910192FFF775FE03000C930C9B002B03D1204B18002AF05EF807AB18000E231A00002135F0E1FB039B029A07A80E21FFF771FE0C9B1B681C331B6805AA61 -:4023C00007A90C98984703000B9300230D930B9B002B08D00B9B114A934202D107230D9301E005230D930B9B002B11D1019B00225A6005AB5B680122134005D0019B5B6839 -:4024000001221A43019B5A6005AB1A68019B1A600D9B18000FB000BD74DF03100701FF8000B58BB001900091FFF724FE03000893089B002B03D1194B18002AF00DF803ABA2 -:4024400018000E231A00002135F090FB019B009A03A80E21FFF720FE089B1B6820331B6803A9089A100098470300079300230993079B002B0ED0079B094A934205D0094AD2 -:40248000934205D10123099304E00723099301E005230993099B18000BB000BDB0DF03100701FF801201FF8082B00190019B180002B0704700B58FB005900491039202934B -:4024C000039B002B04D1049B002B01D0062333E006AB05AA1A6006AB04225A6006AB039A9A6006AB049ADA6006AB02AA1A6106AB04225A61124B0121180000F09BFE03009E -:402500000C930C9B002B01DC052315E006A90C98002300930023032200F072FF03000D930D9A80231B069A4201D105230D930C9B180001F02FF80D9B18000FB000BDC046E1 -:40254000011A010000B58FB00590049103920293029B002B04D1039B002B01D0062335E008AB05AA1A6008AB04225A6008AB04AA9A6008AB0422DA6006AB029A1A6006AB2D -:40258000039A5A608D235B020121180000F052FE03000C930C9B002B01DC052316E006AA08A90C98012300931300022200F028FF03000D930D9A80231B069A4201D10523E0 -:4025C0000D930C9B180000F0E5FF0D9B18000FB000BD000000B58DB003900291029B002B01D1062339E008AB180008231A00002135F0BCFA06AB03AA1A6006AB04225A6003 -:4026000004AB08AA1A6004AB08225A60144B0121180000F00FFE03000A930A9B002B01DC05231AE004AA06A90A98012300931300012200F0E5FE03000B93029B08AA03CAAB -:4026400003C30B9A80231B069A4201D105230B930A9B180000F09EFF0B9B18000DB000BD021A010000B589B0039004AB03AA1A6004AB04225A60124B0121180000F0DAFDD4 -:4026800003000693069B002B01DC052315E004A90698002300930023012200F0B1FE03000793079A80231B069A4201D105230793069B180000F06EFF079B180009B000BD1A -:4026C000031A010010B58AB003900023069300230993039B1B69089300230593039BDB68042B03D1039B5B69042B02D080231B0654E0039B586806AA0423002101F00CFDA8 -:402700000300042B02D080231B0647E0039B586805AA0423022101F0FFFC0300042B02D080231B063AE0089B180034F049FE03000993099B002B01D105232FE0039B58688A -:40274000039B1B69099A012101F0E6FC0200039B1B699A4205D0099B180034F03BFE05231CE0039B5B68180001F0D6FE03001C000699059B0998089A009303002000FFF702 -:4027800025FD03000793089A099B0021180035F0EDF9099B180034F01DFE079B18000AB010BD10B588B003900023059300230493039BDB68042B03D1039B1B69042B02D088 -:4027C00080231B064FE0039B586805AA0423002101F0A2FC0300042B02D080231B0642E0039B586804AA0423012101F095FC0300042B02D080231B0635E0039BDB6918006A -:4028000034F0DEFD03000793079B002B01D1052329E0039B5B68180001F07EFE03001C000599049A039BD869079B009303002000FFF726FD03000693069B002B07D1039BBD -:402840005868039BDB69079A002101F0A1FC039BDA69079B0021180035F088F9079B180034F0B8FD069B180008B010BD00B587B0019003AB180008231A00002135F076F9F6 -:4028800000230293019BDB68042B03D1019BDB69082B02D080231B0626E0019B586802AA0423002101F038FC0300042B02D080231B0619E0019B5B68180001F02DFE030003 -:4028C0001800029B03AA1900FFF758FD03000593059B002B07D1019B5868019BDB6903AA002101F055FC059B180007B000BD00B585B0019000230393019BDB68042B02D048 -:4029000080231B0619E0019B586803AA0423002101F002FC0300042B02D080231B060CE0019B5B68180001F0F7FD03001A00039B19001000FFF774FD0300180005B000BDB2 -:4029400000B585B00190009100230393019B1B68022B04D0032B10D0012B0ED006E0019A009B100098470300039307E0019B1B6807490848982229F06FFDC046019B5B686C -:40298000039A1100180001F087FCC04605B000BD44E00310ECDF031000B591B0019000230F9303AB18002C231A00002135F0DEF880231B06180001F08DFA03000F9325F0AB -:4029C00043FC03000E930E9B002B05D00E9B21492148AC2229F040FD0F9B202213400AD003AB1900202001F083FA1C4A03AB11001800FFF7A5FF0F9B102213400AD003AB8F -:402A00001900102001F074FA154A03AB11001800FFF796FF0F9B402213400AD003AB1900402001F065FA0F4A03AB11001800FFF787FF0F9B80221340BAD003AB1900802041 -:402A400001F056FA084A03AB11001800FFF778FFAEE7C04654E0031010E00310C5260010A32700106D280010EF28001000B585B00190019B002B05D11F49204B782218005C -:402A800029F0EAFC1E4B18002CF0AAFF0200019B1A62019B1B6A002B05D11749194B7D22180029F0D9FC0023039309E0164A039B5B01D3180833019A1A60039B013303938D -:402AC000039B032BF2D9019B0F4A1A610F4A104B002118002EF0A4FC0200019B5A60019B5B68002B05D104490A4B8722180029F0B3FCC04605B000BD18E1031070E003105A -:402B000008E103108CE003106C0200084802000899290010C8E0031000B58BB0039002910192039B002B05D139493A4B2C22180029F054FA029B002B05D13549364B2D22BD -:402B4000180029F04BFA00F031FE03000793079B002B02D0079B1B6801E001235B4206932E4B0493039B04A90022180029F0C4FB039B0121180029F005FC03000593002307 -:402B8000099300230893002308932CE000230493089B1A04059B13430993039B9A68089B1B01D3181800099A04AB190029F0A4FB031E15D0039B9A68089B1B01D318029A73 -:402BC000DA60039B9A68089B1B01D318069A5A60039B9A68089B1B01D318019A9A6007E0089B01330893039B5A68089B9A42CDD8039B5A68089B9A4205D10549084B5D2266 -:402C0000180029F0EBF9099B18000BB000BDC04624E1031080E103109CE10310FFFF0000B8E1031000B589B003900291039B002B05D13649364B6622180029F0CFF9029BAE -:402C4000002B05D13149334B6722180029F0C6F9029B1B0C0793039B5A68079B9A4209D8079A039B5B682C492C48009313006D2229F0F2FB039B9A68079B1B01D3181A68D4 -:402C8000029B9A4205D0029B23492548712229F0E3FB00F08BFD03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A420ED0039BB3 -:402CC0009A68079B1B01D3189A68059B9A4205D01149144B7B22180029F0BEFB039B9A68079B1B01D31800221A60039B9A68079B1B01D31800225A60039B9A68079B1B012E -:402D0000D31800229A60C04609B000BD24E1031080E10310DCE1031088E30310F8E1031044E2031080E2031000B589B003900291039B002B05D13649364B8622180029F010 -:402D40004DF9029B002B05D13349344B8922180029F082FB029B1B0C0793039B5A68079B9A4209D8079A039B5B682B492C48009313008F2229F070FB039B9A68079B1B01DB -:402D8000D3181A68029B9A4205D0029B22492548932229F061FB00F009FD03000693069B002B02D0069B1B6801E001235B420593039B9A68079B1B01D3185A68059B9A42A4 -:402DC0000ED0039B9A68079B1B01D3189A68059B9A4205D01049144B9D22180029F03CFB039B9A68079B1B01D318DB68002B05D107490E4BA222180029F0F0F8039B9A68C7 -:402E0000079B1B01D318DB68180009B000BDC04624E1031080E10310A4E30310BCE20310F8E1031044E20310FCE203104CE3031000B583B00190019B002B05D10A490B4B24 -:402E40004E22180029F008FB094B1800FFF77EF8084B1800FFF70AFE019B054A1A600223180003B000BDC046DCE30310C0E30310EC0200081403000884B00190009100233F -:402E800003930FE0019B1A69039B5B01D3180293029B1A68009B9A4201D1029B08E0039B01330393019B5A69039B9A42EAD80023180004B07047000000B585B001900023C0 -:402EC000039316E00F4B1968039A13009B009B18DB00CB18019A11001800FFF7CDFF03000293029B002B01D0029B08E0039B01330393044B5A68039B9A42E3D8002318008A -:402F000005B000BD6C03000800B587B003900291029B002B0DD1039B1B7D01225340DBB2002B06D0039B1B681A491B48382229F093FA029B002B2BD0029B9B69002B06D129 -:402F4000029B1B68134915483D2229F085FA002305930CE0029B9A69059B9B00D3181A68039B1B689A4212D0059B01330593029BDA69059B9A42EDD8039B1A68029B1B68E6 -:402F80000449074800931300462229F065FAC04607B000BDF8E60310ECE3031024E403105CE4031000B583B001900091009A0199034B1800FFF7B0FD0300180003B000BD62 -:402FC0007403000800B583B00190019A044B11001800FFF7A9FE0300180003B000BDC0467403000800B585B001900091019B9B681A6A01235B42190010002CF015FD0300CF -:403000000393039B002B05D02349244B5722180028F0E4FF019BDB69002B03D1019B009A9A6103E0019BDB69009A1A61019B009ADA61019B9B685A68019B5B6819001000B3 -:403040002EF046FA03000293029B002B05DA1249134B6622180028F0C1FF019B5B68029A134005D10C490F4B6722180028F0B6FF019B9B681B6A18002CF000FD0300039353 -:40308000039B002B05D00449044B6B22180028F0A5FFC04605B000BD9CE40310F0E4031004E5031020E5031030B58BB005900491049B002B05D15649564B7022180028F083 -:4030C0008DFF059B1800FFF7F7FE03000993099B002B05D1059B50495048742229F0BCF9099B1B69002B05D1049B1A68099BDB689A4209D8099B1B69012B17D1049B1A68DD -:40310000099BDB689A4211D0049B1D68099B1A68099BD968099B1B693F4C41480293019100922B007A22210029F096F900F03EFB03000893089A099B11001800FFF7E4FE29 -:40314000089A049B0C21180000F06AFB03001A0001235340DBB2002B05D02F49314B8122180029F079F9304B1B6A002118002BF061FB03000793079B002B1BD1049B2B4ABF -:403180005A60089B002B0FD0049B9B6818002CF085FF03000693069B002B35D01C49244B8A22180028F01AFF049B9B68180001F021FB29E0099B9B681A68079B1100180054 -:4031C000FFF7F0FE0200049B5A60079B02225A75079B089A1A60079B099A5A60079B049ADA60079B01221A75079B00229A60079B00221A61079B00229A75079A099B11004A -:403200001800FFF7EFFE00E0C0460BB030BDC0469CE403103CE50310E4E6031050E5031070E50310CCE503106C03000801000080F0E4031000B58FB00190009109AB180026 -:4032400010231A00002134F091FC05AB00221A6005AB00225A6005AB09AA9A6005AB1022DA6002AB009A1A6002AB00225A6005AB1A00002101202CF0BDFE020002AB9A6008 -:4032800002AB9B68002B05D119491A4BB722180029F0E2F802AA019B11001800FFF704FF02AB9A6801235B42190010002CF0CEFE03000D930D9B002B05D00F490F4BBD22EB -:4032C000180028F08BFE02AB9B6818002CF008FF03000D930D9B002B05D00749074BC022180028F07BFE02AB5B6818000FB000BD18E70310FCE503109CE40310F0E403102E -:4033000000B585B001900091009B002B05D13649364BC922180028F061FE019B1800FFF751FE03000393039B002B05D12E49304BCB22180028F052FE039B1A68009B1821E7 -:40334000180000F06DFA03001A0001235340DBB2002B05D02749284BCE22180029F07CF8039B9B7D012B1DD1009B802212061A61039B1B68002B05D1009B5B69180001F0DB -:4033800039FA2EE0009B5B6918002CF087FE03000293029B002B24D01349184BD822180028F01CFE039B153304220321180000F0A3F9039B009ADA60039B02221A75009B2B -:4033C0001868009B5968009B9A68009BDB6800F067F9039B5B68039A11001800FFF702FE00E0C04605B000BD9CE403103CE5031034E6031024E703104CE60310F0E4031073 -:4034000000B595B003900291019200930FAB180010231A00002134F0A9FB0BAB00221A600BAB00225A600BAB0FAA9A600BAB1022DA6005AB029A1A6005AB019A5A6005AB54 -:40344000009A9A6005AB169ADA6005AB00221A610BAB1A00002101202CF0CCFD020005AB5A6105AB5B69002B06D183235A001B491B4B180028F0F0FF05AA039B1100180098 -:40348000FFF73EFF05AB5A6901235B42190010002CF0DCFD03001393139B002B06D086235A001049104B180028F098FD05AB5B6918002CF015FE03001393139B002B07D09F -:4034C0001023FF331A000749074B180028F086FD05AB1B69180015B000BDC04634E70310FCE503109CE40310F0E4031000B585B001900091009B002B06D18C235A0020496D -:40350000204B180028F06AFD019B1800FFF75AFD03000393039B002B07D11C23FF331A001749194B180028F059FD039B1A68009B0821180000F074F903001A00012353404C -:40354000DBB2002B06D08F235A001049104B180028F082FF039B15330321180000F004F9039B009ADA60039B03221A75039B5B68039A11001800FFF735FDC04605B000BDB2 -:403580009CE403103CE5031034E6031040E703107CE6031000B58FB00190019B002B55D009AB180010231A00002134F0DFFA05AB00221A6005AB00225A6005AB09AA9A608B -:4035C00005AB1022DA6003AB019A1A6005AB1A00002101202CF00EFD020003AB5A6003AB5B68002B06D1A1235A001A491A4B180028F032FF03AA019B11001800FFF776FFB8 -:4036000003AB5A6801235B42190010002CF01EFD03000D930D9B002B06D0A4235A000F490F4B180028F0DAFC03AB5B6818002CF057FD03000D930D9B002B08D04C23FF33EC -:403640001A000649064B180028F0C8FCC0460FB000BDC04650E70310ACE603109CE40310F0E4031000B585B0019000230393019B1800FFF721FC03000293029B002B0AD076 -:4036800000F094F8031E03D1029B1B7D002B02D0029BDB680393039B180005B000BD000000B589B00790069105920493079B002B02D1069B002B0AD1059B002B02D1049BFB -:4036C000002B04D1069A049BD318042B0CD9079A07490848049B0293059B0193069B00931300272228F0B8FEC04609B000BDC04688E803105CE7031000B587B003900800A3 -:4037000011000B236B44021C1A700A236B440A1C1A7017236B440B226A4412781A700A236B441A780B216944039B180028F0B4FD03001A0001235340DBB2002B0DD00B2332 -:403740006B441B781A0017236B441B780449054800931300302228F07FFEC04607B000BD98E80310B0E7031000B585B003900A000B236B441A70039B1B780B226A4412780F -:403780009A420CD0039B1B781A000B236B441B780449054800931300382228F05DFEC04605B000BDB0E80310B0E7031000B583B02DF064FE03000093009B002B05D11549C5 -:4037C000154B5E22180028F009FC0023019317E0124B1968019A13009B009B18DB00CB185A68009B9A4208D10C4B1968019A13009B009B18DB00CB1808E0019B013301937E -:40380000064B5A68019B9A42E2D80023180003B000BDC046F8E7031068E803106C0300088CB0039002910192039B002B01D1002376E0029B002B01D1012371E0039A029B74 -:40384000D3185A1E039B9A4201D2002368E080231B050B9380235B020A9380235B05099380231B030893304B0793304B0693304B0593F023DB020493019B002B27D1039A15 -:40388000079B9A420FD3079A069BD218039B9A4209D9039A029BD2180799069BCB189A4201D801233CE0039A059B9A4237D3059A049BD218039B9A4231D9039A029BD218F0 -:4038C0000599049BCB189A4229D8012328E0039A0B9B9A420FD30B9A0A9BD218039B9A4209D9039A029BD2180B990A9BCB189A4201D8012314E0039A099B9A420FD3099A4F -:40390000089BD218039B9A4209D9039A029BD2180999089BCB189A4201D8012300E0002318000CB07047C04600000108007703000000081010B52EF079FE174B1A0018213B -:403940000A202AF04BFF0200144B1A62134B1B6A002B05D1124A134B1100180028F07CFD114B1A0028210A202AF038FF02000B4B5A620A4B5B6A002B05D1094A0B4B110061 -:40398000180028F069FD054B1800FFF751FA0200024B5A60C04610BD3C0300086C03000858E90310F8E803105403000824E9031010B5034B1B68180001F078F8F9E7C04673 -:4039C0009803000800B583B001900091009A0199034B1800FFF7A0F80300180003B000BD8003000800B583B00190019A044B11001800FFF799F90300180003B000BDC04637 -:403A00008003000800B583B00190019A034B11001800FFF707F9C04603B000BD8003000800B583B00190019A034B11001800FFF7F9F8C04603B000BD7403000884B001904D -:403A400000910023039311E0019B1A69039B5B01D3185A68009B9A4205D1019B1A69039B5B01D31808E0039B01330393019B5A69039B9A42E8D80023180004B07047000065 -:403A800010B596B00190009103AB180028231A00002134F06BF803AB019A1A60019B1B7D022B00D0F6E0019BD868019B1B681A001821FFF7B5FE03001A0001235340DBB2E4 -:403AC000002B05D08D498E4B5B22180028F0C4FC019BDB681393139B1B681293139B5B681193139B9B681093139BDB680F930F9B109A11991298FFF7D3FD119BD9B203AB00 -:403B000024229954119B002B5DD0119BD900019B1A68129B1800FFF783FE03001A0001235340DBB2002B05D07449764B6B22180028F092FC0023159341E0159BDB00129A22 -:403B4000D3185B68002B36D0159BDB00129AD01803AA159BDB000421D3185B18020003CA03C3159BDB00129AD3185A680099159B02339B00CB1804331A6003AA159BDB002E -:403B8000D3180433186803AA159BDB00D31808331968019B1B681A00FFF742FE03001A0001235340DBB2002B06D0159B534956487C2228F051FCC046159B01331593159A85 -:403BC000119B9A42B9D30F9B002B63D00F9BD900019B1A68109B1800FFF722FE03001A0001235340DBB2002B05D04449474B8322180028F031FC0023149347E0149BDB0032 -:403C0000109AD3185B68002B3CD0119A149BD318149AD2001099881803AADB000421D3185B18020003CA03C3149BDB00109AD3185A680099149B06339B00CB1804331A60B6 -:403C4000119A149BD31803AADB00D31804331868119A149BD31803AADB00D31808331968019B1B681A00FFF7DBFD03001A0001235340DBB2002B06D0149B204924489422BE -:403C800028F0EAFBC046149B01331493149A0F9B9A42B3D31F4B5A6A01235B42190010002AF0C8FD03000E930E9B002B05D11349194B9D22180028F0CFFB0E9B03AA13CACC -:403CC00013C313CA13C313CA13C312681A600E9B00211800FFF776FE03000D93019B1B7D1A00009B1A60019B9A68009B9A60009B0D9A5A60C04616B010BDC046B8EF0310BA -:403D000068E9031090E90310B0E90310D4E90310F4E903106C03000818EA031000B587B00190019B9B681A6A01235B42190010002BF07AFE03000593059B002B05D02849D2 -:403D4000284BAD22180028F049F9019B9B690493049B002B05D12449244BB322180028F07BFB049B1A69019B9A61049B00221A61019B9B69002B1DD1019B0022DA61019B1E -:403D80005B6818002DF0CCFB03000393039B002B05DA1349164BBF22180028F01FF9019B5B68039A134005D10D49124BC022180028F014F9019B9B681B6A18002BF05EFE73 -:403DC00003000593059B002B05D00549054BC522180028F003F9049B180007B000BDC04644EA031098EA0310CCEF0310ACEA0310CCEA0310E8EA031000B58BB00491039291 -:403E000017236B44021C1A70FFF7D0FC03000993099B002B05D12A492A4BCE22180028F0DDF8099BDB68082213430893099B9A68089B1343079317236B441B78002B02D05A -:403E4000079B04930EE0089B049A1A40049B9A4208D0049A1C491D48089B00931300DB2228F0FAFA039A80231B069A4201D0039B01E001235B4204981A0002212DF08CFBA8 -:403E800003000693069B079A1A40069B9A420DD0039A80231B069A4202D0069B023305D007490B4BE722180028F098F8069B023301D0069B00E0002318000BB000BDC04666 -:403EC00044EA031004EB0310ECEF031024EB031060EB031000B583B00190019B1A0000210120FFF789FF0300180003B000BD000010B58AB003900291FFF758FC0300099389 -:403F0000099B002B05D15149514BF922180028F065F8099A029B2C211800FFF781FC03001A0001235340DBB2002B05D049494A4BFC22180028F090FA029B2C220021180062 -:403F400033F014FE039B002B06D0039B013B039A134001D1012200E0002223236B441A701A7801210A401A7023236B441B7801225340DBB2002B04D1099B9B68039A134043 -:403F80000AD1099B9B68039C84225200314933480093230028F060FA2DF0E6FA03000793039B079A134007D10E23FF331A0029492B4B180028F050FA039A099B110018007E -:403FC000FFF73CFD03000693069B002B07D1039C89235A001F492348230028F03DFA069B1800FFF79BFE03000593059B1B7D022B0AD0032B10D0012B15D1059B153302211B -:404000001800FFF7B1FB18E0059B1533052204211800FFF771FB10E0059B153303211800FFF7A2FB09E0059B1B7D1C0097235A0008490D48230028F00FFA029A059B1100F1 -:404040001800FFF71DFDC0460AB010BD44EA031004EB0310F8EF0310DCEB0310F8EB031044EC031060EC0310B0EC031000B587B00390029101920093039B1800FFF7B2FC9B -:4040800003000593059B1B68153305211800FFF76BFB029B032B06D99E235A001C491D4B180028F0D9F9059B24229B5C1A00029B9A4201D8002327E0029BDB00059AD31857 -:4040C00004330493049B5A68009B9A4202D2049B5B680093009B002B15D0019B002B06D0049B1968009A019B180033F0ADFC049B1A68009BD218049B1A60049B5A68009B14 -:40410000D21A049B5A60009B180007B000BDC04600F00310E0EC031000B587B00390029101920093FFF742FB03000593059B002B07D15823FF331A001149124B180027F0D5 -:404140004DFF059A0099019B1800FFF769FB03001A0001235340DBB2002B06D0AD235A0009490A4B180028F077F9009B019A02990398FFF77BFF0300180007B000BDC04669 -:4041800044EA031004EB031010F00310FCEC031010B58AB00590049103920293029B002B6BD0FFF703FB03000993099B002B06D1B6235A003249334B180027F00FFF099A13 -:4041C0000299039B1800FFF72BFB03001A0001235340DBB2002B07D07023FF331A002A492A4B180028F038F9059B1800FFF7FAFB03000893089B1B68153305211800FFF7E4 -:40420000B3FA089B24229B5C1A00049B9B180493049B032B06D9BC235A001B491C4B180028F01AF9049BDB00089AD31804330793079B5A68029B9A420AD2079B5B68029C67 -:404240007E22FF32104913480093230028F004F9079B1B68029A0399180033F0F5FB079B1A68029BD218079B1A60079B5A68029BD21A079B5A60C04600E0C0460AB010BDE3 -:4042800044EA031004EB03101CF00310FCEC03101CED031038ED031010B58EB001900091019B1800FFF79EFB03000B930B9B1B680D930D9B002B07D18C23FF331A008B4901 -:4042C0008B4B180027F08AFE0D9BDB68002B06D1C6235A008549874B180027F07FFE019B1800FFF78FFB0B9B28220021180033F03DFC814B5B6A0B9A110018002AF0C2FAC7 -:4043000003000A930A9B002B06D0CB235A0077497A4B180027F062FE00230C930D9B1A6827236B4451424A411A700D9B1B7D022B51D0032B00D178E0012B00D0A3E0009B4F -:40434000002B0CD0009B6E4A934208D0009CA023FF331A006B496C48230028F07DF80D9BDB680893089B9B680C93009B644A934229D10D9B153302211800FFF7F5F9089BDE -:404380005B681800FFF74CFB0D9B18220021180033F0ECFB584B1B6A0D9A110018002AF071FA03000793079B002B06D0D9235A004E49524B180027F011FE089B009A5A6044 -:4043C00000230D936BE00D9B1533032202211800FFF792F963E0009A80231B069A420BD0009B4A4A934207DA009CE0235A0045494748230028F030F80D9B153303220521ED -:404400001800FFF779F9009A80231B069A4202D10D9B01229A750D9BDB680693069B009A1A61069B5B690C9339E00D9BDB680593059B5B680C930D9B1533012203211800EA -:40444000FFF75AF9059B1B681800FFF7E9FA0D9B18220021180033F089FB274B1B6A0D9A110018002AF00EFA0300049300230D93049B002B12D0E223FF331A001B491F4B0C -:40448000180027F0ABFD0D9B1B7D1C00EA23FF331A001C491F48230027F0DEFFC0460D9B002B05D00D9B0022DA600D9B00221A7527236B441B78002B04D00C9B180000F048 -:4044C00099F90FE00C9B18002BF0E8FD03000393039B002B06D0FB235A000449074B180027F07CFDC0460EB010BDC04644EA031078ED031098ED03106C03000898EA031091 -:404500000100008028F00310C0ED031080000080FCED031034EE031000B585B00190019B1800FFF75FFA03000393039B1B68002B05D10A4A0A490B4B180027F04FFD039B8F -:404540001B681B68002B02D101235B4203E0039B1B681B681B68180005B000BD1E02000044EA0310D4EE031000B585B001900091019B1800FFF736FA03000393039B1B680C -:40458000009A9A60C04605B000BD000000B583B0154B1B685B6918002BF080FD03000193019B002B08D0019B033305D00F49104B4422180027F012FD0E4B1B681B69180004 -:4045C0002BF06CFD03000193019B002B08D0019B033305D00549064B4722180027F0FEFCC04603B000BDC046940300084CF00310BCF003109803000810B52EF031F9C0464A -:4046000010BD10B52EF02CF9C04610BD00B587B001AB186059609A6001AB1B68022B11D002D8012B05D045E0032B15D0042B1DD040E001AB9A6801AB5B6819001000FEF748 -:4046400033FD3DE001AB9B681A0001AB5B6819001000FEF755FE33E001AB9B681A0001AB5B6819001000FEF741FF29E001AB5B680593059B002208211800FFF7D1F80300C6 -:404680001A0001235340DBB2002B05D00E490F4B6C22180027F0E0FE01AB9B681800FEF7E1FF0200059B1A60059B5B68180000F0A1F805E00649074B7522180027F08EFCBE -:4046C000C04607B000BDC04698F10310F4F003104CF003101CF1031000B599B0394B17930FAB394A1A60179B0C331A000FAB5A60179B48331A000FAB9A606B4618003C23B3 -:404700001A00002133F032FA6B46304A1A600FAB5B6816930FAB9B6815936946169B3C22180033F091F96946159B3C22180033F08BF90FA9179B0C22180033F085F9244B00 -:4047400018002BF04DF903001493149B002B05D12049214B9F22180027F040FC1F4B1A00002101202BF046FC03001393139B002B05D118491A4BA222180027F02FFC194BA2 -:404780001A00002101202BF035FC03001293129B002B05D10F49144BA522180027F01EFC124B1868139B149A159900F03DF8104B1B68129A1699180000F096F8C04619B08A -:4047C00000BDC04600770408779A333D0C4A286368F103104CF0031024F1031078F1031038F1031088F1031050F10310940300089803000800B587B0019003AB18000C23E2 -:404800001A00002133F0B2F9019A03AB5A60054B186803AB19685A689B6800F0B5F8C04607B000BD9403000800B585B00390029101920093039B002B05D12349234B2422FD -:40484000180027F0CBFB029B002B05D11E49204B2522180027F0C2FB029B1B681D4A934205D019491C4B2622180027F0B7FB019B002B05D11449194B2722180027F0AEFBFE -:40488000009B002B05D11049154B2822180027F0A5FB039B134A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61039B009A5A61EA -:4048C000C04605B000BDC046A8F1031004F2031014F203100C4A28632CF203105CF203106CF20310FFD948A200B585B0039002910192039B002B05D11C491D4B3722180046 -:4049000027F06CFB029B002B05D11849194B3822180027F063FB029B1B68174A934205D01249164B3922180027F058FB019B002B05D10E49124B3A22180027F04FFB039B27 -:40494000104A1A60029B1A1D039B5A60029B08331A00039B9A60029B0C331A00039BDA60039B019A1A61C04605B000BDA8F1031004F2031014F203100C4A28632CF20310D3 -:4049800084F2031042658BA610B586B003906846016042608360039B002B05D13D493E4B4722180027F01AFB039B1B683B4A934205D038493A4B4822180027F00FFB039B82 -:4049C0001A6901235B42190010002BF02DF803000593059B002B1BD02E49324B4B22180027F0FCFA039B5A69FA235B00190010002BF02CFB03000593059B002B08D0059B11 -:404A0000023305D02349284B5022180027F0E6FA039B9B681B68013303221A40039B5B681B689A42DED0039BD968039B9B681A6813005B009B189B00CB186A4613CA13C3C3 -:404A4000039B9B68039A92681268013203210A401A60039B5B681B68013303221A40039B9B681B689A4201D1FFF7C6FD039B1B6918002BF003F803000593059B002B05D0BC -:404A80000449084B5D22180027F0A8FAC04606B010BDC046A8F1031004F20310FFD948A298F20310C4F20310D8F2031010B586B00190019B002B05D12D492E4B6322180008 -:404AC00027F08CFA019B1B682B4A934205D028492A4B6422180027F081FA019B1A69FA235B00190010002BF0B1FA03000593059B002B31D0059B02332ED01D49204B6822AA -:404B0000180027F06BFA019BD968019B5B681A6813005B009B189B00CA1802AB13CA13C3019B5B68019A52681268013203210A401A60019B9B681B68023303221A40019B6A -:404B40005B681B689A4201D1FFF75BFD02AB186859689A68FFF75AFD019B5B681A68019B9B681B689A42CED1C04606B010BDC046A8F1031004F2031042658BA610F3031006 -:404B8000D8F2031082B00190034A019B1A60019B180002B07047C04688F3031000B583B00190019B1800FFF7EDFF019B180028F0D5FB019B180003B000BD82B0019000238C -:404BC000180002B0704784B00390009201930023180004B0704784B00390009201930023180004B0704710B582B00190019B1B6828331B68019A1000984703000C001800D8 -:404C0000210002B010BD10B584B0039000920193039B1B682C331B68039A1000984703000C001800210004B010BD82B0019001235B42180002B0704730B585B00390009286 -:404C40000193039B1B6824331B68039A1000984703000C00009801991A00230036F0BAFF1C001300190022000B0013432DD1039B1B6824331B68039A1000984703000C005D -:404C8000089809991A00230036F0A4FF1C001300190022000B00134317D10099019A089B099CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D875 -:404CC00001D1944201D8012300E00023180005B030BD30B585B0039000920193039B1B6828331B68039A1000984703000C00009801991A00230036F06DFF1C00130019009C -:404D000022000B0013432DD1039B1B6828331B68039A1000984703000C00089809991A00230036F057FF1C001300190022000B00134317D10099019A089B099CC9186241AA -:404D40000C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B030BDF0B585B0039000920193039B1B6830331968009B1A -:404D8000019C03981A002300884703000C00009801991A00230036F01DFF1C001300190022000B00134342D10099019A0A9B0B9CC91862410D001600039B1B6830331F68DF -:404DC0000099019A0A9B0B9C5B18544101214942CA175B18544103991A0023000800B84703000C001A0023002800310036F0F2FE1C001300190022000B00134317D10099AE -:404E0000019A0A9B0B9CC91862410C001500039B1B6838331B68039A1000984702000B009D4204D801D1944201D8012300E00023180005B0F0BD000082B00190034A019BB5 -:404E40001A60019B180002B07047C04688F30310F0B585B0039002910192039B1800FFF7EBFF104A039B1A60039B0433180000F004FB029B1E0000231F00039B1E615F61B6 -:404E8000019B1C0000231D00039B9C61DD61039B202200219954039B00225A62039B180005B0F0BD44F3031000B583B001900A4A019B1A60019B180000F0E8F8019B04331B -:404EC000180000F0E5FA019B1800FFF75BFE019B180003B000BDC04644F3031000B583B00190019B1800FFF7DFFF019B180028F035FA019B180003B000BD0000F0B5C64683 -:404F000000B58CB00990099B20229B5C01225340DBB2002B02D0099B00225A62099B24330121180027F02EFA03000B930B9B012B01D00023A2E0099B0433180000F0B4FA5A -:404F400003000A930A9B002B07D0099B24330121180027F04BFA0A9B90E0099B9969DA69099B5C691B69C91862410C001500099B0433180000F0F6FC8046099B043318003B -:404F800000F0E5FC030043440093002301930123019A954206D8019A954202D1009A944200D80023DBB2002B07D0099B24330121180027F01BFA344B60E0099B1C695D698A -:404FC000099B0433180000F0C2FC03001E0000231F000123AF4203D801D1A64200D80023DBB2002B07D0099B24330121180027F0FDF9254B42E0099B5C691B691A00224339 -:405000000DD1099B0433180000F0A1FC0300029300230393099B0299039A19615A61099BDC699B691A00224323D1099B0433180000F098FC0300049300230593099B0433A9 -:40504000180000F084FC0300069300230793099B5C691B690699079AC91AA2410B0014000499059AC91862410B001400099A9361D461099B2022012199540A9B18000CB024 -:4050800004BC9046F0BDC0465FF0FFFF00B585B00190019B20229B5C01225340DBB2002B04D0019B00225A62002316E0019B24330121180027F09AF903000393039B002BFC -:4050C00001D0002309E0019B202200219954019B0433180000F02EFA0300180005B000BD10B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A4F -:405100000C9B0D9C0093019413000A00FFF794FD031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA0300EE -:405140000993099B18000AB010BDC0465FF0FFFF10B58AB00590049102920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7A9FDC4 -:40518000031E01D0012300E00023002B11D0059B19695A69029B039C5B18544106930794059B181D069A0C9B049900F03DFA03000993099B18000AB010BDC0465FF0FFFF58 -:4051C00010B58AB0059002920393174B0993059B20229B5C002B0ED005980299039A0C9B0D9C0093019413000A00FFF7BFFD031E01D0012300E00023002B11D0059B1969AE -:405200005A69029B039C5B18544106930794059B043306990C9A180000F0F8FA03000993099B18000AB010BD5FF0FFFF10B582B00190012300241800210002B010BD30B581 -:4052400085B00190019B20229B5C01225340DBB2002B02D0002400250AE0019B0433180000F05CFB03000393039B1C0000231D0023002C001800210005B030BD70B584B0D8 -:405280000190019B20229B5C01225340DBB2002B02D0002500260EE0019B1A1D019B5C691B691900100000F044FB03000393039B1D0000231E002B0034001800210004B01E -:4052C00070BD70B586B0039000920193039B20229B5C01225340DBB2002B02D00025002611E0039B1A1D039B5C691B691900009BCB181900100000F01CFB03000593059B5C -:405300001D0000231E002B0034001800210006B070BD10B584B00190019B20229B5C01225340DBB2002B02D001235B420BE0019B04330F246C44180000F01FFB03002370DB -:405340000F236B441B78180004B010BD10B582B00190019BDC699B691800210002B010BD00B583B00190019B180000F003F803B000BD000000B583B00190019BDB68002BF0 -:4053800005D1074A0749084B180026F027FE019BDB681B68019A1000984703B000BDC0463A02000044FA031078FA031010B5074B1B68002B08D0054B1A6801235B42190013 -: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 -:405A0000009B00E0019B180002B0704710B582B00190019B1B68002B17D1FFF7C7FC019B1B68002B0FD1019B083319002420FAF7EDFC041E04D0200027F0ECFC220000E00C -:405A40002200019B1A60FFF7C3FC019B1A68019B08339A4205D00549054B6822180026F0BDFA019B1B68180002B010BD80FA0310B8FA031082B00190019B074A1A61C0464D -:405A8000019B1B69002B01D0012200E00222019B1A75C04602B07047E0FA031082B00190034A019B1A60019B180002B07047C046D4FA031000B583B00190019B1800FFF7CF -:405AC000EDFF019B180027F049FC019B180003B000BD82B00190C04602B0704700B585B0039002910192039B1B6810331B68019A0299039898470300180005B000BD00B5D8 -:405B000083B00190019B1B6818331B68019A100098470300180003B000BD00B583B00190019B1B6828331B68019A100098470300180003B000BD82B001900A006B46033360 -:405B40001A706B4603331B78002B01D0002301E019235B42180002B0704782B001900123180002B0704782B001900A006B4602331A801123180002B0704782B00190009109 -:405B8000C04602B0704710B586B0019026F03CFB019B180000F02BF9019B28331800FAF7E9FC031E06D0019B38229B5C002B01D0012300E00023002B01D025F093FC019BAD -:405BC00028331C0002AB00211800FAF787FC02AB19002000FAF7D8FC02AB1800FAF796FC26F02CFBC04606B010BD10B582B001900198019B9968DA68019B5C6A1B6A5B18C1 -:405C000054411A00230000F0DDF8019B28331800FAF7B0FC031E04D0019B28331800FFF79FFBC04602B010BD00B587B00190019B28331A0002AB11001800FAF778FC019BA3 -:405C40001800FFF7A0FF02AB1800FFF793FB02AB1800FAF75BFCC04607B000BD10B582B00190019B180000F052F8019B00221A60019A002300249360D460019A002300240E -:405C80001361546126F0F8F80200019B9A61019B01221A77019B180000F020F8019B180002B010BD00B583B0019026F0ADFA019B1B68002B05D0019B1B7F002B01D025F041 -:405CC00011FC019B00221A6026F0B8FA019B180000F023F8019B180003B000BD10B582B0019026F091FA019B9B69180026F0ADF803000C00019A9360D460019A0023002465 -:405D00001361546126F09AFAC04602B010BD82B00190019B180002B0704782B00190019B180002B07047000010B582B00190019B180000F06AF80F4A019B1A60019A002390 -:405D400000249360D460019B00221A61019B00225A6126F091F80200019B9A61019B9B69054A1100180025F08DFF019B180002B010BDC04610FF03107D5D001000B585B006 -:405D80000190019B0393039B1B6808331B68039A10009847C04605B000BD000000B583B00190074A019B1A60019B180000F01FF8019B180000F02FF8019B180003B000BDB3 -:405DC00010FF031010B586B0059002920393059B9869059B08331900059A029B039C00921A00230025F0B9FFC04606B010BD00B583B00190019B9A69019B0833190010001A -:405E000025F0F3FFC04603B000BD82B00190019B180002B0704782B00190019B180002B07047000000B583B00190054A019B1A60019B180000F042F8019B180003B000BD45 -:405E4000D442041000B583B00190019B1800FFF7E9FF019B180027F081FA019B180003B000BD00B583B00190019B1B6810331B6801980122002198470300180003B000BDDE -:405E800000B583B00190019B1B6810331B680198002200219847C04603B000BD00B583B00190019B180000F00FF8034A019B1A60019B180003B000BDD442041082B00190BB -: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 -:4065C000180002B07047C0461CFF031082B002006B4606331A806B4606331B88123B0C2B1ED89A00104BD3181B689F46012318E0022316E0032314E0042312E0052310E05D -:4066000006230EE007230CE008230AE0092308E00A2306E00B2304E00C2302E00D2300E00023180002B0704754FF031000B585B0039002910192039B294A93420FD0284ADA -: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 -:4071400030F014FD099A009B1A60002300E0022318000BB000BDC04600000370FFFFFFEF000001600000FFEF00000360043704103437041010B588B0049103920293162394 -:407180006B44021C1A80029B00221A6006A916236B44188800230122FFF742FD03000793079B002B01D0079B09E00698029C039A0499002300932300FFF7BAFE030018009F -:4071C00008B010BD10B588B004910392029316236B44021C1A80029B00221A6006A916236B44188800230022FFF71AFD03000793079B002B01D0079B09E00698029C039A4D -:407200000499012300932300FFF792FE0300180008B010BD30B58BB00491039216236B44021C1A80049B1A68C023DB051A408023DB059A4203D1039B0733DB0847E0049BD5 -:407240001B68444A934208D1039B5B080133DA081300DB009B183B3339E0049B1B683E4A934203D1039BDB08293330E0049B1B683A4A934206D1039BDA0813005B009B18DD -:407280005A3324E0049B1B68354A934206D1039BDA0813005B009B184A3318E0049B1B681B0C1B042F4A934203D1039B0733DB080DE0049B1B681B0C1B042B4A934205D120 -:4072C000039B0733DB0812335B0000E000230893089B190001202FF0F9FC03000793079B002B01D1092332E006AC089A07990498002300932300FFF71BFE03000993099B6F -:40730000002B03D0049B00221A6015E0049B1968049B1C1D069B079D16226A44108800932B00220004F0F4FB03000993099B002B02D0049B00221A60069A079B11001800BB -:40734000FEF7DAFD079B180030F044F8099B18000BB030BD00000170000001600000027000000260000003700000036082B00190019B0E4A93420FD00C4A934203D80C4A84 -:40738000934207D00EE00B4A934207D00A4A934206D007E0094B06E0094B04E0094B02E0094B00E00023180002B0704709000001080000010A0000010B000001802B0410E3 -:4073C000B02B0410E02B0410102C041000B583B00190019B1B68114A934205D8104A934206D2002B12D00FE00E4A93420CD805E0019B083318001AF064FE08E0019B083377 -: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 -:407A40000EE040230CE040230AE0402308E0402306E0402304E0802302E0802300E00023180002B07047C046FFFFFFFE88FF031000B585B00190009102230393019B009A5D -: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 -:40B540000CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C046B4FF031000B587B0019000911E4B1B68002B01D0032334E0009B1F2BFE -:40B5800007D9009B3F2B04D9009A8023DB009A4201D9082327E002AAAE235B4211001800F7F718F803000493049B1800FFF7BCFF03000593049B072B0FD1019A0099AE2335 -:40B5C00058420023F6F776FF03000493049B1800FFF7AAFF0300059304E0049B002B01D103230593059B180007B000BD805E000810B58AB00291019200930E236B44021C9B -:40B600001A80009B002B04D10C9B002B01D00823C0E004AA0E236B441B8811001800FBF7D7FA03000993099B002B01D0099BB1E0029B1800FAF79CFC031E23D0049B1033A2 -:40B640001A000199029B1800FAF7F0FF03000993099B002B01D0099B9CE0049B1A69049B5B6919001000FFF741FF03000993099B002B00D17CE0049B1B6918002BF0AAFEA5 -:40B68000099B87E0029B454A1340454A934200D06CE0029AE023DB051A40E023DB059A4264D1029B3D4A13403D4A934202D1029B9AB200E0002222236B441A8021246C449F -:40B6C00022236B441B881800FAF780FF0300237021236B441B78180009F0EAFD03000793009B002B01D0022354E021236B441B78002B02D0079B002B01D102234AE0079B77 -:40B700009B881A00019B9A4201D0082342E0AC2101202BF0DBFA03000693069B002B01D1092337E0069B180009F04CFE1D4C1E4A069921236B44187823000DF0A4F903002C -:40B740000593059B002B0DD0069B180009F0B5FE069B18002BF03EFE059B1800FAF718FC030017E0049B069A1A6101E0022311E0049B029A1A60049BDB68012B09D1049972 -:40B78000019A0E236B441B881800FBF743FD030000E0099B18000AB010BDC0460000FFEF00000360006100085946011000B585B00E236B4401221A801EE001AA0E236B447B -:40B7C0001B8811001800FBF7B9F903000293029B002B09D1019B1800FBF76CFA019B18211800FAF789FB00E0C0460E236B441A880E236B4401321A800E236B441B88202B4E -:40B80000DBD9094B180008F05AFC084B18000EF079FFD823DA00064B11001800FAF76CFBC04605B000BDC04600610008885E0008805E000810B584B002AB1B4A1A601B4B6C -:40B840001B68002B01D000232BE0D823DA00174B11001800FAF750FB154B18000EF028FF144B180008F0C4FB02AC114A1249114803230093230008F00DFC03000393039BE3 -:40B88000002B03D1094B01221A6000E0C046039B002B01D0FFF78AFF039B1800FAF778FB0300180004B010BD50534100805E0008885E000800610008B1A9011000B587B06B -:40B8C0000390029101920093089B0593059B3749082218002CF0B8F8059B00221A72059B00225A72059B00229A72059B0022DA72019BDAB2059B1A73019B1B0ADAB2059B99 -:40B900005A73019B1B0CDAB2059B9A73019B1B0EDAB2059BDA73009B1B68DAB2059B1A74009B1B681B0ADAB2059B5A74009B1B681B0CDAB2059B9A74009B1B681B0EDAB299 -:40B94000059BDA74009B5B68DAB2059B1A75009B5B681B0ADAB2059B5A75009B5B681B0CDAB2059B9A75009B5B681B0EDAB2059BDA75029BDAB2059B1A76029B1B0ADAB2D9 -:40B98000059B5A76029B1B0CDAB2059B9A76029B1B0EDAB2059BDA76059B1C33029A039918002CF051F8C04607B000BDDCFF031000B583B001900749019B082218002CF006 -:40B9C0001DF8031E01D00C2300E00023180003B000BDC046DCFF031000B589B00390029101920093039B0793029B1B2B01D80C238BE0039B1800FFF7DBFF03000693069B07 -:40BA0000002B01D0069B80E0079B1B7A1A00079B5B7A1B021A43079B9B7A1B041A43079BDB7A1B0613430593059B002B01D00C236BE0079B1B7E1A00079B5B7E1B021A432E -:40BA4000079B9B7E1B041A43079BDB7E1B061A43009B1A60009B1A68029B1C3B9A4205D8009B1A68F023DB019A4201D90C234CE0009B1B68190001202BF028F90200019BE8 -:40BA80001A60019B1B68002B01D109233DE0079B1B7B1A00079B5B7B1B021A43079B9B7B1B041A43079BDB7B1B061A430A9B1A60079B1B7C1A00079B5B7C1B021A43079BB2 -:40BAC0009B7C1B041A43079BDB7C1B061A430B9B1A60079B1B7D1A00079B5B7D1B021A43079B9B7D1B041A43079BDB7D1B061A430B9B5A60019B1868079B1C331900009B05 -:40BB00001B681A002BF0A0FF0023180009B000BD10B58AB004910392029316236B44021C1A800C9AF023DB019A4201D90A2326E00C9B1C330993099B190001202BF0C6F8D8 -:40BB400003000893089B002B01D1092317E0039C049A0C990298089B00932300FFF7AEFE099A089916236B441B88180000F0E9F803000793089B18002BF02CFC079B1800E0 -:40BB80000AB010BD00B583B001900091019B002B05D0009A019B1100180012F0D7FE019B18002BF017FCC04603B000BD10B58AB004910392029316236B44021C1A80002349 -:40BBC00009930023079307AA16236B441B881100180000F03DF903000993099B002B01D0099B2CE0079B190001202BF06FF803000893089B002B01D1092320E0079A089968 -:40BC000016236B441B88180000F047F803000993099B002B0DD107990C9C029A0898039B0193049B00932300FFF7D6FE0300099300E0C046089B18002BF0CCFB099B180033 -:40BC40000AB010BD82B00190019B092B13D8019B9A000B4BD3181B689F4600230CE006230AE00C2308E00A2306E0082304E0022302E0052300E00123180002B07047C046CB -:40BC8000E4FF031082B002006B4606331A806B4606331B88180002B0704700B58BB0029101920E236B44021C1A800E236B441B881800FFF7E7FF0300099305AA099B1100A0 -:40BCC0001800F6F787FC03000893089B1800FFF7B9FF03000793079B002B01D0079B0EE0029B019A09980021F6F72CFC03000893089B1800FFF7A6FF03000793079B180090 -:40BD00000BB000BD00B587B002006B4606331A806B4606331B881800FFF7B4FF0300059302AA059B11001800F6F754FC03000493049B072B01D1002300E00123180007B04B -:40BD400000BD00B58BB0029101920E236B44021C1A800E236B441B881800FFF793FF030008930E236B441B881800FFF7CBFF0300012B01D1052334E0029A01990898002306 -:40BD8000F6F798FB03000793079B1800FFF75AFF03000993099B002B01D00C2321E005AA089B11001800F6F715FC03000793079B1800FFF747FF03000993099B002B07D19C -:40BDC00005AB1A68019B9A4203D00C23099300E0C046099B002B03D0089B1800F6F742FC099B18000BB000BD00B587B002006B4606331A806B4606331B881800FFF742FF0B -:40BE00000300059302AA059B11001800F6F7E2FB03000493049B072B01D1002315E0059B1800F6F71FFC031E01D00C230DE002AA059B11001800F6F7CDFB03000493049BA2 -:40BE4000072B01D00C2300E00023180007B000BD00B589B0020000916B4606331A806B4606331B881800FFF70DFF0300079303AA079B11001800F6F7ADFB03000693069B6E -:40BE80001800FFF7DFFE03000593059B002B01D0059B04E003AB1A68009B1A600023180009B000BD00B585B0019000910199009AAE2358420B000021F6F744FB030003934A -:40BEC000039B5B42180005B000BD00B585B001900091019A0099AE2358420023F6F7EAFA03000393039B5B42180005B000BD00B583B001908C235A00019B002118002BF00E -:40BF000035FEC04603B000BD00B583B00190019B002B07D08C235A00019B1100180012F015FD00E0C04603B000BD000000B587B0039002910192019BC02B09D08022520010 -:40BF4000934209D0802B0BD1039B0A221A600AE0039B0C221A6006E0039B0E221A6002E020235B42A7E1039B08330493039B049A5A600023059326E0059B9B00049AD318B5 -:40BF8000059A920002998A1812781000059A9200013202998A181278120201001143059A9200023202988218127812041143059A9200033202988218127812060A431A6055 -:40BFC000059B01330593019B5A09059B9A42D3D8039B1B680C2B5ED00E2B00D1C8E00A2B00D067E10023059351E0049B1033049A1168B24A0598800082585140049A0C32E5 -:40C000001268120AFF200240AD48825C5140049A0C321268120CFF200240A948825C12025140049A0C321268120EA548825C12045140049A0C321268FF200240A048825CF7 -:40C0400012064A401A60049B1433049A04321168049A103212684A401A60049B1833049A08321168049A143212684A401A60049B1C33049A0C321168049A183212684A4047 -:40C080001A60059B01330593049B10330493059B092BAAD90EE10023059365E0049B1833049A1168854A0598800082585140049A14321268120AFF2002408148825C514070 -:40C0C000049A14321268120CFF2002407C48825C12025140049A14321268120E7848825C12045140049A14321268FF2002407448825C12064A401A60049B1C33049A043222 -:40C100001168049A183212684A401A60049B2033049A08321168049A1C3212684A401A60049B2433049A0C321168049A203212684A401A60049B2833049A10321168049AC9 -:40C14000243212684A401A60049B2C33049A14321168049A283212684A401A60059B01330593049B18330493059B072B96D9A1E00023059399E0049B2033049A11684F4A95 -:40C180000598800082585140049A1C321268120AFF2002404A48825C5140049A1C321268120CFF2002404648825C12025140049A1C321268120E4248825C12045140049AEA -:40C1C0001C321268FF2002403D48825C12064A401A60049B2433049A04321168049A203212684A401A60049B2833049A08321168049A243212684A401A60049B2C33049A8D -:40C200000C321168049A283212684A401A60049B3033049A10321168049A2C321268FF2002402748825C5140049A2C321268120AFF2002402248825C12025140049A2C32E5 -:40C240001268120CFF2002401D48825C12045140049A2C321268120E1948825C12064A401A60049B3433049A14321168049A303212684A401A60049B3833049A183211689E -:40C28000049A343212684A401A60049B3C33049A1C321168049A383212684A401A60059B01330593049B20330493059B062B00D861E7C0460023180007B000BD0C22041026 -:40C2C0000C00041000B5D1B003900291019205AB1800FFF70CFE039B08334D93039B4D9A5A60019A029905AB1800FFF71FFE03004B934B9B002B00D0A1E0554B50AA9446A7 -:40C3000063441A68039B1A60514B50AA944663445A684F4B50A98C4663441B681B01D3184C934D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C91126822 -:40C340001A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A60039B1B68013B4F934C9B203B4C9341E000234E9335E04D9B1A1D4D924C9AFF -:40C380001268FF210A4033498A5C1100324A890089584C9A1268120AFF2002402D48825C10002E4A8000825851404C9A1268120CFF2002402748825C1000294A8000825894 -:40C3C00051404C9A1268120E2248825C1000254A800082584A401A604E9B01334E934C9B04334C934E9B032BC6DD4F9B013B4F934C9B203B4C934F9B002BBADC4D9B1A1D5F -:40C400004D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A604D9B1A1D4D924C9A111D4C9112681A6000E0C046A9 -:40C4400005AB1800FFF760FD4B9B180051B000BDD4FEFFFF0C0004100C1204100C1604100C1A04100C1E041000B58FB0039002910192039B5B680C93029B1B781A00029B81 -:40C4800001331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B04331B781A00029B05331B781B021A43029B0A -:40C4C00006331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B781B021A43029B0A331B781B041A43029BB2 -:40C500000B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B781B041A43029B0F331B781B061343089362 -:40C540000C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A400A9B1B0AFF211940FA4B8900CB585A4018 -:40C58000099B1B0CFF211940F74B8900CB585A40089B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B8900CB585A40099B1B0AFF211940E94B890034 -:40C5C000CB585A40089B1B0CFF211940E64B8900CB585A400B9B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF211940DB4B8900CB585A40089B1B0AFF21194028 -:40C60000D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A400A9B190ED34B8900CB58534005930C9B1A1D0C921A68089BFF211940CA4B8900CB585A400B9B1B0AE4 -:40C64000FF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A40099B190EC24B8900CB58534004930C9B1A1D0C921A68079BFF211940B94B8900CB585A403E -:40C68000069B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40049B190EB14B8900CB5853400B930C9B1A1D0C921A68069BFF211940A84B89003D -:40C6C000CB585A40059B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B8900CB585A40079B190EA04B8900CB5853400A930C9B1A1D0C921A68059BFF211940F0 -:40C70000974B8900CB585A40049B1B0AFF211940944B8900CB585A40079B1B0CFF211940914B8900CB585A40069B190E8F4B8900CB58534009930C9B1A1D0C921A68049BF1 -:40C74000FF211940864B8900CB585A40079B1B0AFF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40059B190E7E4B8900CB58534008930D9B013B0D9395 -:40C780000D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A400A9B1B0AFF2119406F4B8900CB585A40099B1B0CFF2119406C4B8900CB585A40089BB4 -:40C7C000190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB585A40099B1B0AFF2119405E4B8900CB585A40089B1B0CFF2119405B4B8900CB58B0 -:40C800005A400B9B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504B8900CB585A40089B1B0AFF2119404D4B8900CB585A400B9B1B0CFF2119404A4B1F -:40C840008900CB585A400A9B190E484B8900CB58534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A400B9B1B0AFF2119403C4B8900CB585A400A9B1B0CFF2155 -:40C880001940394B8900CB585A40099B190E374B8900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40069B1B0AFF210B402E49CB5C1B025A40059B1B0CE0 -:40C8C000FF210B402A49CB5C1B045A40049B1B0E2749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40059B1B0AFF210B401E49CB5C1B025A40049BC2 -:40C900001B0CFF210B401A49CB5C1B045A40079B1B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A40049B1B0AFF210B400D49CB5C1B025A403A -:40C94000079B1B0CFF210B400949CB5C1B045A40069B1B0E0649CB5C1B065340099309E00C0104100C0504100C0904100C0D04100C0004100C9B1A1D0C921B68049AFF215F -:40C980000A403C498A5C5A40079B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40059B1B0E3149CB5C1B06534008930B9BDAB2019B1A70019B5A -:40C9C00001330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05330A9A120AD2B21A70019B06330A9A120C2F -:40CA0000D2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B21A70019B0B33099A120ED2B21A70019B24 -:40CA40000C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A70002318000FB000BD0C00041000B58FB003900291D5 -:40CA80000192039B5B680C93029B1B781A00029B01331B781B021A43029B02331B781B041A43029B03331B781B0613430B930C9B1A1D0C921B680B9A53400B93029B0433B6 -:40CAC0001B781A00029B05331B781B021A43029B06331B781B041A43029B07331B781B0613430A930C9B1A1D0C921B680A9A53400A93029B08331B781A00029B09331B7880 -:40CB00001B021A43029B0A331B781B041A43029B0B331B781B06134309930C9B1A1D0C921B68099A53400993029B0C331B781A00029B0D331B781B021A43029B0E331B785C -:40CB40001B041A43029B0F331B781B06134308930C9B1A1D0C921B68089A53400893039B1B685B10013B0D9312E10C9B1A1D0C921A680B9BFF211940FD4B8900CB585A40E0 -:40CB8000089B1B0AFF211940FA4B8900CB585A40099B1B0CFF211940F74B8900CB585A400A9B190EF54B8900CB58534007930C9B1A1D0C921A680A9BFF211940EC4B89001C -:40CBC000CB585A400B9B1B0AFF211940E94B8900CB585A40089B1B0CFF211940E64B8900CB585A40099B190EE44B8900CB58534006930C9B1A1D0C921A68099BFF21194013 -:40CC0000DB4B8900CB585A400A9B1B0AFF211940D84B8900CB585A400B9B1B0CFF211940D54B8900CB585A40089B190ED34B8900CB58534005930C9B1A1D0C921A68089BD0 -:40CC4000FF211940CA4B8900CB585A40099B1B0AFF211940C74B8900CB585A400A9B1B0CFF211940C44B8900CB585A400B9B190EC24B8900CB58534004930C9B1A1D0C9280 -:40CC80001A68079BFF211940B94B8900CB585A40049B1B0AFF211940B64B8900CB585A40059B1B0CFF211940B34B8900CB585A40069B190EB14B8900CB5853400B930C9B3D -:40CCC0001A1D0C921A68069BFF211940A84B8900CB585A40079B1B0AFF211940A54B8900CB585A40049B1B0CFF211940A24B8900CB585A40059B190EA04B8900CB585340B1 -:40CD00000A930C9B1A1D0C921A68059BFF211940974B8900CB585A40069B1B0AFF211940944B8900CB585A40079B1B0CFF211940914B8900CB585A40049B190E8F4B890026 -:40CD4000CB58534009930C9B1A1D0C921A68049BFF211940864B8900CB585A40059B1B0AFF211940834B8900CB585A40069B1B0CFF211940804B8900CB585A40079B190EC7 -:40CD80007E4B8900CB58534008930D9B013B0D930D9B002B00DDE8E60C9B1A1D0C921A680B9BFF211940724B8900CB585A40089B1B0AFF2119406F4B8900CB585A40099BC9 -:40CDC0001B0CFF2119406C4B8900CB585A400A9B190E6A4B8900CB58534007930C9B1A1D0C921A680A9BFF211940614B8900CB585A400B9B1B0AFF2119405E4B8900CB5895 -:40CE00005A40089B1B0CFF2119405B4B8900CB585A40099B190E594B8900CB58534006930C9B1A1D0C921A68099BFF211940504B8900CB585A400A9B1B0AFF2119404D4B0B -:40CE40008900CB585A400B9B1B0CFF2119404A4B8900CB585A40089B190E484B8900CB58534005930C9B1A1D0C921A68089BFF2119403F4B8900CB585A40099B1B0AFF2144 -:40CE800019403C4B8900CB585A400A9B1B0CFF211940394B8900CB585A400B9B190E374B8900CB58534004930C9B1A1D0C921B68079AFF210A4032498A5C5A40049B1B0A4F -:40CEC000FF210B402E49CB5C1B025A40059B1B0CFF210B402A49CB5C1B045A40069B1B0E2749CB5C1B0653400B930C9B1A1D0C921B68069AFF210A4021498A5C5A40079BA5 -:40CF00001B0AFF210B401E49CB5C1B025A40049B1B0CFF210B401A49CB5C1B045A40059B1B0E1749CB5C1B0653400A930C9B1A1D0C921B68059AFF210A4011498A5C5A4025 -:40CF4000069B1B0AFF210B400D49CB5C1B025A40079B1B0CFF210B400949CB5C1B045A40049B1B0E0649CB5C1B065340099309E00C1204100C1604100C1A04100C1E04108F -:40CF80000C1104100C9B1A1D0C921B68049AFF210A403C498A5C5A40059B1B0AFF210B403849CB5C1B025A40069B1B0CFF210B403449CB5C1B045A40079B1B0E3149CB5CA9 -:40CFC0001B06534008930B9BDAB2019B1A70019B01330B9A120AD2B21A70019B02330B9A120CD2B21A70019B03330B9A120ED2B21A70019B04330A9AD2B21A70019B05334B -:40D000000A9A120AD2B21A70019B06330A9A120CD2B21A70019B07330A9A120ED2B21A70019B0833099AD2B21A70019B0933099A120AD2B21A70019B0A33099A120CD2B28A -:40D040001A70019B0B33099A120ED2B21A70019B0C33089AD2B21A70019B0D33089A120AD2B21A70019B0E33089A120CD2B21A70019B0F33089A120ED2B21A7000231800B4 -:40D080000FB000BD0C11041000B585B00390029101920093029B012B07D1009A0199039B1800FFF7E1F9030006E0009A0199039B1800FFF7E1FC0300180005B000BD00B54A -: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 -:40DE00000BB000BD3422041000B583B001900091009B9A00019B1100180010F097FDC04603B000BD82B00190019B002B09D0019B01221A60019B00225A60019B00229A6026 -: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 -:402E800012789A4202D1039B5B6807E0039B08330393039B5B68002BDED10023180004B07047C0461826041000B583B00190019B44220021180024F059FEC04603B000BD54 -: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 -:40528000019B180000F09EF8C04603B000BD00B583B00190019B180000F00FF9C04603B000BD0000014B18007047C046BC28041000B585B002006B4607331A70FFF7F2FF42 -: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 -:408DC00002E0C04600E0C046039B002B03D0019B1800FCF727FB039B180005B000BDC046702A0410782A041000B587B0019002AB1800F5F717F8019B10335D4A10211800A2 -:408E0000F5F7E4FB03000593059B002B00D08BE0019B043301211800F5F75EFA03000593059B002B00D081E0019B0433E0211800F5F766FD03000593059B002B00D077E016 -:408E4000019B181D019B043301221900F6F703FA03000593059B002B6CD1019B0433E0211800F5F74DFD03000593059B002B63D1019B181D019B043301221900F6F7EBF918 -:408E800003000593059B002B58D1019B04331800F5F715FB0200019B9A65019B283305211800F5F719FA03000593059B002B47D1019B403301211800F5F70EFA0300059315 -:408EC000059B002B3ED1019B34331800F4F7BCFF019B4C331800DF235B0001221900F5F745FA03000593059B002B2DD1214A02AB10211800F5F76AFB03000593059B002B64 -:408F000024D1019B4C331800019B4C3302AA1900F6F730F903000593059B002B18D1019BC022FF32DA6514E0C04612E0C04610E0C0460EE0C0460CE0C0460AE0C04608E030 -:408F4000C04606E0C04604E0C04602E0C04600E0C04602AB1800F4F777FF059B002B03D0019B1800FCF75EFA059B180007B000BD9C2A0410A42A041000B58DB00B900A0005 -:408F80002B236B441A700B9B1800FCF74BFA0B9B2B226A4412781A702B236B441B78042B25D002DC032B05D050E0092B3CD00D2B43D04BE00B9B294A5A6629490B982023D3 -:408FC0000893284B079320230693274B059320230493264B039320230293254B01930023009300232022FFF71FFE030033E00B9B204A5A6620490B98302308931F4B079314 -:40900000302306931E4B0593302304931D4B0393302302931C4B01930023009300233022FFF702FE030016E00B9B184A5A660B9B1800FFF749FE03000DE00B9B144A5A66E7 -:409040000B9B1800FFF7D0FE030004E00B9B1800FCF7E8F90F4B18000DB000BD6D910110E028041060290410402904102029041000290410A399011080290410402A0410A2 -:40908000102A0410E0290410B02904106DA4011059A5011080B1FFFF84B0039002910192039B1A68029BD218039B1A60019B1B785BB2DAB2039B1968029B99429B415B4274 -: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 -:40B300006A463021521812781A70279B0F331A002C9B2D9CDBB21370C04632B070BDC046E02A0410F0B597B00B900A910992089300230D93089B002B15D0089B029300236E -: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 -:40BEC000082B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C046802B0410B02B0410E02B0410102C041000B583B00190019B0C22002118001BF034 -: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 -:40C640000CD1029B1868019B9968019B5B681A001BF0D4F9031E01D1039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC046C435041000B585B001 -:40C6800001900091019B1800FFF7C6FF03000393039B002B02D12E235B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E011 -:40C6C000059B1B7C0F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B07047C046C43504101D -:40C7000000B585B00190164B0393039B0293039B002B02D0019B002B19D100231CE0029B5A68019B5B689A420CD1029B1868019B9968019B5B681A001BF060F9031E01D1E8 -:40C74000039B09E0039B14330393039B0293029B1B68002BE3D10023180005B000BDC0461436041000B585B001900091019B1800FFF7C6FF03000393039B002B02D12E2373 -:40C780005B4204E0039B1A7C009B1A700023180005B000BD86B0029101920F236B44021C1A70104B059313E0059B1B7C0F226A4412789A4209D1059B1A68029B1A60059BF8 -:40C7C0005A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B07047C0461436041086B0029101920F236B44021C1A70104B059313E0059B1B7CF8 -:40C800000F226A4412789A4209D1059B1A68029B1A60059B5A68019B1A60002308E0059B14330593059B1B68002BE7D12E235B42180006B07047C0465036041000B583B09D -:40C840000190019B0C22002118001BF08FF9C04603B000BD10B58EB00590049103920293059B002B01D16A4BCFE0049A029B110018001BF0DBFE03000D930D9B002B01D133 -:40C88000644BC2E0039A029B110018001BF0CEFE03000B930B9B002B03D00B9A0D9B9A4201D85C4BB1E0049B18001BF081FC02000D9B9B180D930D9B1B78202B02D10D9B31 -:40C8C00001330D930D9B1B780D2B02D10D9B01330D930D9B1B780A2B11D10D9B01330D930B9B0C93039B18001BF062FC02000C9B9B180C930C9B1B78202B05D101E0454BA9 -:40C9000083E00C9B01330C930C9B1B780D2B02D10C9B01330C930C9B1B780A2B02D10C9B01330C930C9A029BD31A1A00129B1A6000230A930B9A0D9BD31A152B09DD36498F -:40C940000D9B162218001BF059F8031E01D1334B5BE00D9A0B9B9A4201D3314B55E00B9A0D9BD31A19000D9B07AA009100210020F1F732F903000993099B2C3304D1099B5D -:40C98000274A9446634440E0079B190001201AF09DF903000893089B002B01D1214B34E007990B9A0D9BD31A1C000D9B07AA08980094F1F711F903000993099B002B0ED06A -:40C9C000079A089B1100180001F0C0FF089B18001AF000FD099B124A9446634415E00A9B002B0BD0079A089B1100180001F0AEFF089B18001AF0EEFC084B06E0059B089A02 -:40CA00001A60079A059B5A60002318000EB010BD80EBFFFF80EFFFFFB436041000ECFFFF00EFFFFF80EEFFFF00B583B00190019B1B68002B07D0019B1A68019B5B68190074 -:40CA4000100001F083FF019B1B6818001AF0C2FC019B9B6818001AF0BDFC019B0C21180001F074FFC04603B000BD82B00190019B002B06D0019B00221A60019B00225A60EF -:40CA800000E0C04602B0704700B583B00190019B002B10D0019B1B68002B0CD0019B1B689A6A019B5B6818009047019B0821180001F04CFF00E0C04603B000BD82B00200CD -:40CAC0006B4607331A706B4607331B78022B0AD002DC012B05D00CE0032B06D0042B06D007E0064B06E0064B04E0064B02E0064B00E00023180002B07047C04604370410B8 -:40CB000034370410643704109437041000B583B001900091019B002B06D0009B002B03D0019B1B68002B01D00A4B0FE0009B5B6A98470200019B5A60019B5B68002B01D156 -:40CB4000054B03E0019B009A1A600023180003B000BDC04680C1FFFF80C0FFFF82B00190019B002B03D0019B1B68002B01D1002302E0019B1B681B78180002B0704782B0C1 -:40CB800002006B4607331A706B4607331B78012B04D06B4607331B78062B01D1012300E00023180002B0704700B585B00190019B0393039B180002F09EFD0300DB00180071 -:40CBC00005B000BD00B58DB00790059204931B236B440A1C1A70079B0B930B9B180002F08AFD03000A930F9A0A9B9A4201D2114B1DE00B980E9B0393059B0293049B0193B8 -:40CC00001B236B441B78009300230022002104F077FD03000993099B002B01D0099B06E00F9A0A9B9A4201D9034B00E0002318000DB000BD80BCFFFF00C7FFFF00B58BB074 -:40CC40000790059204931B236B440A1C1A70079B0993099B180002F04EFD02000D9B1A600F9A0E9909980C9B0393059B0293049B01931B236B441B780093012304F038FA04 -:40CC8000030018000BB000BD00B58BB00790069105920493079B0993099B180002F02BFD0200059B9A4201D0094B0EE00F9A0E9909980D9B0393049B0293069B01930C9BB1 -:40CCC0000093012303F0FCFE030018000BB000BD80BFFFFF00B58BB00790069105920493079B0993099B180002F005FD02000C9B1A600C9B1A680D9B9A4201D9084B0CE09D -:40CD00000F9A0E990998049B0293069B0193059B0093002303F0E8FA030018000BB000BD00BCFFFF00B583B001900091009A019B1100180002F06EFD0300180003B000BDD0 -:40CD400000B583B0AC21012019F0C0FF03000193019B002B05D0019B00220021180002F0A7FC019B180003B000BD00B583B00190019B180004F0FCFC019B18001AF02AFB36 -:40CD8000C04603B000BD000082B001900091009B01221A70009B0C4A5A60019B08331A00009B9A60009B0C330093009B01221A70009B064A5A60019B14331A00009B9A6044 -:40CDC000C04602B07047C046CC360410D436041082B002006B4607331A706B4607331B78022B09D06B4607331B78032B04D06B4607331B78042B01D1012300E0002318001F -:40CE000002B0704782B00190019B9B6D180002B0704710B5B2B005900392029313236B440A1C1A7006AB1800F8F727FA059A06AB11001800F8F7EEF903003193319B002B40 -:40CE40000ED1029C039A13236B44197806A8359B0193349B0093230000F0A4F80300319306AB1800F8F713FA319B180032B010BD10B5B4B00790059204931B236B440A1CDF -:40CE80001A7008AB1800F8F7F8F9079A08AB11001800F8F7BFF903003393339B002B12D1049C059A1B236B44197808A8399B0393389B0293379B0193369B0093230000F058 -:40CEC00093F80300339308AB1800F8F7E0F9339B180034B010BD00B583B001900091009A019B11001800FBF7F7FD0300180003B000BD00B583B0AC21012019F0E7FE030013 -:40CF00000193019B002B03D0019B1800F8F75AFA019B180003B000BD00B583B00190019B1800F8F7CAFA019B18001AF053FAC04603B000BD82B001900091009B02221A70AA -:40CF4000009B054A5A60019B88331A00009B9A60C04602B07047C046E036041082B002006B4607331A706B4607331B78022B04D06B4607331B78032B01D1012300E000239B -: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 -:40DE40001800FEF763FE031E0DD1079B18685968FFF712F9059A069B1900FFF7BBFC031E01D1002304E0079B1800FEF70DFE0D4B18000EB010BDC04680EFFFFFC43704101A -:40DE8000E437041080ECFFFF80C4FFFF00EDFFFF00C4FFFF0438041024380410443804106038041000C3FFFF10B590B007900691059209AB1800FEF7C1FC059B002B06D034 -:40DEC000059B013B069AD3181B78002B02D0704B0F930EE0069C6F4A6F4909A80CAB029300230193002300932300FEF7B3FC03000F930F9B002B37D109AB1B680D93012022 -:40DF0000FEF7DCFD03000E930E9B002B01D1634BBAE00E9A079B11001800FEF7F7FD03000F930F9B002B01D00F9BADE00D9A09AB5B68D418079B18685968FFF794F8020032 -:40DF40000DAB21001800FFF74DF903000F930F9B002B03D0079B1800FEF796FD09AB1800FEF762FD0F9B8FE00F9B494A934205D009AB1800FEF758FD0F9B85E0059B002BD5 -:40DF800006D0059B013B069AD3181B78002B02D03F4B0F930EE0069C414A424909A80CAB029300230193002300932300FEF752FC03000F930F9B002B13D109AB1B680D93BD -:40DFC0000D9A09AB5B68D118079A0DAB1800FFF7E9F903000F9309AB1800FEF725FD0F9B52E00F9B2A4A934205D009AB1800FEF71BFD0F9B48E009AB1800FEF715FD012006 -:40E00000FEF75CFD03000E930E9B002B01D1234B3AE00E9A079B11001800FEF777FD03000F930F9B002B01D00F9B2DE0069B0D930D9A059BD418079B18685968FFF713F88A -:40E0400002000DAB21001800FFF7CCF803000F930F9B002B01D10F9B16E0079B1800FEF713FD0F9B104A934201D00F9B0CE0069B0D930D9A059BD118079A0DAB1800FFF730 -:40E0800091F903000F930F9B180010B010BDC04680EFFFFF7C3804109C38041080C3FFFFBC380410D83804109EC4FFFF82B06B46186059606B465B68180002B0704782B0B7 -: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 -:401AC000C04602E0C04600E0C04614AB1800ECF7BBF917AB1800ECF7B7F91D9B18001EB010BDC046F438041000B58DB0039002910192009300230B93009B002B06D0009B50 -: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 -:40264000D2184D9BD91C094B4EA8844663448900CB58D3184C93034B4EAA944663445B6906E0C046D4FEFFFF2C390410F4FEFFFF0222D3411A00FE4B4EA98C4663445B69E3 -:402680000D21CB415A40FA4B4EA98C4663445B691621CB415A40F64B4EA98C4663445969F34B4EA8844663449B691940F04B4EA884466344D869EE4B4EACA44663445C690F -:4026C000EB4B4EADAC4663449B69234303400B43D3184B93E64B4EAA944663441A684C9BD218E34B4EA98C4663441A604C9A4B9BD218DF4B4EA98C4663441A61DC4B4EAA4D -:4027000094466344DA68DA4B4EA98C4663441B680621CB411900D64B4EA8844663441B680B20C3415940D24B4EA8844663441B681920C3414B40D218CD4B4EA98C4663445E -:402740009968CB4B4EA8844663441868C84B4EACA44663445C68C64B4EADAC4663449B68634003404B40D2184D9B191DC14B8900CB58D2184D9B191DBF4B4EA884466344A7 -:402780008900CB58D3184C93B94B4EAA944663441B690222D3411A00B54B4EA98C4663441B690D21CB415A40B14B4EA98C4663441B691621CB415A40AD4B4EA98C46634453 -:4027C0001969AB4B4EA8844663445B691940A84B4EA8844663449869A54B4EACA44663441C69A34B4EADAC4663445B69234303400B43D3184B939E4B4EAA94466344DA69D7 -:402800004C9BD2189A4B4EA98C466344DA614C9A4B9BD218964B4EA98C466344DA60944B4EAA944663449A68914B4EA98C466344DB690621CB4119008D4B4EA88446634481 -:40284000DB690B20C3415940894B4EA884466344DB691920C3414B40D218854B4EA98C4663445968824B4EA884466344D869804B4EACA44663441C687D4B4EADAC4663446F -:402880005B68634003404B40D2184D9B591D794B8900CB58D2184D9B591D774B4EA8844663448900CB58D3184C93714B4EAA94466344DB680222D3411A006D4B4EA98C46FA -:4028C0006344DB680D21CB415A40694B4EA98C466344DB681621CB415A40654B4EA98C466344D968624B4EA8844663441B6919405F4B4EA88446634458695D4B4EACA44626 -:402900006344DC685A4B4EADAC4663441B69234303400B43D3184B93554B4EAA944663449A694C9BD218524B4EA98C4663449A614C9A4B9BD2184E4B4EA98C4663449A6081 -:402940004B4B4EAA944663445A68494B4EA98C4663449B690621CB411900454B4EA8844663449B690B20C3415940414B4EA8844663449B691920C3414B40D2183C4B4EA948 -:402980008C46634419683A4B4EA8844663449869374B4EACA4466344DC69354B4EADAC4663441B68634003404B40D2184D9B991D304B8900CB58D2184D9B991D2E4B4EA830 -:4029C000844663448900CB58D3184C93284B4EAA944663449B680222D3411A00244B4EA98C4663449B680D21CB415A40204B4EA98C4663449B681621CB415A401C4B4EA9E0 -:402A00008C46634499681A4B4EA884466344DB681940174B4EA8844663441869144B4EACA44663449C68124B4EADAC466344DB68234303400B43D3184B930D4B4EAA94465E -:402A400063445A694C9BD218094B4EA98C4663445A614C9A4B9BD218054B4EA98C4663445A60034B4EAA944663441A6806E0C046D4FEFFFF2C390410F4FEFFFF4B4B4EA971 -:402A80008C4663445B690621CB411900474B4EA8844663445B690B20C3415940434B4EA8844663445B691920C3414B40D2183F4B4EA98C466344D9693C4B4EA88446634473 -:402AC00058693A4B4EACA44663449C69374B4EADAC466344DB69634003404B40D2184D9BD91D334B8900CB58D2184D9BD91D314B4EA8844663448900CB58D3184C932B4BAC -:402B00004EAA944663445B680222D3411A00274B4EA98C4663445B680D21CB415A40234B4EA98C4663445B681621CB415A401F4B4EA98C46634459681C4B4EA884466344A7 -:402B40009B681940194B4EA884466344D868174B4EACA44663445C68144B4EADAC4663449B68234303400B43D3184B930F4B4EAA944663441A694C9BD2180C4B4EA98C4640 -:402B800063441A614C9A4B9BD218084B4EA98C4663441A604D9B08334D934D9B0F2B01D8FFF762FB10234D9300F08CFFD4FEFFFF2C390410F4FEFFFFFE4B4EAA9446634426 -:402BC000DA69FC4B4EA98C4663441B690621CB411900F84B4EA8844663441B690B20C3415940F44B4EA8844663441B691920C3414B40D218EF4B4EA98C4663449969ED4B55 -:402C00004EA8844663441869EA4B4EACA44663445C69E84B4EADAC4663449B69634003404B40D218E44B4D998900CB58D2184D9B991EE24B4EA8844663448900CB58112145 -:402C4000CB4119004D9B981EDC4B4EACA44663448000C3581320C34159404D9B981ED74B4EACA44663448000C3589B0A59404D9BD81FD24B4EACA44663448000C358C9184D -:402C80004D9B0F3B1800CD4B4EACA44663448000C3580720C34118004D9B0F3B1C00C74B4EADAC466344A400E3581224E34158404D9B0F3B1C00C14B4EADAC466344A400F2 -:402CC000E358DB084340C9184D9B103B1800BB4B4EACA44663448000C358C818B74B4EA98C4663444D998900C850B44B4EA98C4663444D998900CB58D3184C93AD4B4EAA47 -:402D0000944663441B680222D3411A00A94B4EA98C4663441B680D21CB415A40A54B4EA98C4663441B681621CB415A40A14B4EA98C46634419689F4B4EA8844663445B68D1 -:402D400019409C4B4EA8844663449868994B4EACA44663441C68974B4EADAC4663445B68234303400B43D3184B93924B4EAA94466344DA684C9BD2188E4B4EA98C4663440E -:402D8000DA604C9A4B9BD2188A4B4EA98C466344DA61884B4EAA944663449A69854B4EA98C466344DB680621CB411900814B4EA884466344DB680B20C34159407D4B4EA889 -:402DC00084466344DB681920C3414B40D218794B4EA98C4663445969764B4EA884466344D868744B4EACA44663441C69714B4EADAC4663445B69634003404B40D2184D9BE9 -:402E0000591C6D4B8900CB58D2184D9B01334D99481E6A494EACA4466144800041581120C14108004D994C1E64494EADAC466144A40061581324E14148404D994C1E5F4912 -:402E40004EADAC466144A4006158890A48404D998C1F5A494EADAC466144A400615840184D990E390C0055494EADAC466144A40061580724E1410C004D990E390D004F49DC -:402E80004EAEB4466144AD0069581225E9414C404D990E390D0049494EAEB4466144AD006958C908614040184D990F390C0043494EADAC466144A400615844183F494EA8EE -:402EC00084466144980044503C494EA8844661449B005B58D3184C93364B4EAA94466344DB690222D3411A00324B4EA98C466344DB690D21CB415A402E4B4EA98C466344B7 -:402F0000DB691621CB415A402A4B4EA98C466344D969284B4EA8844663441B681940254B4EA8844663445868224B4EACA4466344DC69204B4EADAC4663441B682343034094 -:402F40000B43D3184B931B4B4EAA944663449A684C9BD218174B4EA98C4663449A604C9A4B9BD218134B4EA98C4663449A61114B4EAA944663445A690E4B4EA98C466344DC -:402F80009B680621CB4119000A4B4EA8844663449B680B20C3415940064B4EA8844663449B681920C3414B40D218024B4EA98C4606E0C046D4FEFFFF2C390410F4FEFFFF93 -:402FC00063441969FE4B4EA8844663449868FC4B4EACA4466344DC68F94B4EADAC4663441B69634003404B40D2184D9B991CF54B8900CB58D2184D9B0233F3494EA884469F -:4030000061444D98800041581120C1410800EE494EACA44661444D9CA40061581324E1414840E9494EACA44661444D9CA4006158890A48404D994C1FE3494EADAC466144A0 -:40304000A400615840184D990D390C00DE494EADAC466144A40061580724E1410C004D990D390D00D8494EAEB4466144AD0069581225E9414C404D990D390D00D2494EAE54 -:40308000B4466144AD006958C908614040184D990E390C00CC494EADAC466144A40061584418C9494EA88446614498004450C6494EA8844661449B005B58D3184C93C04B66 -:4030C0004EAA944663449B690222D3411A00BC4B4EA98C4663449B690D21CB415A40B84B4EA98C4663449B691621CB415A40B44B4EA98C4663449969B14B4EA8844663448A -:40310000DB691940AE4B4EA8844663441868AC4B4EACA44663449C69A94B4EADAC466344DB69234303400B43D3184B93A44B4EAA944663445A684C9BD218A14B4EA98C464F -:4031400063445A604C9A4B9BD2189D4B4EA98C4663445A619A4B4EAA944663441A69984B4EA98C4663445B680621CB411900944B4EA8844663445B680B20C3415940904B36 -:403180004EA8844663445B681920C3414B40D2188B4B4EA98C466344D968894B4EA8844663445868864B4EACA44663449C68844B4EADAC466344DB68634003404B40D21850 -:4031C0004D9BD91C7F4B8900CB58D2184D9B03334D99481C7C494EACA4466144800041581120C14108004D994C1C77494EADAC466144A40061581324E14148404D994C1C5C -:4032000071494EADAC466144A4006158890A48404D990C1F6C494EADAC466144A400615840184D990C390C0067494EADAC466144A40061580724E1410C004D990C390D0056 -:4032400061494EAEB4466144AD0069581225E9414C404D990C390D005B494EAEB4466144AD006958C908614040184D990D390C0055494EADAC466144A40061584418524943 -:403280004EA884466144980044504F494EA8844661449B005B58D3184C93494B4EAA944663445B690222D3411A00454B4EA98C4663445B690D21CB415A40414B4EA98C4658 -:4032C00063445B691621CB415A403D4B4EA98C46634459693A4B4EA8844663449B691940374B4EA884466344D869354B4EACA44663445C69324B4EADAC4663449B6923430E -:4033000003400B43D3184B932D4B4EAA944663441A684C9BD2182A4B4EA98C4663441A604C9A4B9BD218264B4EA98C4663441A61234B4EAA94466344DA68214B4EA98C4620 -:4033400063441B680621CB4119001D4B4EA8844663441B680B20C3415940194B4EA8844663441B681920C3414B40D218144B4EA98C4663449968124B4EA8844663441868A9 -:403380000F4B4EACA44663445C680D4B4EADAC4663449B68634003404B40D2184D9B191D084B8900CB58D2184D9B04334D99881C05494EACA44661448000415806E0C0468E -:4033C000D4FEFFFF2C390410F4FEFFFF1120C14108004D998C1CFE494EADAC466144A40061581324E14148404D998C1CF8494EADAC466144A4006158890A48404D99CC1E0B -:40340000F3494EADAC466144A400615840184D990B390C00EE494EADAC466144A40061580724E1410C004D990B390D00E8494EAEB4466144AD0069581225E9414C404D9910 -:403440000B390D00E2494EAEB4466144AD006958C908614040184D990C390C00DC494EADAC466144A40061584418D9494EA88446614498004450D6494EA8844661449B0084 -:403480005B58D3184C93D34B4EAA944663441B690222D3411A00CF4B4EA98C4663441B690D21CB415A40CB4B4EA98C4663441B691621CB415A40C74B4EA98C466344196955 -:4034C000C44B4EA8844663445B691940C14B4EA8844663449869BF4B4EACA44663441C69BC4B4EADAC4663445B69234303400B43D3184B93B74B4EAA94466344DA694C9BE7 -:40350000D218B44B4EA98C466344DA614C9A4B9BD218B04B4EA98C466344DA60AD4B4EAA944663449A68AB4B4EA98C466344DB690621CB411900A74B4EA884466344DB6996 -:403540000B20C3415940A34B4EA884466344DB691920C3414B40D2189E4B4EA98C46634459689C4B4EA884466344D869994B4EACA44663441C68974B4EADAC4663445B6863 -:40358000634003404B40D2184D9B591D924B8900CB58D2184D9B05334D99C81C8C494EACA4466144800041581120C14108004D99CC1C87494EADAC466144A400615813247F -:4035C000E14148404D99CC1C81494EADAC466144A4006158890A48404D998C1E7C494EADAC466144A400615840184D990A390C0077494EADAC466144A40061580724E141B2 -:403600000C004D990A390D0071494EAEB4466144AD0069581225E9414C404D990A390D006B494EAEB4466144AD006958C908614040184D990B390C0065494EADAC46614465 -:40364000A4006158441862494EA884466144980044505F494EA8844661449B005B58D3184C935C4B4EAA94466344DB680222D3411A00584B4EA98C466344DB680D21CB41EB -:403680005A40544B4EA98C466344DB681621CB415A40504B4EA98C466344D9684D4B4EA8844663441B6919404A4B4EA8844663445869484B4EACA4466344DC68454B4EAD6F -:4036C000AC4663441B69234303400B43D3184B93404B4EAA944663449A694C9BD2183D4B4EA98C4663449A614C9A4B9BD218394B4EA98C4663449A60364B4EAA9446634484 -:403700005A68344B4EA98C4663449B690621CB411900304B4EA8844663449B690B20C34159402C4B4EA8844663449B691920C3414B40D218274B4EA98C4663441968254B73 -:403740004EA8844663449869224B4EACA4466344DC69204B4EADAC4663441B68634003404B40D2184D9B991D1B4B8900CB58D2184D9B06334D99081D15494EACA44661441A -:40378000800041581120C14108004D990C1D10494EADAC466144A40061581324E14148404D990C1D0A494EADAC466144A4006158890A48404D994C1E05494EADAC466144E1 -:4037C000A400615840184D9909390C0006E0C046F4FEFFFFD4FEFFFF2C390410CB494EADAC466144A40061580724E1410C004D9909390D00C5494EAEB4466144AD00695813 -:403800001225E9414C404D9909390D00BF494EAEB4466144AD006958C908614040184D990A390C00B9494EADAC466144A40061584418B6494EA88446614498004450B3497D -:403840004EA8844661449B005B58D3184C93B04B4EAA944663449B680222D3411A00AC4B4EA98C4663449B680D21CB415A40A84B4EA98C4663449B681621CB415A40A44B92 -:403880004EA98C4663449968A14B4EA884466344DB6819409E4B4EA88446634418699C4B4EACA44663449C68994B4EADAC466344DB68234303400B43D3184B93944B4EAA0F -:4038C000944663445A694C9BD218914B4EA98C4663445A614C9A4B9BD2188D4B4EA98C4663445A608A4B4EAA944663441A68884B4EA98C4663445B690621CB411900844B02 -:403900004EA8844663445B690B20C3415940804B4EA8844663445B691920C3414B40D2187B4B4EA98C466344D969794B4EA8844663445869764B4EACA44663449C69744B78 -:403940004EADAC466344DB69634003404B40D2184D9BD91D6F4B8900CB58D2184D9B07334D99481D69494EACA4466144800041581120C14108004D994C1D64494EADAC4601 -:403980006144A40061581324E14148404D994C1D5E494EADAC466144A4006158890A48405A494EACA44661444D9CA400615840184D9908390C0055494EADAC466144A40053 -:4039C00061580724E1410C004D9908390D004F494EAEB4466144AD0069581225E9414C404D9908390D0049494EAEB4466144AD006958C908614040184D9909390C0043499A -:403A00004EADAC466144A400615844183F494EA884466144980044503C494EA8844661449B005B58D3184C93394B4EAA944663445B680222D3411A00354B4EA98C4663441E -:403A40005B680D21CB415A40314B4EA98C4663445B681621CB415A402D4B4EA98C46634459682B4B4EA8844663449B681940284B4EA884466344D868254B4EACA44663442C -:403A80005C68234B4EADAC4663449B68234303400B43D3184B931E4B4EAA944663441A694C9BD2181A4B4EA98C4663441A614C9A4B9BD218164B4EA98C4663441A604D9B0E -:403AC00008334D934D9B3F2B01D8FFF775F800234D9314E0019B4D9A02329200D2580C4B4EA98C4663444D998900CB58D118019B4D9A02329200D1504D9B01334D934D9B23 -:403B0000072BE7D9002318004EB070BDF4FEFFFFD4FEFFFF2C39041000B589B0039002910192019B002B01D100236BE0039B1B683F2213400793079B4022D31A0693039BAF -: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 -:40470000C918624112E0C0461408000028FDFFFF180800003C05000008080000EC070000E4070000DC070000303A0410EF4BF0486844C018EF4B6B441B68DB00C3185C6832 -:404740001B685B185441F922D2006A4413605460E94B6B441B681A01E84B6B441B681B0F1A434E92E54B6B441B681A01E24B6B441B681B0F1A434F92E04B6B441B689A085C -:40478000DD4B6B441B689B071A435192DA4B6B441B689A08D94B6B441B689B071A4350924E994F9A0800509B519C1D006840529023005A405392D14B6B441B68DA09CE4B4A -:4047C0006B441B685B061A435592CB4B6B441B68DA09CA4B6B441B685B061A4354925299539A0800549B559C1D006840569023005A405792C14B6B441A6880231B016B4410 -:404800001B6813405893BC4B6B441A68BC4B6B441B6813405993B94B6B441A6880231B016B441B681A435A92B34B6B441A68B44B6B441B681A435B92FF23DB006B441A68C0 -:404840005A985B99030013405C93AE4B6B441A680B0013405D935899599A08005C9B5D9C1D0028435E9023001A435F92569B579C5E995F9A5B185441F822D2006A441360E9 -:404880005460FE23DB006B4419685A68F923DB006B445C681B685B185441FE22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FA22D200CF -:4048C0006A44136054608B4B6B441B680133894A6A4413608C4B6B441B689A04FE23DB006B441B689B0B1A436092FE23DB006B441B689A04844B6B441B689B0B1A43619226 -:40490000814B6B441B689A03FE23DB006B441B689B0C1A436292FE23DB006B441B689A03794B6B441B689B0C1A4363926099619A0800629B639C1D006840649023005A408E -:404940006592FE23DB006B441B685A0A6E4B6B441B68DB051A4367926B4B6B441B685A0AFE23DB006B441B68DB051A4366926499659A0800669B679C1D00684068902300F6 -:404980005A406992FB23DB006B445C681B6868986999C0186141FD23DB006B441A68FC23DB006B441B685A406A92584B6B441A68574B6B441B685A406B92FE23DB006B441F -:4049C0001A686A9C6B9D230013406C934E4B6B441A682B0013406D93FC23DB006B441B686C9C6D9D22005A406E92494B6B441B682A005A406F926E9B6F9C1B184C411900F8 -:404A0000220044483B4B6B441B68DB00C3185C681B68C9186241354B35486844C018354B6B441B68DB00C3185C681B685B185441F922D2006A4413605460374B6B441B68E1 -:404A40001A01FA23DB006B441B681B0F1A437092FA23DB006B441B681A012F4B6B441B681B0F1A437192FA23DB006B441B689A08294B6B441B689B071A437392264B6B4457 -:404A80001B689A08FA23DB006B441B689B071A4372927099719A0800729B739C1D006840749023005A407592FA23DB006B441B68DA09194B6B441B685B061A437792164B14 -:404AC0006B441B68DA09FA23DB006B441B685B061A4376927499759A0800769B779C1D006840789023005A4018E0C04628FDFFFF18080000140800000C080000080800005E -:404B000004080000FC070000F4070000EC070000E4070000303A0410D40700007992FA23DB006B441A68ED4B6B441B6813407A93EB4B6B441A68EB4B6B441B6813407B9306 -:404B4000FA23DB006B441A68E44B6B441B681A437C92E34B6B441A68E24B6B441B681A437D9280231B016B441A687C987D99030013407E93DC4B6B441A680B0013407F93CD -:404B80007A997B9A08007E9B7F9C1D002843809023001A438192789B799C8099819A5B185441F822D2006A4413605460FF23DB006B4419685A68F923DB006B445C681B6865 -:404BC0005B185441FF22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FB22D2006A4413605460BE4B6B441B680133BC4A6A441360BC4BA7 -:404C00006B441B689A04FF23DB006B441B689B0B1A438292FF23DB006B441B689A04B44B6B441B689B0B1A438392B14B6B441B689A03FF23DB006B441B689B0C1A43849234 -:404C4000FF23DB006B441B689A03A94B6B441B689B0C1A4385928299839A0800849B859C1D006840869023005A408792FF23DB006B441B685A0A9E4B6B441B68DB051A430B -:404C800089929B4B6B441B685A0AFF23DB006B441B68DB051A4388928699879A0800889B899C1D0068408A9023005A408B92FC23DB006B445C681B688A988B99C0186141DE -:404CC000FE23DB006B441A68FD23DB006B441B685A408C92874B6B441A68874B6B441B685A408D92FF23DB006B441A688C9C8D9D230013408E937E4B6B441A682B00134053 -:404D00008F93FD23DB006B441B688E9C8F9D22005A409092784B6B441B682A005A409192909B919C1B184C411900220073486F4B6B441B68DB00C3185C681B68C918624199 -:404D40006F4B70486844C018684B6B441B68DB00C3185C681B685B185441F922D2006A4413605460684B6B441B681A01FB23DB006B441B681B0F1A439292FB23DB006B4413 -:404D80001B681A01604B6B441B681B0F1A439392FB23DB006B441B689A085B4B6B441B689B071A439592584B6B441B689A08FB23DB006B441B689B071A4394929299939AE2 -:404DC0000800949B959C1D006840969023005A409792FB23DB006B441B68DA094A4B6B441B685B061A439992474B6B441B68DA09FB23DB006B441B685B061A4398929699D3 -:404E0000979A0800989B999C1D0068409A9023005A409B92FB23DB006B441A68FA23DB006B441B6813409C93374B6B441A682C4B6B441B6813409D93FB23DB006B441A6819 -:404E4000FA23DB006B441B681A439E922E4B6B441A68234B6B441B681A439F921F4B6B441A689E989F9903001340A0931D4B6B441A680B001340A1939C999D9A0800A09B37 -:404E8000A19C1D002843A29023001A43A3929A9B9B9CA299A39A5B185441F822D2006A441360546080231B016B4419685A68F923DB006B445C681B685B185441802212013E -:404EC0006A4413605460F923DB006B4419685A68F823DB006B445C681B6817E008080000D40700000C0800000408000014080000FC070000F4070000EC070000303A04107B -:404F000028FDFFFF18080000DC0700005B185441FC22D2006A4413605460EF4B6B441B680133ED4A6A441360EC4B6B441B689A0480231B016B441B689B0B1A43A4928023B2 -:404F40001B016B441B689A04E44B6B441B689B0B1A43A592E14B6B441B689A0380231B016B441B689B0C1A43A69280231B016B441B689A03D94B6B441B689B0C1A43A79261 -:404F8000A499A59A0800A69BA79C1D006840A89023005A40A99280231B016B441B685A0ACE4B6B441B68DB051A43AB92CB4B6B441B685A0A80231B016B441B68DB051A4300 -:404FC000AA92A899A99A0800AA9BAB9C1D006840AC9023005A40AD92FD23DB006B445C681B68AC98AD99C0186141FF23DB006B441A68FE23DB006B441B685A40AE92B84B32 -:405000006B441A68B74B6B441B685A40AF9280231B016B441A68AE9CAF9D23001340B093AE4B6B441A682B001340B193FE23DB006B441B68B09CB19D22005A40B292A94B49 -:405040006B441B682A005A40B392B29BB39C1B184C4119002200A4489F4B6B441B68DB00C3185C681B68C9186241A04BA0486844C018994B6B441B68DB00C3185C681B686B -:405080005B185441F922D2006A4413605460994B6B441B681A01FC23DB006B441B681B0F1A43B492FC23DB006B441B681A01914B6B441B681B0F1A43B592FC23DB006B4430 -:4050C0001B689A088B4B6B441B689B071A43B792884B6B441B689A08FC23DB006B441B689B071A43B692B499B59A0800B69BB79C1D006840B89023005A40B992FC23DB00CA -:405100006B441B68DA097B4B6B441B685B061A43BB92784B6B441B68DA09FC23DB006B441B685B061A43BA92B899B99A0800BA9BBB9C1D006840BC9023005A40BD92FC23B5 -:40514000DB006B441A68FB23DB006B441B681340BE93684B6B441A68674B6B441B681340BF93FC23DB006B441A68FB23DB006B441B681A43C0925F4B6B441A685E4B6B44AF -:405180001B681A43C192FA23DB006B441A68C098C19903001340C293584B6B441A680B001340C393BE99BF9A0800C29BC39C1D002843C49023001A43C592BC9BBD9CC4997A -:4051C000C59A5B185441F822D2006A44136054604B4B6B4419685A68F923DB006B445C681B685B185441464A6A4413605460F923DB006B4419685A68F823DB006B445C6853 -:405200001B685B185441FD22D2006A4413605460314B6B441B6801332F4A6A441360394B6B441B689A04364B6B441B689B0B1A43C692334B6B441B689A04324B6B441B6842 -:405240009B0B1A43C7922F4B6B441B689A032C4B6B441B689B0C1A43C892294B6B441B689A03284B6B441B689B0C1A43C992C699C79A0800C89BC99C1D006840CA90230069 -:405280005A40CB921E4B6B441B685A0A1D4B6B441B68DB051A43CD921A4B6B441B685A0A174B6B441B68DB051A43CC92CA99CB9A0800CC9BCD9C1D006840CE9023005A4018 -:4052C000CF92FE23DB006B445C681B68CE98CF99C0186141802317E01408000004080000FC070000F4070000303A041028FDFFFF18080000E4070000DC070000D4070000E9 -:40530000080800000C0800001B016B441A68FF23DB006B441B685A40D092EF4B6B441A68EE4B6B441B685A40D192ED4B6B441A68D09CD19D23001340D293EA4B6B441A687A -:405340002B001340D393FF23DB006B441B68D29CD39D22005A40D492E04B6B441B682A005A40D592D49BD59C1B184C4119002200DD48DE4B6B441B68DB00C3185C681B683A -:40538000C9186241DA4BDB486844C018D74B6B441B68DB00C3185C681B685B185441F922D2006A4413605460D34B6B441B681A01FD23DB006B441B681B0F1A43D692FD23DB -:4053C000DB006B441B681A01CB4B6B441B681B0F1A43D792FD23DB006B441B689A08C64B6B441B689B071A43D992C34B6B441B689A08FD23DB006B441B689B071A43D89259 -:40540000D699D79A0800D89BD99C1D006840DA9023005A40DB92FD23DB006B441B68DA09B54B6B441B685B061A43DD92B24B6B441B68DA09FD23DB006B441B685B061A43D7 -:40544000DC92DA99DB9A0800DC9BDD9C1D006840DE9023005A40DF92FD23DB006B441A68FC23DB006B441B681340E093A24B6B441A68A24B6B441B681340E193FD23DB0060 -:405480006B441A68FC23DB006B441B681A43E292994B6B441A68994B6B441B681A43E392FB23DB006B441A68E298E39903001340E493934B6B441A680B001340E593E09976 -:4054C000E19A0800E49BE59C1D002843E69023001A43E792DE9BDF9CE699E79A5B185441F822D2006A4413605460FA23DB006B4419685A68F923DB006B445C681B685B182B -:405500005441FA22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B685B185441FE22D2006A44136054606F4B6B441B6801336D4A6A441360714B6B440C -:405540001B689A04FA23DB006B441B689B0B1A43E892FA23DB006B441B689A04694B6B441B689B0B1A43E992664B6B441B689A03FA23DB006B441B689B0C1A43EA92FA23F0 -:40558000DB006B441B689A035E4B6B441B689B0C1A43EB92E899E99A0800EA9BEB9C1D006840EC9023005A40ED92FA23DB006B441B685A0A534B6B441B68DB051A43EF9234 -:4055C000504B6B441B685A0AFA23DB006B441B68DB051A43EE92EC99ED9A0800EE9BEF9C1D006840F09023005A40F192FF23DB006B445C681B68F098F199C0186141384BE4 -:405600006B441A6880231B016B441B685A40F292344B6B441A68304B6B441B685A40F392FA23DB006B441A68F29CF39D23001340F493344B6B441A682B001340F593802311 -:405640001B016B441B68F49CF59D22005A40F692214B6B441B682A005A40F792F69BF79C1B184C41190022001F48204B6B441B68DB00C3185C681B68C91862411C4B1D481B -:405680006844C018194B6B441B68DB00C3185C681B685B185441F922D2006A4413605460194B6B441B681A01FE23DB006B441B681B0F1A43F892FE23DB006B441B681A01D0 -:4056C000114B6B441B681B0F1A43F992FE23DB006B441B689A0819E004080000FC070000080800000C080000303A04101408000028FDFFFF18080000EC070000E407000053 -:40570000DC070000D4070000F4070000F24B6B441B689B071A43FB92EF4B6B441B689A08FE23DB006B441B689B071A43FA92F899F99A0800FA9BFB9C1D006840FC90230022 -:405740005A40FD92FE23DB006B441B68DA09E24B6B441B685B061A43FF92DF4B6B441B68DA09FE23DB006B441B685B061A43FE92FC99FD9A0800FE9BFF9C1D006840FFADAD -:405780000435286023005A40FFAB08331A60FE23DB006B441A68FD23DB006B441B681340FFAA0C321360CC4B6B441A68CB4B6B441B681340FFAA10321360FE23DB006B4419 -:4057C0001A68FD23DB006B441B681A43FFAB14331A60C14B6B441A68C04B6B441B681A43FFAB18331A60FC23DB006B441A68FFAB14331868596803001340FFAA1C321360CF -:40580000B74B6B441A680B001340FFAA20321360FFAB0C3319685A680800FFAB1C335C681B681D002843FFAD2435286023001A43FFAB28331A60FFAB04335C681B68FFAA10 -:405840002432116852685B185441F822D2006A4413605460FB23DB006B4419685A68F923DB006B445C681B685B185441FB22D2006A4413605460F923DB006B4419685A6849 -:40588000F823DB006B445C681B685B185441FF22D2006A4413605460924B6B441B680133904A6A441360904B6B441B689A04FB23DB006B441B689B0B1A43FFAB2C331A6092 -:4058C000FB23DB006B441B689A04874B6B441B689B0B1A43FFAB30331A60834B6B441B689A03FB23DB006B441B689B0C1A43FFAB34331A60FB23DB006B441B689A037A4B6D -:405900006B441B689B0C1A43FFAB38331A60FFAB2C3319685A680800FFAB34335C681B681D006840FFAD3C35286023005A40FFAB40331A60FB23DB006B441B685A0A6A4BF4 -:405940006B441B68DB051A43FFAB48331A60664B6B441B685A0AFB23DB006B441B68DB051A43FFAB44331A60FFAB3C3319685A680800FFAB44335C681B681D006840FFAD92 -:405980004C35286023005A40FFAB50331A6080231B016B445C681B68FFAA4C3210685168C0186141FA23DB006B441A684F4B6B441B685A40FFAB54331A604D4B6B441A68F0 -:4059C0004C4B6B441B685A40FFAB58331A60FB23DB006B441A68FFAB54331C685D6823001340FFAA5C3213603F4B6B441A682B001340FFAA603213603C4B6B441B68FFAA88 -:405A00005C321468556822005A40FFAB64331A60384B6B441B682A005A40FFAB68331A60FFAB64335C681B681B184C411900220031482C4B6B441B68DB00C3185C681B684E -:405A4000C91862412D4B2E486844C018254B6B441B68DB00C3185C681B685B185441F922D2006A4413605460264B6B441B681A01FF23DB006B441B681B0F1A43FFAB6C330A -:405A80001A60FF23DB006B441B681A011D4B6B441B681B0F1A43FFAB70331A60FF23DB006B441B689A08174B6B441B689B071A43FFAB78331A60134B6B441B689A08FF23B3 -:405AC000DB006B441B689B071A43FFAB74331A60FFAB6C3318E0C046F4070000EC070000E407000014080000DC07000008080000D40700000C080000303A041028FDFFFF10 -:405B000018080000FC07000019685A680800FFAB74335C681B681D006840FFAD7C35286023005A40FFAB80331A60FF23DB006B441B68DA09F14B6B441B685B061A43FFAB39 -:405B400088331A60ED4B6B441B68DA09FF23DB006B441B685B061A43FFAB84331A60FFAB7C3319685A680800FFAB84335C681B681D006840FFAD8C35286023005A40FFAB6E -:405B800090331A60FF23DB006B441A68FE23DB006B441B681340FFAA94321360D74B6B441A68D74B6B441B681340FFAA98321360FF23DB006B441A68FE23DB006B441B68DB -:405BC0001A43FFAB9C331A60CC4B6B441A68CC4B6B441B681A43FFABA0331A60FD23DB006B441A68FFAB9C331868596803001340FFAAA4321360C34B6B441A680B001340A5 -:405C0000FFAAA8321360FFAB943319685A680800FFABA4335C681B681D002843FFADAC35286023001A43FFABB0331A60FFAB8C335C681B68FFAAAC32116852685B18544154 -:405C4000F822D2006A4413605460FC23DB006B4419685A68F923DB006B445C681B685B185441FC22D2006A4413605460F923DB006B4419685A68F823DB006B445C681B68E8 -:405C80005B185441802212016A44136054609E4B6B441B6801339C4A6A4413609B4B6B441B689A04FC23DB006B441B689B0B1A43FFABB4331A60FC23DB006B441B689A0442 -:405CC000924B6B441B689B0B1A43FFABB8331A608E4B6B441B689A03FC23DB006B441B689B0C1A43FFABBC331A60FC23DB006B441B689A03854B6B441B689B0C1A43FFAB1F -:405D0000C0331A60FFABB43319685A680800FFABBC335C681B681D006840FFADC435286023005A40FFABC8331A60FC23DB006B441B685A0A754B6B441B68DB051A43FFAB03 -:405D4000D0331A60714B6B441B685A0AFC23DB006B441B68DB051A43FFABCC331A60FFABC43319685A680800FFABCC335C681B681D006840FFADD435286023005A40FFAB83 -:405D8000D8331A60624B6B445C681B68FFAAD43210685168C0186141FB23DB006B441A68FA23DB006B441B685A40FFABDC331A60584B6B441A68584B6B441B685A40FFAB53 -:405DC000E0331A60FC23DB006B441A68FFABDC331C685D6823001340FFAAE43213604B4B6B441A682B001340FFAAE8321360FA23DB006B441B68FFAAE43214685568220082 -:405E00005A40FFABEC331A60434B6B441B682A005A40FFABF0331A60FFABEC335C681B681B184C41190022003C48374B6B441B68DB00C3185C681B68C9186241384B3948F2 -:405E40006844C018304B6B441B68DB00C3185C681B685B185441F922D2006A4413605460314B6B441B681A0180231B016B441B681B0F1A43FFABF4331A6080231B016B4430 -:405E80001B681A01284B6B441B681B0F1A43FFABF8331A6080231B016B441B689A08224B6B441B689B071A43204B6B441A601E4B6B441B689A0880231B016B441B689B0734 -:405EC0001A43FFABFC331A60FFABF43319685A680800FFABFC335C681B681D006840A025ED006D44286023005A40114B6B441A6080231B016B441B68DA091BE0FC070000F2 -:405F0000F4070000EC07000014080000E407000008080000DC070000D4070000303A041028FDFFFF1808000004080000FC04000004050000A94B6B441B685B061A43A84BF1 -: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 -:406E40003B9B18003DB000BD00B583B00190019B10331800D9F72EFB019B180003B000BD00B583B00190019B10331800D9F7EEFB019B180003B000BD10B582B00190054CC7 -:406E8000054B9C4204D0503C2000FFF7E9FFF7E702B010BD106600087065000830B583B001900091019B012B1ED1009B104A93421AD1104B1800DEF7D1FE0F4A0F490D4BC8 -:406EC000180006F085F90E4B01241D00002C05DB2800FFF7B9FF5035013CF7E7064A094B1900002006F074F9C04603B030BDC046FFFF000050650008C0000008A55C001069 -:406F000070650008796E021010B5034B19000120FFF7C4FF10BDC046FFFF000010B584B00290039100920193009A019B0298039914F050FE03000C001A00009B534318002F -:406F400004B010BD10B582B001900091019B1800DDF772FF144A019B1A60019B009A5A60019A002300249360D460019A0023002413615461019A0023002413625462019B5D -:406F8000282200219954019B0022DA62019B00221A63019B00225A63019B382200219954019B180002B010BD543D041000B583B00190074A019B1A60019B180000F08BF8E6 -:406FC000019B1800DDF7DEFD019B180003B000BD543D041000B583B00190019B1800FFF7E5FF019B180006F0B9F9019B180003B000BD10B584B00190019B34330121180017 -:4070000005F0C0F903000393039B012B01D000235EE0019B5B681B6808331A68019B5B681800904703000293029B002B01D0029B4EE0019B5B681B6824331A68019B5B680A -:407040001800904703000C00019A13615461019B5B681B6828331A68019B5B681800904703000C00019A9360D460019B5B681B6838331A68019B5B681800904703000C0044 -:40708000019A9361D461019BDB6A002B09D1019BDC689B68180006F045F903001A00019BDA62019B1B6B002B09D1019B5C691B69180006F037F903001A00019B1A63019BE6 -:4070C000180000F091F8019B3822012199540023180004B010BD00B585B00190019B38229B5C01225340DBB2002B01D0002332E0019B34330121180005F078F90300039326 -:40710000039B002B01D0002325E0019BDB6A002B04D0019BDB6A180006F02AF9019B0022DA62019B1B6B002B04D0019B1B6B180006F01EF9019B00221A63019B38220021E7 -:407140009954019B5B681B680C331A68019B5B68180090470300180005B000BD70B586B00390039BDB6A002B05D11C491C4B5E22180004F033FF039B38229B5C01225340A3 -:40718000DBB2002B01D0174B25E0039B28229B5C002B1FD0039B5B681B6818331D68039B5868039BDE6A039B196A5A6A039BDC689B680093019413000A003100A8470300BC -:4071C0000593059B002B01D0059B04E0039B180000F00AF80023180006B070BDB03C0410043D04105FF0FFFF10B582B00190019BDC699B69019A13625462019B2822002135 -:407200009954C04602B010BD00B585B00190019B38229B5C01225340DBB2002B01D0124B1EE0019BDB6A002B05D11049104B7922180004F0D3FE019B1800FFF78FFF030091 -:407240000393039B002B01D0039B09E0019B5B681B6810331A68019B5B68180090470300180005B000BDC0465FF0FFFFB03C0410043D0410F0B597B00790069104920593E5 -:40728000079B38229B5C01225340DBB2002B01D0C14B88E1079BDB6A002B03D0079B1B6B002B05D1BD49BE4B8722180004F096FE079B58681C9B1D9C0499059A009301948B -:4072C00013000A00DDF7B8FC031E20D01C991D9A049B059CC9186241079B5C6A1B6AA24202D812D1994210D9079B196A5A6A079BDC689B685B185441059AA24205D8059A7D -:40730000A24204D1049A9A4201D9012300E00023002B13D0079B5B681B6814331D68079B58681C9B1D9C0499059A069E0093019413000A003100A847030034E1069B1593DF -:407340001C9B1D9C1A00224300D12BE14B2302AA9446634401221A70079B5C6A1B6A059AA24205D3059AA24218D1049A9A4215D2079B196A5A6A049B059CC91AA2410B00EA -:4073800014000A930B940AAB19001CA800F0ADFB03005C681B680893099456E0079B5C6A1B6A059AA2424CD3059AA24202D1049A9A4246D3079B196A5A6A079BDC689B6851 -:4073C0005B185441059AA24205D3059AA24238D1049A9A4235D2079B9C68DD68079B9A68DB680498059914F0F5FBA41A9D4123002C000C930D940CAB19001CA800F075FBFE -:4074000003005C681B6808930994079BDD6A079BDC689B68049805991A00230014F0DAFB1C001300E918089B099C1A00159B180010F00AFB4B2302AA9446634400221A7002 -:4074400003E01C9B1D9C089309944B2302AA944663441B78002B00D184E0079B5C691B69049805991A00230014F0B4FB1C00130010931194109B119A134309D1079B1969BD -:407480005A69089B099CA24202D83ED199423CD9079B19695A69109B119CC91AA2410B0014000E930F940EAA08AB1100180000F01CFB03005C681B6808930994079B5B681A -:4074C0001B6814331D68079B5868079B1B6B9C460499059A109B119CC91AA241079B5C691B690093019413000A006146A84703001393079B1A6B109BD118089B099C1A00EB -:40750000159B180010F0A0FA27E008980999079B5C691B691A002300FFF700FD03001E0000231F0008960997079B5B681B6814331D68079B5868089B099C029303940499BD -:40754000059A159B9C46029B039C0093019413000A006146A84703001393139B002B01D0139B20E0089B099C1A00159B9B181593089B099C0499059A5B1854410493059499 -:407580001C991D9A089B099CC91AA2410B0014001C931D94D4E6C0465FF0FFFFB03C0410143D04100023180017B0F0BDF0B5C64600B596B00990089106920793099B3822A3 -:4075C0009B5C01225340DBB2002B01D0A14B3CE1099BDB6A002B05D19F49A04BBF22180004F0FCFC099BDC689B68069807991A002300FFF793FC0300129300231393089BAB -:407600001593099B5C6A1B6A129A9A4203D1139AA24200D10FE0099B1800FFF79FFD03001193119B002B01D0119B0EE1099A129B139C136254621C9B1D9C1A00224300D1E4 -:4076400002E1099BDC689B68069807991A002300FFF764FC03001D0000231E00099B1D625E62099B5C6A1B6A0699079AC91AA2410B0014000E930F940E9B0F9A134315D042 -:40768000099B9968DA680E9B0F9CC91AA2410B0014000C930D940CAB1CA9180000F025FA03005C681B680A930B941FE0099B9968DA681C9B1D9CA24214D801D1994211D885 -:4076C0001C981D99099BDC689B681A002300FFF725FC0300029300230393029B039C0A930B9403E01C9B1D9C0A930B94099B9968DA680A9B0B9CA24202D835D1994233D9AB -:40770000099B28229B5C01225340DBB2002B1CD0099B5B681B6814331F68099B5868099BDB6A9C46099B196A5A6A099BDC689B680093019413000A006146B84703001193BB -:40774000119B002B01D0119B7FE0099BDA6A0E9BD0180A9B0B9C1A00159B190010F074F9099BDB6A149301E0159B14930A990B9A0E9B0F9CC918624108001100099BDC6858 -:407780009B681A00230014F025FA1C001300190022000B0013433AD1099B5B681B6818331F68099B5B689846099B5C6A1B6A04930594099B08331A000AAB1100180000F0A9 -:4077C000A9F903005C681B68149900930194049A059B4046B84703001193119B002B01D0119B32E0099B5B681B6810331A68099B5B681800904703001193119B002B01D0A4 -:40780000119B22E0099B1800FFF7EEFC03E0099B2822012199540A9B0B9C1A00159B9B1815930A9B0B9C0699079A5B185441069307941C991D9A0A9B0B9CC91AA2410B005C -:4078400014001C931D94F6E60023180016B004BC9046F0BD5FF0FFFFB03C0410043D041070B586B005900292039305980299039A0A9B0B9C0093019413000A00DDF776FA0E -:4078800003001A0001235340DBB2002B07D00823FF331A002049214B180004F09FFB059B38229B5C01225340DBB2002B01D01C4B2EE0059B5C6A1B6A039AA24217D8039AD6 -:4078C000A24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24206D801D1994203D8059B1800FFF77DFC059B5B681B681C331D68059B58680299039A11 -:407900000A9B0B9C0093019413000A00A8470300180006B070BDC046B03C0410303D04105FF0FFFF70B586B005900292039305980299039A0A9B0B9C0093019413000A0075 -:40794000DDF714FA03001A0001235340DBB2002B06D08A235A002049204B180004F03EFB059B38229B5C01225340DBB2002B01D01B4B2EE0059B5C6A1B6A039AA24217D8A4 -:40798000039AA24202D1029A9A4211D8059B196A5A6A029D039E0A9B0B9C5B197441A24206D801D1994203D8059B1800FFF71CFC059B5B681B6820331D68059B58680299AD -:4079C000039A0A9B0B9C0093019413000A00A8470300180006B070BDB03C0410303D04105FF0FFFF10B582B00190012300241800210002B010BD10B582B001900123002446 -:407A00001800210002B010BD10B582B00190019B38229B5C01225340DBB2002B02D0002300240AE0019B5B681B682C331A68019B5B681800904703000C001800210002B09D -:407A400010BD10B584B0039000920193039B38229B5C01225340DBB2002B02D0002300240DE0039B5B681B6830331968039B5868009B019C1A002300884703000C00180093 -:407A8000210004B010BD000000B583B00190019B38229B5C01225340DBB2002B01D0074B09E0019B5B681B6834331A68019B5B68180090470300180003B000BD5FF0FFFF53 -:407AC00010B582B00190019B38229B5C01225340DBB2002B02D00023002402E0019BDC699B691800210002B010BD10B582B001900091009B5C681B68019A11685268A2425E -:407B000002D803D1994201D9009B00E0019B180002B010BD10B582B001900091019B5C681B68009A11685268A24202D803D1994201D9009B00E0019B180002B010BD000076 -:407B400082B00190034A019B1A60019B180002B07047C046E83D041000B583B00190019B1800FFF7EDFF019B180005F0F7FB019B180003B000BD10B584B002900391009204 -:407B80000193029B039C01214942CA175B18544118002100009A019B14F01CF803000C0019002200012300245B1854411A00009B5343180004B010BD10B584B0029003913B -:407BC00000920193009A019B0298039914F002F803000C001A00009B5343180004B010BD70B588B00190019B1B6838331B68019A1000984703000C0006930794019B1B681B -:407C00002C331B68019A1000984703000C0004930594049A059B0698079913F0DBFF03000C0002930394039B002B08D1039B002B02D1029B012B02D801235B4208E0029BDE -:407C4000012213401D00039B002213401E000023180008B070BD000070B5A2B00E900F910C920D9310AB1800DDF707FC10AB1800DDF71AFC03001C931C9B002B01D000243D -:407C8000E2E1C84B009300230193C64A10AB11001800DDF74EFE0300029300230393029A039B00980199FFF766FF03001A9300231B9310AB1800DDF74AFE03001893002337 -:407CC000199310AB1800DDF74DFE03001D0000231E00189B199C5B197441169317940E9B0F9A134300D1DCE01B9A0F9B9A4207D81B9A0F9B9A4209D11A9A0E9B9A4205D925 -:407D000010AB1800DDF716FC00249DE10E9A10AB11001800DDF70DFE03000493002305930E980F99049A059BFFF746FF03001E9300231F930E9A1E9B9A4203D10F9A1F9B64 -:407D40009A4205D010AB1800DDF7F4FB00247BE10C9B0D9A134336D11699179A0E9B0F9CC91AA2410B001400209321948E4B1B78BFF35B8FDBB21A00012313405A4253413A -:407D8000DBB2002B19D0884B180005F04DFA03005A1E9341DBB2002B0FD00E99209A834B1800DDF755F8804B180005F075FA804A80497E4B180005F00BFA10AB1800DDF751 -:407DC000B9FB7A4C40E10C9B0D9A134369D00E990F9A0C9B0D9C5B18544114931594159A179B9A4207D8159A179B9A4209D1149A169B9A4205D910AB1800DDF79BFB002466 -:407E000022E1149B5A1E10AB11001800DDF791FD030006930023079314981599069A079BFFF7A9FE0300129300231393149A129B9A4203D1159A139B9A4205D010AB1800E3 -:407E4000DDF778FB0024FFE05B4B1B78BFF35B8FDBB21A00012313405A425341DBB2002B19D0554B180005F0DFF903005A1E9341DBB2002B0FD00E990C9A504B1800DCF7B6 -:407E8000E7FF4D4B180005F007FA494A49494B4B180005F09DF910AB1800DDF74BFB474CD2E047230CAA9446634400221A700E9B0F9A13430DD10C9B0D9A134309D14723EB -:407EC0000CAA9446634401221A70012300240C930D941699179A0C9B0D9CC91AA2410B0014000E930F940E9A10AB11001800DDF720FD03000893002309930E980F99089A73 -:407F0000099BFFF759FE03001E9300231F930E9A1E9B9A4203D10F9A1F9B9A420FD047230CAA944663441B7801225340DBB2002B05D010AB1800DDF7FDFA002484E0472391 -:407F40000CAA944663441B78002B39D01699179A1E9B1F9CC91AA2410B001400DB186441209321941699179A209B219CC91AA2410B0014000E930F940E9A10AB11001800BD -:407F8000DDF7D7FC03000A9300230B930E980F990A9A0B9BFFF710FE03001E9300231F9318E0C046D86304108866000860660008C0000008A94E0010B86600089066000890 -:407FC0001699179A1E9B1F9CC91AA2410B0014002093219410AB1800DDF7ACFA1B9A1F9B9A4207D81B9A1F9B9A4205D11A9A1E9B9A4201D9002427E0174B1B78BFF35B8FE9 -:40800000DBB21A00012313405A425341DBB2002B19D0114B180005F007F903005A1E9341DBB2002B0FD01E99209A0C4B1800DCF70FFF094B180005F02FF9094A0949074BC1 -:40804000180005F0C5F8054C10AB1800DDF720FA2300180022B070BDE8660008C0660008C0000008A94E001070B58AB0802212020023069207936A4A002308920993069B7F -:40808000079A134339D1089B099A134335D102AB1800DDF7F2F902AB1800DDF705FA03005A1E9341DBB2002B02D05E4C00251CE05D4B1D0000231E005B4A02AB11001800DC -:4080C000DDF737FC0300009300230193009A019B28003100FFF74FFD030008930023099302AB1800DDF726FA012502AB1800DDF7CFF9012D00D08EE0C046069B079C089868 -:4081000009991A002300FFF7A7FD0200474BDA60464BDB68002B01D1424C7CE0434BDB681B6808331A68414BDB681800904703000593059B002B01D03A4C6CE03B4BDB689C -:408140001800FFF74DFD03005A1E9341DBB2002B01D0374C5FE0374B1B78BFF35B8FDBB21A00012313405A425341DBB2002B1AD0304B180005F058F803005A1E9341DBB2B8 -:40818000002B10D0294BDA682B4B1100180000F007FB284B180005F07FF8284A2849264B180005F015F8214B234A5A601F4B5B681B6808331A681D4B5B68180090470300EB -:4081C0000593059B002B01D0059C24E0174B5A68164B1A60154B0F2252429A61D9F718FF03000493049B180000F0ADF803000593059B002B01D0059C0DE00C4A1149049BA6 -:40820000180000F0CDF803000593059B002B01D0059C00E00024230018000AB070BDC046008007100F01FF80D8630410446600080101FF80CC670008EC660008C000000868 -:408240004D880210903D041000B583B000230193144B1800DDF7C0FB0300180005F02CF9114B1B78002B10D1104B1C22002118000FF07CFCFFF7F8FE03000193019B002BCE -:4082800004D1094B01221A7000E0C046054B1800DDF7A2FB0300180005F036F9019B180003B000BD10660008406600084466000800B583B001900091009B002B0CD0009BA1 -:4082C00018000FF075FF031E06D0009B18000FF06FFF0300802B01D9012300E00023002B01D000230EE0094A009B1100180010F017F803005A1E9341DBB2002B01D00023FF -:4083000000E00123180003B000BDC046243E041082B00190034A019B1A60019B180002B07047C046E83D041000B583B00190019B180000F00BF9019B180000F0F7F9019B62 -:40834000180003B000BD00B585B0019000230393019B20331800DDF73FFB0300180005F0ABF8019BDB69002B0CD1019B00229A61019B1822002118000FF0F8FB019B012218 -:40838000DA6100E0C046019B20331800DDF724FB0300180005F0B8F8039B180005B000BD00B587B00390029101920023059300230493039B20331800DDF70EFB030018009F -:4083C00005F07AF8039BDB69002B02D11D4B05932AE0039B9B69022B02DD1B4B059323E0029B013318000FF0E3FE0300180004F099FF03000493029A049B110018000FF010 -:40840000CFFE039B9A69039BD2000499D150039B9B69039ADB00D3180433019A1A60039B9B695A1C039B9A61039B20331800DDF7D3FA0300180005F067F8059B180007B016 -:4084400000BDC0460E01FF801F01FF8000B583B001900091009B1B6818000EF0BBFF009B5B68002B6FD0009B5B689B68002B0AD0009B5B689B681B680C331A68009B5B68E3 -:408480009B6818009047009B5B685B69002B0AD0009B5B685B691B6828331A68009B5B685B6918009047009B5B681B69002B0AD0009B5B681B691B680C331A68009B5B68A5 -:4084C0001B6918009047009B5B685B68002B0AD0009B5B685B681B680C331A68009B5B685B6818009047009B5B68DB68002B0AD0009B5B68DB681B680C331A68009B5B6885 -:40850000DB6818009047009B5B681B68002B0AD0009B5B681B681B680C331A68009B5B681B6818009047009B1B68002B04D0009B1B68180004F01CFF009B00221A60009BFA -:4085400000225A6000E0C04603B000BD00B585B0019000230393019B20331800DDF73CFA0300180004F0A8FF019BDB69002B02D1184B03931DE000230293019B9A69029B06 -:408580009A4216DD019A029BDB00D31804331B681B68002B0CD0029BDB00019AD218019B11001800FFF752FF029B01330293E4E7C046019B00229A61019B20331800DDF7D6 -:4085C0000BFA0300180004F09FFF039B180005B000BDC0460E01FF8000B58BB0039002910192009300230993029B0693039BDB69002B02D1364B09935BE0069B002B20D0E8 -:40860000009B00221A60069B1B782F2B07D1069B01330693009B1B685A1C009B1A60069B2F2118000FF00AFD03000593059B002B0FD101235B420893039B5A68019B1A605F -:4086400037E001235B420893039B5A68019B1A602FE0059A069BD31A089300230793039B9A69079B9A421CDD039B079AD200D158089A069B18000FF0CDFD03005A1E9341B8 -:40868000DBB2002B08D1039A079BDB00D31804331A68019B1A6004E0C046079B01330793DDE7039B9A69079B9A4202D1094B0993C046099B002B06D1009B1A68089BD318FE -:4086C0005A1C009B1A60099B18000BB000BDC0460E01FF800701FF8000B587B001900091019B20331800DDF777F90300180004F0E3FE0023039303AB04AA00990198FFF71A -:408700006BFF03000593019B20331800DDF764F90300180004F0F8FE059B002B02D1049B1B6800E00023180007B000BD82B00190019B180002B0704700B583B001900091BE -:40874000019B013B0099180013F072F803000133009A5343180003B000BD30B58FB0059004910392059907A8002300930123002202F04AFA049B1C0000231D00039907A86C -:408780000DAB009322002B0002F064FA0D9C07AB1800DDF783F9230018000FB030BD000000B583B001900091019B1800FFF7B0FD254A019B1A60019B0433180004F02AFE3A -:4087C000019B2833180004F025FE019B0022DA64019B00221A65019B00225A65019B009A9A65019B0022DA65019B00221A66019B00225A66019B00229A66019B6C220021A6 -:408800009954019B00221A67019B742200219952019B00229A67019B8C2200219950019B902200219950019B942200219950019B982200219954019B9C2200219950019BA3 -:40884000180003B000BDC0462440041000B583B001900C4A019B1A60019B180001F0B8FC019B2833180004F071FE019B0433180004F06CFE019B1800FFF762F9019B180040 -:4088800003B000BD2440041000B583B00190019B1800FFF7DBFF019B180004F05FFD019B180003B000BD000070B58AB0079005920493132302AA944663440A1C1A70079BD2 -:4088C000DB6D1B6814331E68079BD86D132302AA944663441B78079A0F33DB00D31804331A68059BD318029300230393049B1C0000231D000E9900940195029A039BB047CB -:4089000003000993099B002B01D0034B00E0002318000AB070BDC0461B01FF8070B58AB0079005920493132302AA944663440A1C1A70079BDB6D1B6818331E68079BD86DAB -:40894000132302AA944663441B78079A0F33DB00D31804331A68059BD318029300230393049B1C0000231D000E9900940195029A039BB04703000993099B002B01D0034B3C -:4089800000E0002318000AB070BDC0461C01FF80F0B58DB007900592132302AA944663440A1C1A70132302AA944663441B78079A0F33DB00D31804331A68059BD3180B936F -:4089C000079BDB6D1B6830331968079BD86D0B9B029300230393029A039B884702000B0013000A93079BDB6D1B681C331968079BD86D0B9B1E0000231F000A9B1C00002377 -:408A00001D000094019532003B00884703000993099B002B01D0034B00E0002318000DB0F0BDC0461C01FF80F0B593B00590059B9B6D1B6838331A68059B9B6D18009047D3 -:408A400002000B00069207938022120600230892099308AA06AB11001800FFF746F803001A685B680E920F93059B7C331022002118000FF07BF800231193059B9B6D1B683C -:408A800030331968059B986D119B009300230193009A019B884702000B000C920D93059B982200219954119B1E0000231F000E9A0F9BD90754080C435D08BD4202D830D157 -:408AC000B4422ED9059B9B6D1B6830331968059B986D119B029300230393029A039B884702000B000A920B93059B98229B5C19000123181C0A9A0C9B9A4205D10B9A0D9B6F -:408B00009A4201D10023181CC3B20B435A1E9341D9B2059B982299540A9B119AD3181193C1E7059B0022DA67059B8021119A5A50059B8421119A5A500E9A119BD21A059BB5 -:408B400088215A50C04613B0F0BD000010B598B005900392029313236B440A1C1A7001235B42149347236B441D9A51424A411A7000231793249B039A1A60039A13236B44C6 -:408B80001978059808AB00931823FFF78DFE03001793179B002B01D0179B43E108AB1B68A24A934201D0A24B3CE1059B8C229B5819001820FFF7C0FD0200039B9B18039354 -:408BC00008AB9B89069308AB1B69109308AB9A68239B1A60069B002B02D0069B7F2B01D9934B1FE1069A109BD3180793079A039BD218059B9B6F9A4201D38D4B12E11D9AC8 -:408C0000109B9A4201D98B4B0CE1109A1D9BD31A0E930EAA1BAB11001800DCF7E8FE03001A681C9B1A601FAB1B78002B08D01C9B1B68002B04D01A9B002B01D17E4BF1E025 -:408C400047236B441B78002B0AD008AA149B14211800FFF782FD03001493002316930CE01C9B1B6807931D9B1693069A1D9BD318039AD318039300230693029B1593229B6A -:408C8000012252421A60079B002B00D1AFE0069B002B1BD01EAB1B78002B09D0159B1393069B1293069B159AD31800221A7041E0059B90229B581393604A06AB110018002C -:408CC000DCF795FE03001B68129333E0169A1D9B9A4211D21D9A169BD31A0F930FAA574B11001800DCF783FE03001B681293059B90229B5813931DE01FAB1B78002B0CD063 -:408D00001C9B1A681D9BD218169B9A4205D91C9B1B6812931A9B13930CE007AA474B11001800DCF764FE03001B681293059B90229B581393129C039A13236B4419780598B2 -:408D4000139B00932300FFF7AFFD03001793179B002B65D147236B441B78002B07D0139A1299149B1800FFF7F8FC03001493069B002B2FD020AB1B78002B0DD0129A139943 -:408D8000159B18000EF03AFE03005A1E9341DBB2002B01D02A4B179321AB1B78002B09D0229B1B68139A12991800FFF7D6FC0200229B1A60159A129BD3181593069A129B6E -:408DC000D31A0693069B002B08D1039A1D9BD318039303E0169A129BD3181693079A129BD31A0793039A129BD31803934BE747236B441B78002B07D008AB5A69149B9A421D -:408E000002D00B4B17930CE0059B8C229A58039B11001800FFF790FC0200249B1A6000E0C046179B180018B010BDC046836668540201FF800501FF800101FF8018400410CC -: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 -:40994000D3180293079A3A236B441B88D31A0793AEE7059B8C229A58029B11001800FEF7EBFE0200149B1A600023180011B030BD1840041070B58CB00390039BDB6C0A9321 -:40998000039B1B6FDBB20122D31AD9B2039B5A6E039B9B6ED2180398002300931300002201F0D2F803000993099B002B01D0099BC1E0039800234022002100F0D1FE030098 -:4099C0000993099B002B46D100230693039B5B6E0493049B002B3ED004AA584B11001800DCF705F803001B680893039B1B6FD9B2069E039B90229B58089A0398009313006B -:409A00003200FEF751FF03000993099B002B01D0099B90E0039B1B6FDBB20122D31AD9B2069E039B90229B58089A0398009313003200FEF773FF03000993099B002B01D06A -:409A4000099B78E0069A089BD3180693049A089BD31A0493BDE7039B5A6E039B9B6ED3180693069B059300230B93039B5A6D0B9B9A4229D90B9B1B010A9AD3189A68DB68B0 -:409A800013000793039B1B6FD9B2069E079A039805AB00933300FFF791FE03000993099B002B01D0099B46E00B9B1B010A9AD318069A1400002215009C60DD60059B0693B4 -:409AC0000B9B01330B93D0E7059B0693059A039B1A66039B1B6F0122D21A039B1A67039B74229B5A013399B2039B74229952039B1B6FD9B2039B74229A5A06AB0398FFF707 -:409B00002DFE03000993099B002B01D0099B12E0039B1B6FDBB20122D31ADAB2039B1100180000F0A5FB03000993099B002B01D0099B00E0002318000CB070BD184004102A -:409B400070B598B00D900D9BDB6C149300231393002316930D9B00225A650D9B5B6E17930D9B1A6E179B9A4200D89CE00D9B1B6FD9B20D9B94229E58179A0D9813AB0A9338 -:409B800010AB099311AB089301230793002306930023059301230493002303930FAB029300230193002300933300FEF7CFFF03001693169B002B00D072E00D9B1B6FD9B235 -:409BC0000D9B94229A5812AE0D9811AB01930EAB00933300FFF736F903001693169B002B03D0169B334A93425CD1179B1593139B1793169B2F4A934225D1109B002B4DDB8C -:409C00000D9B5A6D0D9B1B6D9A4205D314AA0D9B1100180000F050F8149A0E9B01331B01D018149A0E9B1B01D1180D9B5A6D0E9BD31A1B011A000DF049FF0D9B5B6D5A1CB9 -:409C40000D9B5A6519E0109B002B16DA0D9B5B6D5A1E0D9B5A65149A0E9B1B01D018149A0E9B01331B01D1180D9B5A6D0E9BD31A1B011A000DF02AFF11E0149A0E9B1B01BF -:409C8000D318119A1A60149A0E9B1B01D318159A1400002215009C60DD6061E7C0465FE7C04600E0C046139A0D9B1A66169B180018B070BD0701FF8000B585B0019000915D -:409CC000019BDB6C0393019B1B6D0133164A934201D81B0101E001235B42180003F022FB03000293019B1B6D1A010399029B18000DF0AAFE019B1B6D5A1C019B1A65019B81 -:409D0000029ADA64039B002B03D0039B180003F02FFB009B002B03D0019BDA6C009B1A600023180005B000BDFFFFFF0710B59CB00D9000231B930D9B0433180003F0BCFB79 -:409D40000D9B10221A650D9B1B6DD94A934201D81B0101E001235B42180003F0E3FA030019930D9B199ADA640D9B00225A650D9B012252429A67402003F0B8FA03001C008E -:409D80000D9B9B6D19002000FDF7DCF80D9BDC650D9BDB6D1B6808331A680D9BDB6D180090470D9B9B6D1B6834331A680D9B9B6D18009047030001335A425341DBB2002B20 -:409DC00007D0BC49BC48002300930023002202F0DBFB0D9B9B6D1B6828331A680D9B9B6D1800904703000C0019000D9B8C229950402003F097FA030019000D9B9022995067 -:409E0000802003F08FFA030019000D9B94229950382003F06BFA030019000D9B9C2299500D9B9C229B583822002118000DF09EFE0D9BA0334022002118000DF097FE0D9BB3 -:409E40008C229B5819004820FEF776FC02000D9B5A669A4B19680D9B08221800FFF766F802000D9B9A660D9B1800FEF7DDFD6B236B4400221A706B236B441B78012B00DD50 -:409E80009AE06B236B441B7816AA0021D1546B236B441A7811AB52000021D1520D9B783318006B236B441B780F33DB000D9AD3180833190000F022FF03001A680D9B9A67B4 -:409EC0000D9B5A6E7D4B1C686B236B4419780D9815AB0A9314AB099313AB0893002307930123069301230593002304930023039312AB0293082301930FAB00932300FEF703 -:409F000025FE03001B931B9B002B0BD01B9B6C4A934207D06B491B98002300930023002202F032FB1B9B664A934221D10D9B5A6E0D9B9C6E6B236B4419780D98012300937F -:409F4000230000F001FE03005A1E9341DBB2002B07D05D495D48002300930023002202F013FB6B236B441B7816AA0121D1541BE06B236B441A780FAB198811AB5200D1527E -:409F80006B236B441B7816AA0221D1546B236B441A780D9B1A676B236B441A7811AB5200D15A0D9B742299526B236B441A786B236B4401321A705EE716AB1B78012B23D11E -:409FC00016AB5B78012B1FD10D9B00221A670D9B7422012199520D9B1B6FD9B20D9B74229A5A0D9B60330D98FFF7B8FB03001B931B9B002B00D1D1E035491B9800230093A8 -:40A000000023002202F0C0FA16AB1B78022B35D116AB5B78022B31D111AB1B881A0011AB5B889A4203DC11AB1B88002B03D10D9B00221A6702E00D9B01221A670D9B1A6F0A -:40A0400011AB5200D15A0D9B742299520D9B1B6FDBB20122D31ADAB20D9B1100180000F007F903001B931B9B002B07D019491B98002300930023002202F086FA0D9B9A6FC6 -:40A080000D9B1A660D9B1800FFF75AFD03001B931B9B002B22D01B9B094A93421ED00E491B98002300930023002202F06DFAC046FFFFFF074C3E04100101FF80A4030008E5 -:40A0C0000201FF80783E0410A03E04101B01FF80C43E0410F43E04101C3F04101B9B364A934224D10D9B1A6E0D9B9B6F9A421ED20D9B1B6FD9B20D9B1A6E3B236B440D986F -:40A1000000F0BCFC03005A1E9341DBB2002B07D02A492B48002300930023002202F034FA3B236B441B78002B01D000231B930D9800234022002100F013FB030018931B9B7E -:40A140001D4A934203D0189B1B4A934227D10D9B1800FFF70FFC03001B931B9B002B07D018491B98002300930023002202F00CFA0D9BDB6D1B6810331A680D9BDB6D18007A -:40A18000904703001793179B002B08D00E490F48002300930023002202F0F6F9C0460D9B6C22012199540D9B0433180003F0ACF91B9B18001CB010BD0201FF80483F04107E -:40A1C0001B01FF80883F0410B03F04101C01FF8000B585B00190019B0433180003F06CF9019B6C229B5C002B35D0019BDB6D1B680C331A68019BDB6D18009047019BDB6D5C -:40A20000002B08D0019BDB6D1B6804331A68019BDB6D18009047019BDB6C0393039B002B03D0039B180003F0A3F8019B90229B58002B05D0019B90229B58180003F098F8B2 -:40A24000019B94229B58002B05D0019B94229B58180003F08DF8019B6C2200219954019B0433180003F050F90023180005B000BD00B585B003900A000B236B441A70039B2C -:40A280005A6E039B9B6ED2180B236B4419780398012300931300002200F056FC0300180005B000BD00B585B00190019B6C229B5C01225340DBB2002B01D0254B45E0019B75 -:40A2C0000433180003F0F8F80F236B4400221A700F236B441B78012B14DC0F236B441A78019B11001800FFF7C3FF03000293029B002B23D10F236B441A780F236B44013244 -:40A300001A70E5E7019B00221A67019B00225A65019B5A6E019B1A66019B742201219952019B1B6FD9B2019B74229A5A019B60330198FFF713FA0300029300E0C046019B90 -:40A340000433180003F0E0F8029B180005B000BD0E01FF8000B589B003900291019200230793039B6C229B5C01225340DBB2002B01D0344B62E0029B002B01D1324B5DE033 -:40A38000039B0433180003F097F800230693069B0F2B0BDC039B069A28329200D358002B03D0069B01330693F1E7C046069B102B02D1264B07933BE00C2002F097FF030085 -:40A3C0000593029B059A1A60019B002B09D0204A019B110018000DF09FFE031E01D0012300E00023002B14D0019B18000DF0E0FE03000133180002F095FF03001A00059B5D -:40A400009A60059B9B68019A110018000DF0C8FE02E0059B00229A60059B00225A60059B069A1A60039B069A283292000599D150039B0433180003F067F8079B180009B089 -:40A4400000BDC0460E01FF800101FF802001FF80D43F041010B598B00F900E910D920C930F9BDB6C16930F9B6C229B5C01225340DBB2002B01D0434B80E00F9B04331800CB -:40A4800003F01AF80E9B15933F4B1793179B002B6ED0159B5A680F9B5B6D9A4268D20F9B1B6FD9B2159B5B681B01169AD318DC689B681C000F9B94229A580F9811AB0A935F -:40A4C00012AB099313AB0893002307930023069300230593012304930023039314AB0293002301930023009313002200FEF72EFB03001793179B002B39D1159B9B68002B7C -:40A500000ED00F9B94229A58159B9B68190010000EF08CF801000F9B94229B58994201D1012300E00023002B19D00F9B94229B5818000DF03DFE01000C9A002391425B4175 -:40A54000DBB2002B02D0114B179311E00F9B94229A580D9B110018000DF022FE01E00A4B1793159B5B685A1C159B5A608EE7C0460F9B0433180002F0C7FF179B180018B029 -:40A5800010BDC0460E01FF800701FF800501FF8000B585B001900091019B6C229B5C01225340DBB2002B01D0124B20E0019B0433180002F081FF009B0393039B9B68002B0B -:40A5C00004D0039B9B68180002F0D2FE039B1A68019B283292000021D150039B180002F0BDFE019B0433180002F08EFF0023180005B000BD0E01FF8086B0039001920B2390 -:40A600006B440A1C1A7000230593059B0F2B25DC039B059A28329200D3580493049B002B15D0049B5A68019B9A4212D90B236B441B78002B05D0049B5B685A1C049B5A6026 -:40A6400008E0049B5B685A1E049B5A6002E0C04600E0C046059B01330593D6E7C04606B07047000000B58BB005900491039200230993039B402B01D9354B66E0059B043367 -:40A68000180002F019FF059800234022002100F067F803000993099B002B03D0099B2D4A934202D12C4B099349E0099B2B4A934240D1059B1B6FD9B2039A0598049B009386 -:40A6C00013000022FEF72AF903000993099B002B32D106AB08221A80039B9AB206AB5A80049A039901235B421800FEF736F8020006AB5A60059B1B6FD9B2059806AB009379 -:40A7000008234022FEF70AF903000993099B002B14D1059BDB6D1B6810331A68059BDB6D1800904703000893089B002B07D00A4B099304E0C04602E0C04600E0C046059BAE -:40A740000433180002F0E0FE099B18000BB000BD0501FF800201FF801C01FF800701FF8010B594B005900491039202934B236B4401221A7001235B421093059BDB6D1B6866 -:40A7800034331A68059BDB6D18009047020033236B441A70059B1B6FD9B2059806AB009308234022FEF780F803000B930B9B002B01D00B9BA0E006AB139300230E930E9B8B -:40A7C000072B11D8139A0E9BD3181B7833226A4412789A4204D04B236B4400221A7003E00E9B01330E93EAE74B236B441B7801225340DBB2002B0ED006AB5B881193029B61 -:40A80000002B02D0029B119A1A60039A119B9A420CD23B4B70E04023089303AA08AB1100180000F06BFA03001B681193049B002B02D0049B139303E0059B90229B581393CB -:40A8400000230F93119B002B47D0119B099309AA2C4B11001800DBF7CAF803001B680A93059B1B6FD9B20A9C0F9A0598139B00932300FEF719F803000B930B9B002B01D085 -:40A880000B9B39E000230D930D9A0A9B9A4211D2139A0D9BD3181B7833226A4412789A4204D04B236B4400221A7003E00D9B01330D93E9E7139A0F9BD2180A99109B18005C -:40A8C000FDF74BFF030010930F9A0A9BD3180F93119A0A9BD31A1193B4E74B236B441B78002B01D0084B07E006AB5A68109B9A4201D0064B00E00023180014B010BDC04669 -:40A900000501FF80184004100701FF800201FF8000B587B00390029101920093039B0433180002F0C9FD009B019A02990398FFF717FF03000593039B0433180002F0E4FD6D -:40A94000059B180007B000BD70B590B00B90099208930B2308AA944663440A1C1A700B2308AA944663441B780B9A0F33DB00D31804331A68099BD3180E930B9B98229B5C83 -:40A9800001225340DBB2002B1BD00B9BDB6D1B682C331A680B9BDB6D1800904703000C000D930E9B0D99180010F0C8FF0B001A00089B1A60089B1B680D9AD21A149B1A600E -:40A9C0005AE000230F930E9B1D0000231E000F9B0093002301930B9BDB6D1B6830331C680B9BD96D0F9B029300230393029A039B0800A04703000C000099019A5B185441AD -:40AA00000122B44204D801D1AB4201D800231A1CD3B2002B15D00B9BDB6D1B6830331C680B9BD96D0F9B049300230593049A059B0800A04703000C001A000F9B9B180F9306 -:40AA4000C1E70E9A0F9BD21A089B1A600B9BDB6D1B68303319680B9BD86D0F9B069300230793069A079B884703000C001A00089B1B68D21A149B1A6010B070BD10B598B024 -:40AA800005900392029313236B440A1C1A7014AC039A13236B441978059813AB00932300FFF752FF059BDB6D1B6834331A68059BDB6D18009047010007AB182218000DF0EA -:40AAC00055F8139B002B36D01823159315AA13AB11001800DAF78BFF03001B681793179C039A13236B44197805980DAB00932300FDF7DAFE03001693169B002B01D0114BC4 -:40AB00001DE0179A07A90DAB18000CF077FF03005A1E9341DBB2002B04D0029B00221A7000230CE0039A179BD3180393139A179BD31A1393C5E7029B01221A70002318004F -:40AB400018B010BD1B01FF8010B58CB005900392029313236B440A1C1A70029B002B4DD008AC039A13236B441978059809AB00932300FFF7E9FE09AA02AB11001800DAF766 -:40AB800036FF03001B680B93089B002B03D00EAB1B78002B29D01F246C44039A13236B44197805982300FFF769FF03000A930A9B002B01D0134B22E01F236B441B780122BF -:40ABC0005340DBB2002B10D0089B039AD21A13236B441978059B1800FDF7DAFE03000A930A9B002B01D0074B09E0039A0B9BD3180393029A0B9BD31A0293AEE70023180030 -:40AC00000CB010BD1C01FF8000B585B00390029101921A006B4603331A700D4A039B1A60039B029A5A60039B019A9A60039B6A46033212781A73039B06AA12785A73039B4E -:40AC40001800DAF717FF039B180005B000BDC046D4FA031010B588B005900491029203930A9B002B05D12349234B9722180001F0B5F9002307930A9A059B1100180000F06B -:40AC80004DF803000793079B002B08D0059B1B6808331B68059A10009847079B26E0029B039C049905980A9A00921A00230000F04FF803000793079B002B08D0059B1B6871 -:40ACC00008331B68059A10009847079B0EE00A9A059B1100180000F06DF803000793079B002B02D00A9B00221A60079B180008B010BDC046D83F04100C40041082B00190A6 -:40AD00000091009B1A68019B1B689A4201D2009B00E0019B180002B07047000000B583B001900091009B002B05D10749074BE922180001F053F9019B5A68009B1A600023C1 -:40AD4000180003B000BDC046D83F04100C40041010B588B0059004910292039300230793059B1B7D012B02D0022B0DD019E0029B039C049905980A9A00921A00230000F09A -:40AD80004FF80300079310E0029B039C049905980A9A00921A00230000F0A8F80300079303E001235B420793C046079B180008B010BD000010B584B001900091009B002B45 -:40ADC00007D10A23FF331A001349144B180001F005F9009B1B680393039A019B1100180000F003F90200019B9B685A401400019B180000F0F3F8030023401A00009B1A60CB -:40AE0000019B1B6808331B68019A100098470023180004B010BDC046D83F04100C40041010B58CB003900291009201930E9B002B07D1D023FF331A002A492B4B180001F034 -:40AE4000CDF8029B07930E9B1B680B931B236B4400221A70039B1B6905930023002408930994019A099B9A4207D8019A099B9A422AD1009A089B9A4226D9089B079AD318E3 -:40AE80001B781A00039B1100180000F0E5F80300D9B20B9B1B0EDAB21B236B444A401A701B236B441B789B00059AD3181A680B9B1B0253400B93089B099C012100225B184D -:40AEC000544108930994CCE7039B180000F086F802000B9B1A400E9B1A60002318000CB010BDC046D83F04100C40041010B58AB003900291009201930C9B002B07D1A42378 -:40AF0000FF331A003249334B180001F067F8029B04930C9B1B6809930023002406930794019A079B9A4207D8019A079B9A4241D1009A069B9A423DD9069B049AD3181B78E2 -:40AF40001A00039B1100180000F086F803001B06099A5340099317236B4408221A7017236B441B78002B1CDD039B180000F0A7F80200099B13405A1E9341DBB2002B05D038 -:40AF8000099B5B00144A5340099302E0099B5B00099317236B4417226A441278013A1A70DDE7069B079C012100225B18544106930794B5E7039B180000F010F80200099BF1 -:40AFC0001A400C9B1A60002318000AB010BDC046D83F04100C400410B71DC10482B0019001235B42180002B0704784B001900091019B5B7B002B2BD0002303930A236B4462 -:40B0000020221A700B236B4400221A700B236B441B781F2B1ADC009B012213400BD00B236B441B781F22D31A01229A4013001A00039B13430393009B5B0800930B236B445F -:40B040000B226A44127801321A70DFE7039B00E0009B180004B0704784B001900091019B1B7B002B27D0002303930B236B4400221A700B236B441B78072B1ADC009B01220A -:40B0800013400BD00B236B441B780722D31A01229A4013001A00039B13430393009B5B0800930B236B440B226A44127801321A70DFE7039B00E0009B180004B0704782B004 -:40B0C000019080231B06180002B0704782B0EFF310830193019B012213405A425341DBB2180002B07047000010B582B06B46DC1DFFF7ECFF0300237072B6084B1B78DBB23C -:40B10000002B08D1064B6A46073212781A70034B01221A7000E0C04602B010BDD1670008D067000810B5FFF7D1FF031E05D00849084B3622180000F051FF074B00221A700B -:40B14000064B1B78DBB2002B00D062B6C04610BD68400410A8400410D1670008D067000800B585B003900291019200930299009A019B18000CF068FC0023180005B000BD15 -:40B1800082B002006B4606331A806B4606331B881A0007231340180002B0704700B585B0039002910192029B072B05D90F4A104B1100180009F034FB019B012B05D90D4AE0 -:40B1C0000B4B1100180009F02BFB019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE5020000C4400410E602000010B582B00190009194 -:40B20000019B04229B5E013305D10B490B4B2F22180000F0E3FE019B1C68019B04229B5E1800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD30410410844104106D -:40B2400000B585B003900800110001930A236B44021C1A8009236B440A1C1A700A236B4400229A5E039B110018000AF085F90A236B4400229B5E013312D0019A039B1100F9 -:40B280001800FFF7B9FF039B012118000AF01EFA09236B441A78039B110018000AF0E8F9C04605B000BD00B583B001900A006B4602331A806B4602330021595E019B0022D8 -:40B2C000180000F003F8C04603B000BD00B585B0039001920A236B440A1C1A80019A0A236B440021595E039813000022FFF7A8FFC04605B000BD000000B585B003900291E5 -:40B30000039A029B9A4201D1039B11E0039B013301D1029B0CE0029B013301D1039B07E0039A0549054800230093002301F02CF9180005B000BDC046A841041030010180DB -:40B3400082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E9A4202D1009B5B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B07047DC -:40B3800000B587B0020002910E236B441A8001235B4205930E236B4400229B5E013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B0133D9 -:40B3C00007D1059A0549064800230093002301F0DBF8059B180007B000BDC046BC4104103001018082B0020000916B4606331A800EE0009B00229B5E6A4606320021525E02 -:40B400009A4202D1009B9B6809E0009B0C330093009B00229B5E0133EBD101235B42180002B0704700B587B0020002910E236B441A8001235B4205930E236B4400229B5E32 -:40B44000013302D101235B4216E0029A0E236B4400215B5E11001800FFF7C4FF03000593059B013307D1059A0549064800230093002301F089F8059B180007B000BDC046D7 -:40B48000DC4104103001018010B5002300241800210010BD00B583B000F0B6FE0D4B1B880D4A93420BD100F0C9FE0A4B1B881A000A490B4800230093002301F065F8054B22 -:40B4C0000121180000F03EFF00F0B8FEC04603B000BDC046D2670008FFFF0000FC4104102301048000B583B000F08EFE0C4B1B88002B0BD100F0A2FE094B1B881A00094933 -:40B50000094800230093002301F03EF8044B0121180000F04BFF00F091FEC04603B000BDD2670008244204102401048010B586B000F06AFEFFF7A8FF03000C00049305946F -:40B540000F236B4400221A700BF0FBF8FFF79CFF03000C00009301940F236B441B78002B0ED00099019A049B059CC91AA2410E4B5C681B685B1854410B4A136054600DE0C0 -:40B580000099019A049B059CC91AA241074B5C681B685B185441054A1360546000F04EFEC04606B010BDC046E0670008D8670008F0B58FB00590059B5B6838229B5C002B81 -:40B5C00000D0F2E0059B5B683A229B5C002B00D0EDE0059B1B681B689847059B1B68DB69984703000C930C9B1B680B930C9B1B68002B05D16F49704B2D22180000F0EEFC17 -:40B60000272304AA9446634400221A70262304AA944663441F221A701FE0262304AA944663441B7801229A400B9B9A420AD1272304AA94466344262204A98C4662441278CE -:40B640001A7011E0262304AA94466344262204A98C4662441278013A1A70262304AA944663441B78002BD8D10C9B5B680A930C9B5B68202B03D80C9B5B68032B05D84D499A -:40B680004D4B3B22180000F0A9FC0A9B043B07229A4013000993099B009300230193474A00230098019910F0B5FA02000B000B990E0000210F0092197B4101204042C117FE -:40B6C000801859410B9B029300230393029A039B10F080FA02000B0006920793059B5B6800221A60059B5B6800225A60059B5E68059B1B685B68984703003362059B5968CF -:40B70000002200238A62CB62059B5B680B9A9A60059B5B68272204A98C4662443B2112785A54059B5B680A9A203A002A03DB012191400D000AE00A9A20218A1A0121D14035 -:40B740000A0000200A9988400500154301210A9A91400C002200013ADA60059B5B68099A1A61059B5A68069B079C9361D461059B5A680023002413635463059B5B683922B9 -:40B7800000219954059B5B683A2200219954059B5B68382201219954059B180000F01AF8059B180000F0EEF902E0C04600E0C0460FB0F0BD444204107C42041040420F0062 -:40B7C00082B001900091019B5B68009A1A60C04602B0704770B598B00D900D9B5B681593159A3A23D35C002B00D001E10D9B1B685B689847030014930D9B5B681A6A149BC9 -:40B800009A4200D1F6E0159B1A6A149B9A1A159BDB681340129300231393159A149B1362159B9A68754B9A4204D1129B139C16931794D2E0159A3B23D35C002B00D170E05A -:40B840006E4A00231298139910F0E4F903000C0010931194159B3B229B5C1A00203A002A04DB1199D1400A00169208E02022D21A119991400A001099D9400A431692119A78 -:40B88000DA4013001793159B996ADA6A159B3B201B5C18002038002803DB169C8440260008E02020C01A169CC4402000179C9C4026000643169898400500109B119C5B1BF7 -:40B8C000B4415B185441159A9362D462159BDC6A9B6A159A9268009200220192019AA24200D97AE0019AA24203D1009A9A4200D973E0169B179C012100225B185441169386 -:40B900001794159BDC6A9B6A159A92680492002205920499059A5B1A9441159A9362D4625BE0364A00231298139910F073F903000C000E930F94159B9B680693002307930D -:40B94000069A079B0E980F9910F044F903000C0016931794159B9D6ADE6A159B9B68089300230993169A179B0898099910F052F903000C00190022000E9B0F9C5B1A9441B4 -:40B980005B197441159A9362D462159BDC6A9B6A159A9268029200220392039AA2421CD8039AA24202D1029A9A4216D8169B179C012100225B18544116931794159BDC6A6C -:40B9C0009B6A159A92680A9200220B920A990B9A5B1A9441159A9362D462159B196B5A6B169B179C5B185441159A1363546302E0C04600E0C04618B070BDC04640420F0037 -:40BA0000F0B589B0039000920193039B5B680693069B1A6B5B6B00980199801A994102000B0004920593039B5B681B690793039B5B689A69DB690599994200D972E005993F -:40BA4000994202D1049991426CD8069B9B683A4A93420CD1049B0793039B5B681A69079B9A425FD2039B5B681B6907935AE0069B3B229B5C002B2FD0039B5B683B229B5C31 -:40BA80001A00203A002A03DB049991400D0008E02022D21A0499D1400A00059999400D001543049A9A401400244A00232000290080185941204A002310F08CF803000C002D -:40BAC0000793039B5B681A69079B9A422AD2039B5B681B69079325E0069B9B681E0000231F00049A059B3000390010F093F803000C0019002200114B0024C918624108003E -:40BB000011000D4A002310F065F803000C000793039B5B681A69079B9A4203D2039B5B681B690793069B1A6A079BD218069BDB681340180009B0F0BD40420F003F420F0037 -:40BB400084B0039002910192019A039B9A420BD9029A019B9A4203D2029A039B9A4201D201230CE000230AE0029A039B9A4205D2029A019B9A4201D3012300E000231800DC -:40BB800004B0704710B58CB00190019B5B680B930B9B3A229B5C002B00D06CE0019B5B6839229B5C002B66D1019B1800FFF712FE019B5B685B68002B4DD0019B5B685C6BEE -:40BBC0001B6B08930994019B5B685B685C681B6806930794079A099B9A420CD8079A099B9A4203D1069A089B9A4204D8019B1B685B69984740E0069B079C01991A002300F8 -:40BC00000800FFF7FDFE030005930B9B1A6A059B9A4206D184235A001849194B180000F0DDF9019B1B681B69059A10009847019B1B685B689847030004930B9B1B6A059AF9 -:40BC400004991800FFF77CFF031E15D0019B1B685B69984710E00B9B1A6A0B9B1B69D2180B9BDB6813400393019B1B681B69039A1000984700E0C0460CB010BD444204109E -:40BC80008042041000B583B001900091019B1800FFF78EFC00F0B8FA009A019B11001800FFF78EFD00F0CAFAC04603B000BD10B584B0019000F0A8FA019B1B68DB68984767 -:40BCC000019B5B683A229B5C002B02D000F0B6FA41E0019B5B68392201219954019B5B685B68002B29D0019B1800FFF773FD019B5B685B6819685A68019B5B685C6B1B6B9A -:40BD0000A2421CD801D1994219D8019B5B685B680393019B5B68019A52685268D2685A60019B5B681B68002BD8D0019B5B681A68039B9B6818009047D0E7C04600E0C046AA -:40BD4000019B5B68392200219954019B1800FFF719FF00F073FA04B010BD10B586B0039002910092019300F04FFA039B1800FFF731FD029A009B019C13605460029B089AC7 -:40BD80009A6000230593039B5B685B68049310E0049B5C681B68019AA2420ED3019AA24202D1009A9A4208D3049B0593049BDB680493049B002BEBD100E0C046029B049AE3 -:40BDC000DA60059B002B08D1039B5B68029A5A60039B1800FFF7D6FE02E0059B029ADA6000F02CFAC04606B010BD00B585B00190009100F009FA019B5B685A68009B9A42A0 -:40BE000009D1019B5B68009AD2685A60019B1800FFF7B8FE14E0019B5B685B6803930CE0039BDA68009B9A4204D1009BDA68039BDA6005E0039BDB680393039B002BEFD17D -:40BE400000F0FCF9C04605B000BD10B582B00190019B1800FFF7ACFB00F0D6F9019B1800FFF7B8FC00F0EAF9019B5B685C6B1B6B1800210002B010BD014B18007047C04617 -:40BE8000C442041010B5054B1B68002B04D0034B1B68034A10009847C04610BDA8030008C442041082B001900023180002B0704782B001900023180002B0704700B585B06C -:40BEC0000190019B1B6810331B68019801220021984703000393039B002B01DA039B12E0019B1B6810331B68019802220021984703000293019B1B6810331B6803990198EF -:40BF000000229847029B180005B000BD00B583B0734601900091002293431A000099019B180000F004F80300180003B000BD00B587B003900291019200230593029A039BA6 -:40BF4000110018000BF050FA03000593059B180007B000BD00B587B003900291019200230593019A0299039B18000BF049FE03000593059B180007B000BD00B583B0734696 -:40BF800001900091002293431A000099019B180000F003F8C04603B000BD00B585B0039002910192029A039B110018000BF0D8F8C04605B000BD00B587B0039002910192B1 -:40BFC00000230593019A0299039B18000AF08AFE03000593059B180007B000BD00B587B005900491039200F00FF9049A05990348039B00931300002200F0C6FA4401FF804D -:40C0000082B002006B4606331A806B4606331B881A0007231340180002B0704700B585B0039002910192029B072B05D90F4A104B1100180008F0F4FB019B012B05D90D4A92 -:40C040000B4B1100180008F0EBFB019B002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE50200001C430410E602000010B582B001900091EB -:40C08000019B04229B5E013305D10B490B4B2F221800FFF7A3FF019B1C68019B04229B5E1800FFF7ADFF0100009B1A002000FFF7B5FFC04602B010BD88430410DC43041064 -:40C0C00000B585B000F0A0F81E4A6B4611001800FFF7E9F80023039312E06B4601211800FFF7CAFF962001F06DF96B4600211800FFF7C2FF962001F065F9039B0133039345 -:40C10000039B032BE9DD0023029316E06B4601211800FFF7B1FFC8235B00180001F052F96B4600211800FFF7A7FFC8235B00180001F048F9029B01330293029B032BE5DD8B -:40C14000C8E7C046020600000FB400B583B005AB0193019A049B1100180000F005F8C04603B008BC04B0184700B5A5B001900091009B019A02A884210DF09AFE0300239334 -:40C18000239B832B06D9084902AB7F33052218000BF05AFC239B002B03DD02AB180000F005F8C04625B000BDEC43041000B583B0019000F029F8019B18000BF0F9FF03006A -:40C1C0001A00019B1900022000F028FE00F036F8C04603B000BD82B0EFF310830193019B012213405A425341DBB2180002B0704782B0EFF305830193019B5A1E9341DBB274 -:40C20000180002B07047000010B5094B1B68013305D10849084B51221800FFF7DFFEFEF763FF034B1B685A1C014B1A60C04610BD28680008F44304102C44041010B5094B1E -:40C240001B68002B0BD0074B1B685A1E054B1A60044B1B68002B03D1FEF764FF00E0C04610BDC0462868000800B585B00190FFF7CBFF0F236B44019A12781A70019B01221A -:40C280001A70FFF7DBFF0F236B441B785A1E9341DBB2180005B000BD00B587B0039002916B4607331A70FFF7AFFF16236B44039A12781A70029B1B7816226A4412789A420D -:40C2C00009D1039B6A46073212781A7017236B4401221A7008E0029B16226A4412781A7017236B4400221A70FFF7A8FF17236B441B78180007B000BD00B587B00390029168 -:40C300000192FFF781FF039B1B680493029B1A68049B9A4207D1039B019A1A6017236B4401221A7006E0029B049A1A6017236B4400221A70FFF782FF17236B441B78180046 -:40C3400007B000BD00B585B001900A006B4602331A80FFF759FF019B1B8899B20E236B446A46023212888A181A80019B0E226A4412881A80FFF762FF0E236B441B88180032 -:40C3800005B000BD00B585B001900091FFF73CFF019B1A68009BD3180393019B039A1A60FFF74CFF039B180005B000BD00B585B001900A006B4602331A80FFF725FF019BBD -:40C3C0001B8899B20E236B446A46023212888A1A1A80019B0E226A4412881A80FFF72EFF0E236B441B88180005B000BD00B585B001900091FFF708FF019B1A68009BD31A26 -:40C400000393019B039A1A60FFF718FF039B180005B000BD10B50F4B1800FFF725FF031E05D0FFF7F1FEBFF34F8F20BFFDE7FFF7DFFE031E08D1FFF7CEFE03001A0001232F -:40C440005340DBB2002B01D0FFF73AFE012000F0C7FEC046306800080FB410B584B07446124B1800FFF700FF03001A0001235340DBB2002B17D02300002293430C480093A1 -:40C4800000230022002100F019F80A490A480023002200F0B1F807AB0393039A069B11001800FFF761FEFFF7B5FFC0462C6800080001FF80604404106C68000800B593B036 -:40C4C0000390029101920093039B002B01DB264B039304AB3422002118000BF047FB04AB039A1A60149A04AB5A6004AB029A9A601E4B5B691193119A04ABDA60119BDA6B51 -:40C5000004AB1A61119B5A6B04AB5A61119B1B6B1A0004AB9A6104AA04ABDA61FFF774FE134B1B685A1C124B1A60114B1B68012B05D104A90F4B342218000BF085FA04A955 -:40C540000D4B342218000BF07FFA0C4B1B68002B04D00A4B1B68084A10009847FFF76EFE0023180013B000BD0101FF80B404000834680008386800086C680008A0680008F9 -:40C58000002318007047000010B586B0744605900491039202930F4B1800FFF765FE03001A0001235340DBB2002B10D02300002293431C00089B029A039905980094FFF710 -:40C5C0007DFF089B029A0499034800F015F8FFF721FFC0462C6800086C68000882B00190019B002B01D0019B00E0024B180002B07047C0467844041070B58AB007900691FF -:40C6000005920493079B1B685B1703221340032B03D1079B1B685B4203E0079B1B681B041B0C0993079B1B681B14FF2213400893079B1968089B099A4E48FFF785FD099B91 -:40C64000323BFF3B132B49D89A004B4BD3181B689F46079B9A68494B11001800FFF774FD3DE0079B9A68464B11001800FFF76CFD35E0079B9A68434B11001800FFF764FDC8 -:40C680002DE0079B9A68404B11001800FFF75CFD25E0079B9A683D4B11001800FFF754FD1DE0079B9A683A4B11001800FFF74CFD15E0079B9A68374B11001800FFF744FD1C -:40C6C0000DE0079B9A68344B11001800FFF73CFD05E0324B1800FFF737FD00E0C046069B1800FFF763FD079B5A682D4B11001800FFF72AFD059B002B0DD02A4B1800FFF7EC -:40C7000055FD059B1800FFF751FD049A264B11001800FFF719FD079B9A68244B11001800FFF712FD079BDB685B681800FFF756FF0600079BDC68079B1D69079B5A69079B00 -:40C740009969079BDB691A480293019100922B0022003100FFF7F8FC079B1A68154B11001800FFF7F1FC144B1800FFF7EDFCC0460AB070BD844404107C460410D844041099 -:40C78000F0440410004504101045041024450410384504104C4504105C45041074450410884504109C450410A4450410A8450410BC450410144604106046041000B583B041 -:40C7C000FFF722FD0D4B1B880D4A93420BD1FFF735FD0A4B1B881A000A490B48002300930023FFF7D1FE054B1B8801339AB2034B1A80FFF723FDC04603B000BDA4680008A8 -:40C80000FFFF0000CC4604102301018000B583B0FFF7FAFC0D4B1B88002B0BD1FFF70EFD0A4B1B881A000A490A48002300930023FFF7AAFE054B1B88013B9AB2034B1A80C7 -:40C84000FFF7FCFCC04603B000BDC046A4680008FC4604102401018000B583B0FFF7D4FC0D4B1B880D4A93420BD1FFF7E7FC0A4B1B881A000A490B48002300930023FFF72D -:40C8800083FE054B1B8801339AB2034B1A80FFF7D5FCC04603B000BDA6680008FFFF0000244704102301018000B583B0FFF7ACFC0D4B1B88002B0BD1FFF7C0FC0A4B1B88F5 -:40C8C0001A000A490A48002300930023FFF75CFE054B1B88013B9AB2034B1A80FFF7AEFCC04603B000BDC046A6680008504704102401018010B5074B1B68002B08D0054B7D -:40C900001A6801235B421900100003F08DF800E0C04610BD9073000810B5064B1B68002B05D0044B1B68180003F0A8F800E0C04610BDC0469073000884B00390029101928E -:40C940001D235B42180004B0704782B0019016235B42180002B0704782B001900123180002B0704782B001900023180002B0704700B585B003900800110001930A236B4468 -:40C98000021C1A8002AB0A1C1A80039B1800D9F785FA0F4A039B1A600E4B1B68002B11D102AB00229A5E0A236B440021595E0A4B180009F099FD019A074B1100180009F06D -:40C9C00051FE00E0C046039B180005B000BDC04638490410B0720008D883000800B587B0039002910192029B049300230593059A019B9A420DD2049A059BD3181B781A0052 -:40CA0000064B1100180009F047FE059B01330593EDE7019B180007B000BDC046D883000800B587B0039002910192029B0593019B002B01D1002308E0054B180009F043FE4D -:40CA40000300DAB2059B1A700123180007B000BDD883000800B585B001900A006B4602331A800E236B4400221A806B4602331B881A000123134007D0194B180009F038FEAD -:40CA8000031E01D0012300E00023002B07D00E236B440E226A44128801210A431A806B4602331B881A001023134007D00C4B180009F02FFE031E01D0012300E00023002B21 -:40CAC00007D00E236B440E226A44128810210A431A800E236B4400229B5E180005B000BDD883000882B001900023180002B0704782B001900023180002B0704710B5174B12 -:40CB00001B78BFF35B8FDBB21A00012313405A425341DBB2002B1DD0104B180000F084FB03005A1E9341DBB2002B13D096239901A023DA000A4C0B480B002100FFF718FF35 -:40CB4000064B180000F0A8FB074A0849054B180000F03EFB034B180010BDC046346900080105000030690008C000000885D3021000B585B00190019B1800FFF7B9FF0300EF -:40CB80000393039B002B01D0039B0DE0019B1800FFF7A8FF03000393039B002B01D0039B02E0FFF7ABFF0300180005B000BD000000B585B00190019B3F2B01DD002316E011 -:40CBC0000C4B019A9200D3580393039B01330DD1019B022B0ADC019B1800FFF7C9FF03000393044B019A92000399D150039B180005B000BDAC03000800B583B00190019B59 -:40CC0000180000F005F80300180003B000BD000000B585B00190019B1800FFF7C9FF03000393144B019A92000021D150039B002B07D10AF083F8030009221A6001235B4291 -:40CC400015E0039B1B6814331B68039A1000984703000293029B002B08DA0AF06FF80300029A52421A6001235B4200E00023180005B000BDAC03000882B0019000231800F5 -:40CC800002B0704700B58DB00590049103920293FFF7AEFA031E08D1FFF79DFA03001A0001235340DBB2002B01D0012300E00023002B07D0059A5549554800230093002367 -:40CCC000FFF762FC039B002B07DA0AF037F8030016221A6001235B4295E0039B089300230B93059B1800FFF7C7FF031E5ED02B236B444849059A8A1812781A7000230993C3 -:40CD0000099A089B9A4251DA099B049AD3181B780A2B40D12B236B441B780D2B3BD0099A0B9B9A4221DD0B9B049AD118099A0B9BD31A1A00059B180000F070F80300079380 -:40CD4000079B002B02DA01235B425CE00B9A079BD3180B930B9A099B9A4250DB2D4A059BD3182B226A4412781A702B49059B0122180000F053F803000793079B002B02DA0C -:40CD800001235B423FE0079B002B3ADD214A059BD3180D221A70099B049AD2182B236B4412781A70099B01330993A9E70B9A089B9A4227DA0B9B049AD118089A0B9BD31A38 -:40CDC0001A00059B180000F029F803000693069B002B02DA01235B4215E00B9A069BD3180B930B9B002B0DDD0B9B013B049AD3181978084A059BD3180A1C1A7002E0C0465B -:40CE000000E0C0460B9B18000DB000BD784704102F010180F0680008B447041000B587B0039002910192039B1800FFF7C1FE03000593059B002B07D109F080FF03000922ED -:40CE40001A6001235B4216E0059B1B680C331B68019A02990598984703000493049B002B08DA09F06BFF0300049A52421A6001235B4200E0049B180007B000BD00B58BB0D6 -:40CE80000590049103920293FFF7B2F9031E08D1FFF7A1F903001A0001235340DBB2002B01D0012300E00023002B07D0059A46494648002300930023FFF766FB039B002BB8 -:40CEC00007DA09F03BFF030016221A6001235B4276E000230993059B1800FFF7CDFE031E65D01F216944059B0122180000F072F803000893089B002B02DA01235B425FE05A -:40CF0000089B002B01D1099B5AE01F236B441B780D2B05D12E4A059BD3181B780A2B0AD11F236B441B780A2B11D1294A059BD3181B780D2B0BD01F236B441978244A059B6C -:40CF4000D3180A1C1A70049B0A221A702CE01F236B441B780D2B05D11D4A059BD3181B780A2B0AD01F236B441B780A2B0ED1184A059BD3181B780D2B08D11F236B441978E4 -:40CF8000134A059BD3180A1C1A70AAE71F236B4419780F4A059BD3180A1C1A701F236B441A78049B1A70C0460123099307E0039A0499059B180000F00DF803000993099BAF -:40CFC00018000BB000BDC046B84704102F010180B068000800B587B0039002910192039B1800FFF7E5FD03000593059B002B07D109F0A4FE030009221A6001235B4216E04C -:40D00000059B1B6808331B68019A02990598984703000493049B002B08DA09F08FFE0300049A52421A6001235B4200E0049B180007B000BD00B587B0039002910192019AD6 -:40D040000299039B180000F006F803000593059B180007B000BD00B587B0039002910192039B1800FFF7A4FD03000593059B002B07D109F063FE030009221A6001235B42B7 -:40D0800016E0059B1B6810331B68019A02990598984703000493049B002B08DA09F04EFE0300049A52421A6001235B4200E0049B180007B000BD00B585B00190019B1800AA -:40D0C000FFF776FD03000393039B002B07D109F035FE030009221A6001235B4215E0039B1B6818331B68039A1000984703000293029B002B08DA09F021FE0300029A5242FB -:40D100001A6001235B4200E00023180005B000BD10B5012000F064F886B00190194B1B680593184B1A68019BD3180493EFF308830393039B1900049A00238A425B41DBB23C -:40D14000002B05D0104B0C221A6001235B4215E00E4B1B68002B0DD00D4B1A680B4B1B68D218049B9A4205D8074B0C221A6001235B4203E0034B049A1A60059B180006B0AB -:40D180007047C046AC0400084C840008AC680008A868000800B583B001900C4B1B689B68180009F009FF094B1B68DB68180009F003FF0120FFF77FFF0220FFF77CFF019B8E -:40D1C000002B01D0FEF77CFFFEE7C0460806000884B00390029101920123180004B0704700B583B00190019B1800FFF7D3FFC04603B000BD82B001900123180002B070475B -:40D2000000B583B00190019B180000F031FAC04603B000BD00B583B00190019B180000F037FAC04603B000BD00B585B00190019B0393039B1B781A0003231340012B01D1FD -:40D24000002320E0FFF756FB039B1B781A0003231340012B03D1FFF75FFB002313E0039B1B781A000323134005D0084A0849094B1800FEF7B3FE039B1B7802221343DAB295 -:40D28000039B1A700123180005B000BD8C050000004804103C48041000B585B00190019B0393039B1B781A0003231340022B05D00B4A0C490C4B1800FEF790FE039B1B78D3 -:40D2C0005BB2032293435BB2012213435BB2DAB2039B1A70FFF720FBC04605B000BDC04694050000004804106448041000B587B00390039B18000AF063F803000593059BD6 -:40D30000002B07D1039A05490548002300930023FFF73AF9059B180007B000BDA44804101F01018000B587B00390039B18000AF047F803000593059B002B07D1039A05494C -:40D340000548002300930023FFF71EF9059B180007B000BDC44804101F01018000B583B00190019B18000AF035F8C04603B000BD00B583B00190019B18000AF02BF8C04673 -:40D3800003B000BD00B583B00190054A019B1A60019B1800D8F746FD019B180003B000BD3849041000B583B00190019B1800FFF7E9FF019B1800FFF7D1FF019B180003B0B4 -:40D3C00000BD000000B585B00390FEF711FF031E08D1FEF700FF03001A0001235340DBB2002B01D0012300E00023002B07D0074907480023009300230022FFF7C5F8039B8F -:40D40000180004F029FAC04605B000BD804904100601018000B583B00190019B180000F0A5F8019B00221A62019B0021180000F005F8019B180003B000BD000000B587B01A -:40D4400001900091019B04331C22002118000AF08DFB02AB180010231A0000210AF086FB009B002B01D0009A00E0104A02AB1A60019B1A1D02AB9A6002AB1C22DA6002AB32 -:40D480000B225A6002AB180002F0AAFA0200019B1A60019B1B68002B05D10549054B33221800FEF79BFDC04607B000BD084A0410244A0410544A041000B587B00390039B29 -:40D4C0001A6801235B421900100002F0ADFA03000593059B002B04D1039B1B6A5A1C039B1A62059B002B07D0059A05490548002300930023FFF748F80023180007B000BD9F -:40D50000584A04101501028000B587B00390039B1B6A5A1E039B1A62039B1B68180002F0ADFA03000593059B002B07D0059A05490548002300930023FFF726F800231800F8 -:40D5400007B000BD6C4A04101701028000B583B00190019B1B68180002F0B6FA019B180000F00AF8019B180003B000BD82B00190019B180002B0704782B00190019B180060 -:40D5800002B0704700B583B0124B0193114B124AD31A0093009B8022D200934201D98023DB000E4A13600D4B1B68009AD31A019AD2180B4B1A60094B1B68009AD31A009342 -:40D5C000084B009A1A60084B019A1A6000F06EF800F08AF850840008000001089C69000898690008AC680008A868000810B5154B154A1A60134B0B225A60124B1C22DA604D -:40D60000104B124A9A600F4B180002F0E9F902000F4B1A600F4B104A1A600E4B0B225A600C4B1C22DA600B4B0C4A9A60094B180002F0D6F902000A4B1A6009F095FEC046AA -:40D6400010BDC04658690008804A04103C6900083869000888690008904A04106C6900086869000810B5D6F7A3F90300180010BD00B583B00190054B1A6801235B42190002 -:40D68000100002F0D1F9C04603B000BD3869000800B583B00190044B1B68180002F0EEF9C04603B000BDC0463869000810B500F013F804F043F900F011F8C04610BD10B59D -:40D6C000FFF794FF00F006F8FEF75AFFFFF7CAFFC04610BDC0467047C046704710B500F031FCC04610BD000000B585B0244B254A1A60234B0B225A60214B1C22DA60204BBE -:40D70000214A9A60214B224A1A61204B802252015A611E4B4422DA601C4B1E4A9A601B4B18229A61194B1C4A1A60D6F7D5FF04F073FFD6F7FFF8124B180002F051F90200E7 -:40D74000164B1A60114A164B0021180003F068FE03000393039B002B07D10C4A11491248002300930023FEF70FFF00F00BFC0F490D480023009300230022FEF705FFC046C2 -:40D780005C7300089C4A0410407300086C730008D873000894730008AC4A041090730008BFD60210B44A04101D010180D04A041000B583B00190064B1B68002B04D0044B5E -:40D7C0001B68019A10009847C04603B000BDC046A069000800B583B0019000F017F9000000B585B003900291039B052B2DD8039B9A001A4BD3181B689F46039A18491948E4 -:40D80000002300930023FEF7BFFE039A16491748002300930023FEF7B7FE039A14491548002300930023FEF7AFFE039A12491348002300930023FEF7A7FE039A1049114898 -:40D84000002300930023FEF79FFE039A0E490F48002300930023FEF797FEC046B44C0410E84A0410250102800C4B041026010280344B0410270102806C4B041028010280C0 -:40D88000A84B04102A010280E84B04100001028082B00190019B0633052B10D89A000A4BD3181B689F46094B0AE0094B08E0094B06E0094B04E0094B02E0094B00E0094B4E -:40D8C000180002B07047C046CC4C0410044C04101C4C0410504C0410684C0410784C0410904C0410AC4C041000B585B00390039B1800FFF7CDFF0100039A034800230093B5 -:40D900000023FEF741FEC0463101018000B585B003900291029B1800FFF7BAFF0100039A0248002300930023FEF72EFE3201018000B585B003900291029B1800FFF7A8FF6B -:40D940000100039A0248002300930023FEF71CFE3301018000B585B003900291029B11330BD0029B1800FFF793FF0100039A0448002300930023FEF707FEC04605B000BDE4 -:40D980003401018000B585B003900291029B1800FFF77EFF0100039A0248002300930023FEF7F2FD3501018000B585B003900291029B1800FFF76CFF0100039A02480023EC -:40D9C00000930023FEF7E0FD3801018000B583B003F054FD03000193019B1800FFF7E8FEC04603B000BD10B5FDF7A0FDC04610BD10B5FEF709FCFDF74DFDFFF7F4FFFDF719 -:40DA000071FDFEF71BFCC04610BD000010B5024B1B689847FBE7C046B00400087046C0082CD3EFF30980816902390978002929D101B50FC8B8470CBC03C29E461E4B06CB99 -:40DA400091421ED0002909D0EFF3098020388863F0C044464D4656465F46F0C0083B1A60906B1030F0C8A046A946B246BB4680F309882038F0C80220C0430047EFF308800F -:40DA8000D1E770470D4A13689942FAD801B5890053589C460FC8E0470CBC10609E46704701B502F06BFC03BC8E46C7E701B502F003FC03BC8E46C1E7C8040008084E04106B -:40DAC00082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704700B583B00190019B002B04D0019B1900132003F0E0 -:40DB00001FF80023180003B000BD000080B584B00190FFF7D5FF031E03D1FFF7DCFF031E09D006235B4219000020FFF7EFFE06235B42039307E0019B02930298044B1F0041 -:40DB400000DF03000393039B180004B080BDC046EDDA021082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704750 -:40DB800082B00B4B0A4A126AFF2109040A431A62074B1B6A0193064B054AD169019A5202920E92060A43DA61C04602B07047C04600ED00E010B5A94B1B7A012B01D1002372 -:40DBC00049E1A64B1B7A002B07D001235B421800FFF78AFE01235B423DE1A14B5B6D472B07D80B235B421800FFF77EFE01235B4231E19B4BDB68002B03D0994B1B8A002B35 -:40DC000007D101235B421800FFF76EFE01235B4221E1944B9C220021180009F0A7FF904BDA688E4BDA658E4B198A8C4B542299528B4B9A68894B1A64894BDA6A884B1B6B15 -:40DC40001900100000F0D1F9031E04D0844BDA6A824B80215A50824B5A69814B9B691900100000F0C2F9031E04D07D4B5A697B4B5A6704E0794B80229A58784B5A67784BE3 -:40DC8000DA69774B1B6A1900100000F0AEF9031E04D0734BDA69714B9A6704E06F4B80229A586E4B9A676E4B5A6A6D4B9B6A1900100000F09AF9031E04D0694B5A6A674B76 -:40DCC000DA6704E0654B80229A58644BDA67644B5B6B002B13D0624B586B614B5B6B19685F4B5B6B9A685E4B5B6BDB6800F0C8FA031E04D05A4B5A6B584B84215A50584B1B -:40DD00009B6B002B13D0564B986B554B9B6B1968534B9B6B9A68524B9B6BDB6800F0B0FA031E04D04E4B9A6B4C4B88215A504C4BDB6B002B13D04A4BD86B494BDB6B196843 -:40DD4000474BDB6B9A68464BDB6BDB6800F098FA031E04D0424BDA6B404B8C215A50404B1B6C002B13D03E4B186C3D4B1B6C19683B4B1B6C9A683A4B1B6CDB6800F080FAFF -:40DD8000031E04D0364B1A6C344B90215A50344B5B6C002B13D0324B586C314B5B6C19682F4B5B6C9A682E4B5B6CDB6800F068FA031E04D02A4B5A6C284B94215A50284BA7 -:40DDC0009B6C002B13D0264B986C254B9B6C1968234B9B6C9A68224B9B6CDB6800F050FA031E04D01E4B9A6C1C4B98215A501C4BDB6C002B13D01A4BD86C194BDB6C19687A -:40DE0000174BDB6C9A68164BDB6CDB6800F038FA031E04D0124BDA6C104B9C215A50104B1B6D002B13D00E4B186D0D4B1B6D19680B4B1B6D9A680A4B1B6DDB6800F020FA96 -:40DE4000031E04D0064B1A6D044BA0215A50034B01221A720023180010BDC046B4040008084D0410BC04000800B585B0314B1B7A012B07D007235B421800FFF735FD0123F6 -:40DE80005B4253E003F080FA03001A0001235340DBB2002B07D001235B421800FFF724FD01235B4242E0FFF76BFE234B5B68234A1100180003F070FC031E07D001235B42B1 -:40DEC0001800FFF711FD01235B422FE003F0C0FC0200184B1A6103F09BFC194B180002F0CEFB03000393039B002B07D101235B421800FFF7F9FC01235B4217E0039B18007A -:40DF000002F092FD0C4B1B680122134005D002230293029B83F3148804E003230193019B83F31488034B02221A720023180005B000BDC046B4040008084D0410ADDA021013 -: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 -:40040000A04700E0C046BBE7C046002000F01CFBC04602B010BDC0460C4E0410B404000800B583B00190019B1800FFF7B1FE031E0BD00A4B5B7ADBB2002B02D1FFF776FE7A -: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 -:400FC000084D0410A52E5AE2CCCCCCCCB1140310F50B031000B583B0FFF788FA03000193019B180003B000BD00B583B00190019B00225A70019B00221A70019B9B781A0031 -:401000000223134017D0019B9B781A001023134009D0184B84229A58019B1B6B19001000FDF794F907E0134B5A6F019B1B6B19001000FDF7B4F8019B9B781A000123134029 -:4010400015D00C4B88229B58002B08D0094B88229B58019A11001800FDF778F907E0054B80229B58019A11001800FDF798F8C04603B000BDB404000800B583B0FFF736FA22 -:4010800003000193019B002B4ED0FFF729FA0300022B4BD1274B5B6A002B47D0019BDB6A1800FEF7B3F9019B9B69002B06D0019B9B69002200211800FFF71CFDEFF3098323 -:4010C0000093009A019B9A631B4B1800FFF7D7FA03001800FFF7A8FC0020FFF70DFA019BDB781A000123134003D0019B9B69002B04D0019B1800FFF777FF18E0019B042247 -:401100005A70019B0022DA600A4B5A6B019B9A60084B5B6B002B03D0064B5B6B019ADA60044B019A5A6302E0C04600E0C04603B000BDC046B4040008D004000800B587B0C7 -:4011400001900091019B1800FFF7B7F903000493049B002B06D0049B1B78012B02D1009B002B09DA04235A42049B11001800FCF7CDFB04235B423FE0049B5B78042B09D13B -:4011800003235A42049B11001800FCF7BFFB03235B4231E0009A049B11001800FFF7B6F903000593049B5B78332B24D1049B596A049B23229B5C1A00049B1800FFF7DBF9E5 -:4011C00003000393039B002B15D0049B23229B5C1A000223134006D1049B5B6ADB43039A1340059301E0039B05930399049B01221800FFF77FFC059B180007B000BD00B57B -:4012000085B00190FFF772F903000393039B002B08D108235B4219000020FCF777FB01235B4215E0019B002B09DA04235A42039B11001800FCF76AFB04235B4208E0019A5D -:40124000039B11001800FFF77BF903000293029B180005B000BD00B583B0FFF747F903000193019B002B01D1002301E0019B9B6A180003B000BD00B587B00390029101925E -:40128000FFF734F903000493049B002B08D108235B4219000020FCF739FB01235B422FE0039B002B09DA04235A42049B11001800FCF72CFB04235B4222E0029A0399049BE8 -:4012C0001800FFF758F903000593059B002B16D1019B002B10D0049B039A5A62029BD9B2049B23229954019B19003320FFF728FC02235B42059302E003235B420593059B51 -:40130000180007B000BD00B585B001900091019B1800FFF7D2F803000393039B002B06D0039B1B78012B02D1009B002B09DA04235A42039B11001800FCF7E8FA04235B426D -:401340001EE0039B5B78042B09D103235A42039B11001800FCF7DAFA03235B4210E0009A039B11001800FFF7D1F803000293039B1800FFF7A8F803001800FFF751F8029BF7 -:40138000180005B000BD000000B583B06B46073301221A701E4B9B6A002B15D11D4B9A6D1D4B00211800FFF745FC03001800FFF784F80200164B9A62154B9B6A002B03D10D -:4013C0006B46073300221A70124B5B6E002B19D00F4B9B6C002B15D10E4BDA6D0F4B00211800FFF727FC03001800FFF766F80200074B9A64064B9B6C002B03D16B4607335B -:4014000000221A706B4607331B78180003B000BDB4040008084D0410D5D702102D17031080B588B0039002910192FFF730F8031E03D1FFF737F8031E08D006235B42190086 -:401440000020FCF763FA0023079310E0039B0693029B0593019B0493069B1800059B1900049B1A00044B1F0000DF03000793079B180008B080BDC046350C031080B582B02B -:40148000FFF705F8031E03D1FFF70CF8031E04D0FFF7A0FD0300019304E0044B1F0000DF03000193019B180002B080BDD50F031080B5FCF78BFA054B1F0000DF01235B420D -:4014C00019000020FCF722FAFEE7C0467910031080B586B001900091FEF7D9FF031E03D1FEF7E0FF031E08D0009A019B11001800FFF709FF030005930BE0019B0493009B50 -:401500000393049B18000399044B1F0000DF03000593059B180006B080BDC0463D11031080B584B00190FEF7B2FF031E03D1FEF7B9FF031E09D006235B4219000020FCF79A -:40154000E5F906235B42039307E0019B02930298044B1F0000DF03000393039B180004B080BDC046FF11031080B582B0FEF78FFF031E03D1FEF796FF031E02D000230193B6 -:4015800004E0044B1F0000DF03000193019B180002B080BD5712031080B588B0039002910192FEF774FF031E03D1FEF77BFF031E09D006235B4219000020FCF7A7F906239D -:4015C0005B4207930DE0039B0693029B0593019B049306980599049A044B1F0000DF03000793079B180008B080BDC0467712031082B00190019B180002B0704784B001906E -:401600000091002303931C4B5B6C029309E0029B1B69009AD31A0093029B0393029BDB680293029B002B04D0029B1A69009B9A42EDD9019B009A1A61019B039A9A60019B58 -:40164000029ADA60029B002B09D0029B1A69019B1B69D21A029B1A61029B019A9A60039B002B03D0039B019ADA6002E0024B019A5A64C04604B07047B404000882B00190F2 -:40168000019BDB68002B04D0019BDB68019A92689A60019BDA68024B5A64C04602B07047B404000800B583B01F4B5B6C0193019B002B36D0019B1B695A1E019B1A6128E095 -:4016C000019B1800FFF7DAFF174BD86C019B1833190000230022FDF703FE03000093009B002B04D0019B19000320FCF779F8019BDB78012B07D1019B5A69019B1100180004 -:40170000FFF77CFF02E0019B01225A70064B5B6C0193019B002B05D0019B1B69002BCFD000E0C04603B000BDB404000800B587B00190164B586E154B1B6E1A000821FDF7C1 -:40174000A3FD03001800FFF753FF0200104BDA640F4BDB6C002B16D00D4B0E4A1A650C4BD86C01235B4203A90022FDF7F5FD03000593059B002BF2D103AB1A6803AB5B6810 -:4017800018009047EBE7C04607B000BD084D0410B4040008A516031000B585B001900091019B002B02D101235B4223E0134B1B68019918000AF03CF80300013B0393039B59 -:4017C0000F4A934202D901235B4213E00D4B0D4A126AFF2109060A431A620B4B06221A60094B039A5A60084B00229A60074B00221A700023180005B000BDC04658050008E1 -:40180000FFFFFF0000ED00E010E000E0F46F0008094B1B78002B06D0074B00221A70074B8022D2045A60064B054A126801210A431A60C0467047C046F46F000800ED00E03B -:4018400010E000E0014B1B68C046704710E000E001235B421800704700B585B00190019B1800FCF753F903000393039B002B05D00449054B6C221800FAF7B0FBC04605B06D -:4018800000BDC0462C4E0410E84E04107047EFF3108072B6704780F310887047FFF7F6FF0E4C0F4DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E709490A4AF6 -:4018C0000020521A02DD043A8850FCDC074808490860BFF34F8FCEF723FCFEE7B0630410C8630410A8140008508400080000000808ED00E0FEE7FEE700B5042071460842A7 -:4019000002D0EFF3098001E0EFF30880043002F0C3FFFEE782B000230193C04602B07047B0235B055B78DBB2002B04D0B0235B055B78DBB200E021231800704710B504F029 -:40194000CDF900F00BF800F097FA00F0B5FA00F0F5FFFFF7DFFFC04610BD000000B583B0364AB023DB00D3580193019B5B005B0801933249B023DB00019ACA502F4AE023E6 -:401980009B00D3580193019B3022934301932B49E0239B00019ACA502849B023DB0080225204CA50254A264B2649D1502349B123DB00A0229201CA50204A234BFF21D1506A -:4019C0001E491E4AC0235B00D3589B009B088022D2051A43C0235B00CA501849174AC0235B00D358802212061A43C0235B00CA501249124AC0235B00D358012293431A0076 -:401A0000C0235B00CA5000F08DFD00F021F800F0DFFE00F031FA00F04FFA00F08FFFFFF77FFF0300212B05D1084B0022DA60074B00225A60C04603B000BDC04600002640D4 -:401A400084050000010002008C050000E000234000B591B0BC4AE0239B00D3580F2213400D93B94A0D9BD0339B009B58072213400C930C9B042B32D80C9B9A00B34BD318BC -:401A80001B689F46B24B0F932CE0B24B0F9329E0B04B0F9326E0B04B1B680F9322E0AA4A0D9BC0339B009B581F2213400B930B9B112B07D0132B09D0102B0BD1FA23DB0177 -:401AC0000F930BE080231B020F9307E080231B020F9303E0FA23DB010F93C04602E09D4B0F93C0460D9B002B69D1974AB223DB00D35801221A402B236B44511E8A411A70B1 -:401B0000914AB123DB00D3581B0F03221A402A236B44033A51424A411A708B4AB123DB00D3581B0F0322134008D0874AB123DB00D3581B0F03221340012B01D1012200E0EF -:401B4000002229236B441A701A7801210A401A7029236B441B78002B04D02B236B441B78002B04D12A236B441B78002B24D0764AB023DB00D3589B039B0B0993724A774B74 -:401B8000D358DB04DB0C08936F4AB023DB00D3581B0E012213400133079308990F9809F047FE03001A00099B53430799180009F03FFE03000E9372E00F9B0E936FE00D9B97 -:401BC000012B6AD1604AC823DB00D35801221A401B236B44511E8A411A705B4AC023DB00D3581B0F03221A401A236B44033A51424A411A70544AC023DB00D3581B0F0322D7 -:401C0000134008D0504AC023DB00D3581B0F03221340012B01D1012200E0002219236B441A701A7801210A401A7019236B441B78002B04D01B236B441B78002B04D11A23FA -:401C40006B441B78002B25D03F4AC023DB00D3587F22134005933C4AC023DB00D3581B0A1F2213400493384AC023DB00D3581B0C1F22134003930F9B059A534304991800F5 -:401C800009F0D6FD03000399180009F0D1FD03000E9304E00F9B0E9301E00F9B0E932A4AE0239B00D3581B09032213400E9ADA4013000E932A4B0E9A1A602A4B1B691B0AD7 -:401CC000FF22134001330293264B1B691B0EFF2213400133019301990E9809F0A9FD03000E93214B0E9A1A6002990E9809F0A0FD03000E931D4B0E9A1A601C4B1A681C4BE7 -:401D00001A601B4B1B681B4A944663441A49180009F08EFD0300DAB2184B1A70144B1B68174A9A18FA239900100009F081FD03001A00144B1A60134B1B68DA03124B1A6022 -:401D4000C04611B000BDC046000026403050041000127A0000366E0164050008840500005C050008000021406005000858050008680500083F420F0040420F007005000805 -:401D8000E70300006C0500087405000882B0054A8023D358032213400193019B180002B07047C0460000214000B587B00190FFF76EFD03000593FFF7E9FF03000493049BD0 -:401DC000032B01D100F02CF81249B0239B00019ACA50104A8023D3580F4A13400393039B0E4A13430393039B03221343039309498022039B8B50C046064A8823D35810228B -:401E00001340F9D0059B1800FFF745FDC04607B000BDC04600002140FCFF00000000FA0500B583B0FFF733FD030001930F4A8023D3580F4A13400093009B0E4A13430093D4 -:401E4000009B01221343009308498022009B8B50C046064A8823D35810221340F9D0019B1800FFF718FDC04603B000BD00002140FCFF00000000FA0510B5044B1A00802179 -:401E8000042001F049FCC04610BDC0465871000810B5034B180001F041FBC04610BDC0465070000810B5034B180001F037FBC04610BDC046A870000800B583B002F091FC77 -:401EC000030001930B4B180001F090F90A4B180001F09AF9094B180001F096F9084B180001F092F9019B180002F07FFCC04603B000BDC046F86F000844500410785004100F -:401F0000AC50041010B5034B180001F007FBC04610BDC046F86F0008084B5B6C1B0AFF2213403A2B08D1054B044A526C04490A40E82189010A435A64C04670470000274085 -:401F4000FFC5FFDF054B054A526C05490A40E82189010A435A64C0467047C04600002740FF00FFFF82B00B4B01930B4AC0235B00D3580122134009D10749074A074BD358BD -:401F80005B005B08054A8B5000230193019B180002B0704703004A00000026400C05000000B585B00190124B0393124B114A126808210A431A6005E0012002F019FC019B68 -:401FC000013B019300F018F803001A0001235340DBB2002B02D0019B002BEDD1019B002B01D000230393039B180005B000BDC04602004A0000002740044B1B6904221340B0 -:402000005A1E9341DBB218007047C0460000274084B001900B4B0393019B042B0ED80A49094A019BE0339B009B58802212061A43019BE0339B005A5000230393039B1800CC -:4020400004B0704701004A000000264084B001900A006B4603331A70114B0393019B042B19D86B4603331B780F2B14D80D490D4A019BE0339B009B580F2293431A006B46FA -:4020800003331B780F2003401A43019BE0339B005A5000230393039B180004B07047C04601004A000000264084B001900A006B4603331A70114B0393019B042B1AD86B4663 -:4020C00003331B78032B15D80D490D4A019BE0339B009B58302293431A006B4603331B781B01302003401A43019BE0339B005A5000230393039B180004B0704701004A0031 -:402100000000264082B002006B4607331A700949084A9023D358084A1A406B4607331B781B021B041B0C134390228B50C04602B07047C04600002140FF00FFFF82B0020097 -:402140006B4607331A70074B064A12691202110A6A460732127812060A431A61C04602B07047C0460000214082B002006B4607331A70084B074A1269074911406A46073223 -:40218000127812021204120C0A431A61C04602B07047C04600002140FF00FFFF00B583B002006B4607331A706B4607331B78032B05D90D4A0D4B1100180002F031FB0C497E -:4021C0000B4AA023DB00D358032293431A006B4607331B78032003401A43A023DB00CA50C04603B000BDC04613090000E05004100000264000B583B002006B4606331A8003 -:402200006B4606331B880C4A934205D90B4A0C4B1100180002F004FB0A490A4A0A4BD3580A4A1A406B4606331B881343064A8B50C04603B000BDC046010300005B0900007B -:40224000E05004100000264004050000FEFCFFFF82B002006B4607331A700948084A094BD358094A1A406B4607331B781904FF231B040B401343034A8350C04602B070472F -:402280000000264004050000FFFF00FF0549054A054BD358802212061343034A8B50C0467047C046000026400405000000B583B002006B4607331A706B4607331B780F2B19 -:4022C00005D90D4A0D4B1100180002F0A9FA0C480B4AA023DB00D3580A4A1A406B4607331B781902F0231B010B401A43A023DB00C250C04603B000BD080A0000E050041087 -:4023000000002640FFF0FFFF00B583B002006B4607331A706B4607331B78072B05D90D4A0D4B1100180002F07BFA0C480B4AA023DB00D3580A4A1A406B4607331B78190364 -:40234000E023DB010B401A43A023DB00C250C04603B000BD2E0A0000E050041000002640FF8FFFFF0649064AA023DB00D358802212021A43A023DB00CA50C0467047C0464C -:402380000000264000B583B002006B4607331A706B4607331B78012B05D90B4A0B4B1100180002F03DFA0A4B094A1268094911406A46073212781002C022920002400A4386 -:4023C0001A60C04603B000BD910A0000E050041000002740FFFCFFFF044B044A1268802109060A431A60C0467047C046000E1F4182B002006B4607331A706B4607336A46AB -:40240000073212781A70FEE710B584B0384B1800FFF7C6FD03000393039B002B02D00520FFF7E6FF0120FFF7B9FE0020FFF76AFE0120FFF783FE0020FFF796FE0121002019 -:40244000FFF704FE00210020FFF72EFE0020FFF7DFFD0021022001F0F9FD0021032001F0F5FD0021042001F0F1FD0021002001F0EDFD0021012001F0E9FD6B461D4A13CA70 -:4024800013C36B461900012001F026FE03000393039B002B02D00320FFF7AAFF164B1900012001F0BBFF03000393039B002B02D00320FFF79DFF0120FFF79CFE0020FFF75A -:4024C000C7FEFFF7E3FE0020FFF7F0FE0220FFF71BFFFFF747FF0020FFF754FFFFF742FD6421002002F004FAC04604B010BDC04620A10700505104101027000010B584B061 -:402500006B46074A13CA13C312681A606B46180001F01EFDFFF760FFC04604B010BDC0465C51041000B585B09621002002F0E0F902F09CF9031E01D102F086F9012002F0F0 -:40254000D5FAFFF7FFFCFFF7E7FC002003F02EFA012003F02BFA2A480023009300230022002100F00DFC26480023009300230022012100F005FCFFF747FF01230393039AB8 -:402580001F480023009313000622032100F0F8FB039A1C480023009313000622012100F0EFFB039A18480023009313000622012100F0E6FB12480023009301230A22042168 -:4025C00000F0DEFB114B180003F0F0F9104B180003F0ECF90F481D23009300230A22062100F0CEFB0B481D23009300230B22072100F0C6FBFFF782FFC04605B000BDC046DA -:4026000000003240800032408005324006060000070600000003324010B5034B1800FFF7C3FBC04610BDC04600000810C046704782B002006B4606331A806B460633002260 -:402640009B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF331A00064B1100180080 -:4026800002F0CEF8019B5B01034A94466344180003B000BD6C5104100000234000B583B00190019B0F2B06D9DB235A00064B1100180002F0B5F8019B5B01044A944663447A -:4026C000180003B000BDC0466C5104100010234000B585B0039002910192019B1B0C1B0406D0EA235A000E4B1100180002F098F8029B1B0C1B0407D0D623FF331A00084BF0 -:402700001100180002F08CF8019B1A04029B1B041B0C1A43039B9A60C04605B000BDC0466C51041000B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180002F0F3 -:402740006FF8029B1B0C1B0405D00B4A094B1100180002F065F8019B1A04029B1B041B0C1A43039B1A60039B1B68C04605B000BD6A0200006C5104106B02000000B583B0DC -:4027800001900091009B1B0C1B0406D0A3239A00064B1100180002F043F8009B1B041A0C019B9A60C04603B000BDC0466C51041010B5D1F7EBFE054B186880235B001A0018 -:4027C0000021FFF7AFFFC04610BDC046EC71000800B583B06B4603221A806B4622229A706B4601225A601A4A6B461100180001F0CFFE0920FFF752FF0200164B1A60154B48 -:402800001B68002B04D1144B4C21180002F008F8104B186880235B001A000021FFF758FF6B4600229B5E1800FFF702FF0820FFF71BFF0200094B1A60084B1B68002B04D125 -:40284000054B5321180001F0EBFFC04603B000BDB1270310EC710008DC510410E871000810B5094B1B68002B04D1084B5C21180001F0D6FF044B1A6880235B0019001000F7 -:40288000FFF77CFFC04610BDE8710008DC510410024B1B691B0EDBB21800704700002140024B1B691B0ADBB2180070470000214000B583B00190019B0F2B07D99C23FF33A8 -:4028C0001A00064B1100180001F0AAFF019B5B01034A94466344180003B000BD4C5204100000234082B00190019BDB68180002B0704782B00190019B1B69DB0FDBB21800B2 -:4029000002B0704700B585B0039002910192019B002B06D1D7239A00074B1100180001F07FFF019A0299039B180000F0FDFA0300180005B000BDC0464C52041010B5044B43 -:4029400002221900002000F0B7FDC04610BDC046C50F000810B584B001901E4B0393019B180000F0DFF8031E30D0FFF771F81A4B1A4A1A60184B019A5A60174B00229A60A4 -:40298000154B0022DA60FFF783FF03005C1CFFF787FF030001336343114A5A431400114B1A68FA239900100008F042FF03001900200008F03DFF03000B4A9A1880235B00AE -:4029C000110018000AF0D0FF03000393039B180004B010BD06005200F07100080001001C60F590005C0500089808000010B584B001900091204B0393019B180000F092F8FF -:402A0000031E35D0009B002B32D0FFF721F81B4B1B4A1A60194B832252005A60174B019A9A60009A154BDA60FFF732FF03005C1CFFF736FF030001336343124A5A4314005D -:402A4000114B1A68FA239900100008F0F1FE03001900200008F0ECFE0300E12292009A1880235B00110018000AF07EFF03000393039B180004B010BD06005200F071000834 -:402A800000010006808D5B005C05000884B00190019B1E4A93420BD9019B1D4A934207D8019BF0221206944663445B0A039328E0019B184A93420ED9019B174A93420AD84D -:402AC000019BEC221206944663445B0A802252021343039315E0019B104A93420ED9019B0F4A93420AD8019BEA221206944663445B0A802292021343039302E001235B428E -:402B00000393039B180004B07047C046FFFFFF0FFFFF0F10FFFFFF13FF7F0014FFFFFF15FF7F001600B583B00190019B1800FFF7ADFF0300013305D0019BDB05DB0D01D156 -:402B4000012300E000231A1C01231340DBB2180003B000BD84B00190019B2D4A934240D02B4A93420ED8402B41D004D8002B21D0102B39D044E0802B3CD080225200934223 -:402B80003BD03DE0234A93421AD0224A934207D8A0221206934210D01F4A93421DD02FE01E4A934213D01E4A934213D01D4A93420AD025E00023039325E00023039322E004 -:402BC000A423DB0303931EE0174B03931BE0174B039318E0164B039315E0A023DB03039311E00B4B03930EE0124B03930BE0124B039308E0114B039305E0054B039302E073 -:402C00000F4B0393C046039B180004B07047C04606005200010000F0090000A0040000F0050000F0030000F0010052000200520003005200010050000200500005005200B3 -:402C4000FF00520000B583B0144B01930020FFF72FFE03001800FFF74CFE03001A0001235340DBB2002B15D00D4B1B681800FFF771FF030001930B4A0B4B0121D150C04635 -:402C8000084A094BD358002BFAD1064A074BD358002BF5D1019B180003B000BD02005000F0710008000025400C0400008C04000000B589B0039002916B4607331A70029B85 -:402CC000072B05D92A4A2B4B1100180001F0A8FD6B4607331B781F22934306D091239A00244B1100180001F09BFD039B224A94466344DB090793079B204A944663441B018F -:402D00000693029B032B16D8069B1B68029AD2001F2191400A00D243134005936B4607331B781F221A40029BDB009A40059B1A43069B1A6018E0029B043B0293069B5B6844 -:402D4000029AD2001F2191400A00D243134005936B4607331B781F221A40029BDB009A40059B1A43069B5A60C04609B000BDC04643020000BC5204100000CEBF001003047A -:402D800000B587B00390029101920093029B072B04D9284BCF21180001F042FD019B0F22934304D0234BD021180001F039FD009B012B04D91F4BD121180001F031FD08AB85 -:402DC0001B781F22934304D01A4BD221180001F027FD039B1B680121029A91400A00D24313400593009B01221A40029B9A40059B1A43039B1A60039B9B6A029A92000F2171 -:402E000091400A00D24313400593019B0F221A40029B9B009A40059B1A43039B9A6208AB1A780299039B1800FFF742FFC04607B000BDC0462853041000B583B00190009101 -:402E4000009B1B0C1B0406D0A3239A00064B1100180001F0E5FC009B1B041A0C019B9A60C04603B000BDC0469453041000B583B001900091009B1B0C1B0405D0064A074BA0 -:402E80001100180001F0CCFC009B1B041A0C019B5A60C04603B000BDA50200009453041082B001900091019B009ADA60C04602B0704782B00190019BDB68180002B070478C -:402EC00082B00190019B1B69DB0FDBB2180002B07047000082B00190019B1B68002B01DA002300E0014B180002B0704701008A0000B585B001900091019B1800FFF7E0FF1F -:402F0000031E08D0009A019B11001800FFF7AEFF0023039301E0034B0393039B180005B000BDC04601008A0000B587B0039002910192039B1800FFF7CDFF031E0ED1019AA7 -:402F4000039B11001800FFF7ABFF029A039B11001800FFF771FF0023059301E0024B0593059B180007B000BD01008A0000B585B001900091009B002B04D10D4B9821180019 -:402F800001F04EFC019B1800FFF79AFF031E09D0019B1800FFF78DFF0200009B1A600023039301E0034B0393039B180005B000BD0454041001008A0082B002006B46063391 -:402FC0001A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B07047C04600E100E000B583B00190019B0F2B07D99C23FF33E5 -:403000001A00064B1100180001F00AFC019B5B01034A94466344180003B000BD745404100000234000B583B00190019B0F2B06D9DB235A00064B1100180001F0F1FB019BFF -:403040005B01044A94466344180003B000BDC046745404100010234000B585B0039002910192019B1B0C1B0406D0EA235A000E4B1100180001F0D4FB029B1B0C1B0407D08A -:40308000D623FF331A00084B1100180001F0C8FB019B1A04029B1B041B0C1A43039B9A60C04605B000BDC0467454041082B00190019BDB68180002B0704782B00190019B2D -:4030C0001B68180002B0704700B585B0039002910192019B1B0C1B0405D00E4A0E4B1100180001F09DFB029B1B0C1B0405D00B4A094B1100180001F093FB019B1A04029BAF -:403100001B041B0C1A43039B1A60039B1B68C04605B000BD6A020000745404106B02000000B583B001900091009B1B0C1B0406D0A3239A00064B1100180001F071FB009BF3 -:403140001B041A0C019B9A60C04603B000BDC0467454041082B001900091019B009ADA60C04602B0704782B00190019B1B69DB0FDBB2180002B0704782B00190019B1B0C88 -:40318000180002B0704782B00190019B1B041B0C180002B07047000000B583B001900091009B002B05D1084A084B1100180001F037FB009A019B11001800FFF7D7FE0300A4 -:4031C000180003B000BDC0467E0300007454041082B00190019B1B68002B01DA002300E0014B180002B0704701008A0082B00190044B1B68002B02D1024B019A1A60C046A6 -:4032000002B070471072000810B590B00390039B002B04D13B4B4F21180001F001FB039B5B68032B04D9374B5121180001F0F8FA039BDB6A002B04D1324B5521180001F030 -:40324000EFFA039BDB68072B04D92E4B5621180001F0E6FA039B1B6A072B04D9294B5721180001F0DDFA039B1B6B002B04D1254B5821180001F0D4FA09AB039A13CA13C3B6 -:4032800003CA03C304AA039B143313CB13C203CB03C209AB9B681AB20EAB1A8009AB1B68DBB21933DAB20EAB9A7009AB5A680EAB5A6009ABD868039BD96A039B9A6A09AB59 -:4032C0001C690EAB0093230000F01EF804ABD86804AB1A690023009313000022002100F013F8039B1A6B0EAB1100180001F050F90EAB00229B5E1800FFF75EFEC04610B069 -:4033000010BDC046E454041000B587B00390029101920093039B072B04D9244BB321180001F07EFA224B1A68039B2C214B43D3180593009BFF221A40059B1A60009B1B0AEA -:40334000FF221A40059B5A60009B1A0C059B9A60059B1B681800FFF74BFE0200059B1A61059B5B681800FFF75DFE0200059B5A61059B5869059B9968059B9B681A00FFF7A8 -:403380006BFE059B019ADA61059B029A1A62059B00229A61089B002B04D0089B00229A5E059B9A81C04607B000BDC046E45404101072000800B58BB003900291019200930D -:4033C000019B002B04D1384BFB21180001F028FA039B072B04D9344BFC21180001F020FA029B072B04D9304BFD21180001F018FA2E4B1A68039B2C214B43D31808932B4B2B -:403400001A68029B2C214B43D3180793079B5B6801229A4013000693069B1B040693089B5B6801229A4013000593089B1B69002B33D0079B9B69002B2CD1089B1B69180036 -:40344000FFF7C6FE031E22D1019B1B681B041A0C019B1A60019B1A68069B1A43019B1A60089B1B69019A11001800FFF773FE079B01229A61079B009A5A62089B1B69059A02 -:4034800011001800FFF74CFE0023099307E0084B099304E0064B099301E0064B0993099B18000BB000BDC046E45404101072000807028A0004028A0000B587B0039002912A -:4034C0000192039B072B06D9AF235A00104B1100180001F0A5F90F4B1A68039B2C214B43D3180493049BDA69019B9A4209D9049B1A6A019B9B00D318029A1A600023059322 -:4035000001E0054B0593059B180007B000BDC046E4540410107200080A028A0010B588B001900023039300230793019B002B07D1B223FF331A00514B1100180001F070F941 -:40354000019B1B69002B06D1D9235A004B4B1100180001F065F9019B5B69002B07D1B423FF331A00454B1100180001F059F9019B1B6A002B06D1DA235A00404B1100180015 -:4035800001F04EF9019B5B691800FFF78FFD03000693069B1800FFF7EFFD031E3ED0019B5C69069B1800FFF7E7FD03001A0000212000FFF789FD019B1B691800FFF7D3FDA7 -:4035C000031E2BD0019B1B6903AA11001800FFF7E3FD031E1BD1039B1B681B0C0793039B1B68FF2213400593019BDA69059B9A420DD9019B1A6A059B9B00D3181B68049326 -:40360000049B002B03D0039A049B10009847019B1B69079A11001800FFF76AFC069B1800FFF7B1FD031E20D0019B5C69069B1800FFF7A9FD0300002219002000FFF744FDC3 -:40364000019B5B6A002B06D0019B5B6A9847019B00225A6206E0019B9B6A002B02D0019B9B6A9847019B00229A61019B5B691800FFF723FDC04608B010BDC046E454041006 -:4036800000B583B00190019B0F2B07D99C23FF331A00064B1100180001F0C2F8019B5B01034A94466344180003B000BD545504100000234082B00190019BDB68180002B0D1 -:4036C0007047000000B585B0039002910192019B002B06D1D7239A00074B1100180001F09FF8019A0299039B1800FFF71DFC0300180005B000BDC0465455041082B001902D -:40370000019B1B68002B01DA002300E0014B180002B0704701008A0000B587B0039002910192304B0593039B0F2B02D92D4B059353E0019B002B0CD1029B002B09D1039B77 -:403740001800FFF79DFF0200274B1A600023059343E0019B002B3ED0029B002B3BD0029B1F22134034D1039B1800FFF789FF02001D4B1A601D4B029A1A601C4B019A5A60A3 -:403780001A4B5868029BDB081A00002104F0EEF9154B1B6800211800FFF7AAFB124B1B68124A00211800FFF78DFF031E0DD10E4B1B6800211800FFF79BFB031E02D10023E9 -:4037C00005930AE00A4B059307E0094B059304E0044B059301E0034B0593059B180007B000BDC04603018A00147200081872000801018A0000B589B001900A006B46033319 -:403800001A7000230793314B0693314B1B681800FFF750FF03000593059B1A68019B9A424DD9019B5B090493049B5B01019AD31A01229A40130003936B4603331B78012218 -:403840005340DBB2002B03D000F0CBFF030007931F4B1B681800FFF751FF031E22D1059B5A68049B9B00D3181B68039A134011D0059B5A68049B9B00D318059A5168049A1C -:4038800092008A1812680399C9430A401A600023069301E00F4B06930D4B1B6800211800FFF726FB6B4603331B7801225340DBB2002B06D0079B180000F097FF01E0064B03 -:4038C0000693069B180009B000BDC04603018800147200080201880004018A0000B587B00190164B1B681800FFF7E4FE03000493049B1A68019B9A4219D9019B5B090393BA -:40390000039B5B01019AD31A01229A4013000293049B5A68039B9B00D3181B68029A134002D0074B059304E0064B059301E0064B0593059B180007B000BDC0461472000856 -:40394000010188000001880004018A0082B001900091019A90239B000099D150C04602B0704782B00190019A82239B00D358DB05DB0D180002B0704782B00190019B1A684C -:4039800080231B01134001D0802300E04023180002B0704710B584B00190009100230393019B1800FFF7E8FF0400019B1800FFF7D8FF03009C4207D0009A019B11001800BC -:4039C000FFF7C4FF01230393039B180004B010BD82B00190019B1A6880231B01134001D0802300E04023180002B0704710B586B0039002910192039B002B02D0029B002BDB -:403A000001D1BA4B78E2039BB94A934201D1B74B72E2029B1B78002B0CD0029B1B78012B08D0029B1B78022B04D0B24B4021180000F0F6FE029B5B7B022B1CD0029B5B7BC2 -:403A4000032B18D0029B5B7B042B14D0029B5B7B052B10D0029B5B7B062B0CD0029B5B7B072B08D0029B5B7B082B04D0A14B4121180000F0D5FE029B9B7B002B0CD0029B30 -:403A80009B7B022B08D0029B9B7B032B04D0994B4221180000F0C4FE029B21229B5C002B09D0029B21229B5C012B04D0914B4321180000F0B5FE029B28229B5C002B09D096 -:403AC000029B28229B5C012B04D08A4B4421180000F0A6FE029B1B78002B03D0029B1B78012B0FD1029B5B68072B03D9029B5B68102B01D9012300E000231A1C01231340E1 -:403B0000DBB226E0029B9B7F002B1DD0029B5B68012B19D0029B5B68022B15D0029B5B68032B11D0029B5B68042B0DD0029B5B68052B09D0029B5B68062B05D0029B5B6832 -:403B4000072B01D0012300E000231A1C01231340DBB2002B04D0674B4621180000F060FE029B9B68042B03D9029B9B68092B04D9604B4721180000F053FE029B5B69FF2B10 -:403B800004D95C4B4821180000F04AFE029B9B69FF2B04D9574B4921180000F041FE029B9B7C002B10D0029B1B78002B07D1029B9B68092B03D1029B9B7B002B04D04D4BE9 -:403BC0004B21180000F02CFE029B5B6B4A4A134004D0484B4D21180000F022FE029BDB6B464A134004D0434B4E21180000F018FE029B1B78022B09D1029B9B7F0122534087 -:403C0000DBB2002B02D00023059303E0029B5B68013B0593029B1B7F002B02D080235A0200E00022029B9B68082B02D880231B0100E000231A43059B0F210B401343802214 -:403C400092041A43039B1A60029B1C6B039B1800FFF7BEFE03009C4204D3264B6321180000F0DEFD029B9C6B039B1800FFF7B0FE03009C4204D31F4B6421180000F0D0FDA3 -:403C8000029B5C6A039B1800FFF7A2FE03009C4204D3184B6521180000F0C2FD029B1B781A06C0239B041A40039B1A64029B5B7F002B01D0402200E00022029B9B7C002BEF -:403CC00002D08023DB0000E000231A43029B1B7C002B02D080235B0000E000231A43029B5B7C002B0CD080239B000AE00160AA0000006940A856041092F4FFFF8CF8FFFF16 -:403D000000231A43029BDB6A013B1904F0231B030B401A43029B5B7B013B07210B401A43029B9B7B1B0130210B401A43039B9A64029B1B7B002B02D080235A0000E00022DD -:403D4000029BDB7B002B03D1029B1B78022B01D1012300E00023002B02D080239B0000E000231A43029B9B68013B0F210B401A431100039AC0239B00D150029B5B69FF22DD -:403D80001A40029B9B691904FF231B040B401A431100039AC4239B00D150029BDA6A0399C0239B00CB580F210B4003339A4203D3029BDB6A102B04D9514B7B21180000F0F6 -:403DC0002FFD029BDB7F002B05D0029B1B78012B01D1012300E00023002B02D080235B0000E00023029A527B013A07210A401A43029B9B7B1B0130210B401A43039B5A64B6 -:403E0000029B1B7B002B02D080235A0000E00022029B9B68013B0F210B401A43029B1B78012B02D180235B0200E000231A431100039A80239B00D150029B1B6BFF2213406C -:403E40001900039AC1239B00D150029B20229B5C002B02D080239A0400E00022029B21215B5C012B02D180235B0400E000231A43029B28215B5C012B02D180235B0200E063 -:403E800000231A43029B5B6AFF210B401A43039B1A65029B9B6BFF2213401900039A81239B00D150029B5B6B164A1A40039B16495A50029BDB6B154A1A40039B14495A5009 -:403EC000019B002B17D0019B00225A60019B00221A60019B00229A60019B0022DA60019B00221A62019B0022DA62019B00221A63019B084A5A630023180006B010BDC046D6 -:403F0000A85604106D0B0000C80F000073070000880F0000EFCDAB0082B001900091019B1B685B005A08019B1A60009B002B0BD0009B00225A60009B00221A60009B002256 -:403F40001A62009B0022DA62C04602B07047000000B585B00190019B002B04D1384B4121180000F05DFC00230293019B002B02D1344B039360E0019B1B78002B08D0019B8B -:403F80001B78012B04D02E4B4C21180000F048FC019BDB68002B16D0019BDA68A023DB059A4210D0019BDA68C023DB059A420AD0019BDA68E023DB059A4204D0204B4D216E -:403FC000180000F02DFC019B9B68002B10D0019B9A6880235B039A420AD0019B9A6880239B039A4204D0164B4E21180000F018FC019B5B68002B0AD0019B5A6880235B0254 -:404000009A4204D00E4B4F21180000F009FC019B1B7804221343DBB21A00019B5B681A43019B9B681A43019BDB6813430293064B029A1A6000230393039B180005B000BDDE -:404040001857041001005E00000E1F4184B001900A006B4602331A801D4B0393019B042B32D86B4602331B88042B0BD96B4602331B88FF2B28D96B4602331A881423FF338D -:404080009A4221D86B4602331B88FF2B10D911496B4602331B881F221A40019BC0339B005A500C4A019BD0339B000421995009E008496B4602331B8807221A40019BD033BA -:4040C0009B005A5000230393039B180004B0704701004A000000264070B590B00590049100230F93059B002B02D0059B012B02D9784B0F932AE0784A059B013B8133FF3365 -:404100009B009B58002B02DA744B0F931EE0049B1B68734A934204D9049B1B68714A934202D96C4B0F9311E0049B5A68049B1B7A002B01D06C4B00E06C4B9A4204D3049BF2 -:404140005B686B4A934201D9624B0F930F9B002B00D0BAE007AB00221A7007AB00225A7007AB00229A70049B5B7A022B00D19CE000230B9301230D938EE0049B1B7A002B70 -:4041800001D0132300E016230E9372E0049B1B681D0000231E000E9B009300230193009A019B2800310007F035FD03000C00180021000D9B029300230393029A039B07F052 -:4041C00009FD03000C000A93049B1B7A002B01D0484B00E0484B0A9A934247D8049B1B7A002B01D0444B00E0444B0A9A93423DD302230C9332E0049B1B680E9A53430D99AC -:40420000180007F015FB03000C99180007F010FB03000993099A049B5B68D31A180002F051FD03001C000B9A049B5B68D31A180002F048FD03009C420DD2099B0B930E9BA7 -:40424000DAB207AB1A700D9BDAB207AB5A700C9BDAB207AB9A700C9B01330C930C9B102B04D8049B5A680B9B9A42C4D10E9B01330E93049B1B7A002B01D0382300E07023AB -:404280000E9A934205D3049B5A680B9B9A4200D07CE70D9B01330D930D9B122B05D8049B5A680B9B9A4200D067E7049B1A7A07ABDA70049B5A7A07AB1A7107AA059B110013 -:4042C000180000F01DF803000F930F9B180010B070BDC04601004A000000264003004A00FF083D000090D003E81FA20020BCBE0080D1F00880FE210A00C2EB0B0084D71743 -:4043000084B00190009100230393019B002B02D0019B012B02D93D4B039334E03C4A019B013B8133FF339B009B58002B02DA394B039328E0009B9B78012B22D9009B9B7882 -:40434000102B1ED8009B5B78002B1AD0009B5B78122B16D8009B1B781A00009BDB78002B01D0132300E016239A420AD3009BDB78002B01D0382300E07023009A1278934205 -:4043800001D2224B0393039B002B3BD1019B013B0193009B1B79022B1FD01D48009B1B781A007F231A40009B5B781902F8235B010B401A43009B9B781904F8235B030B40BB -:4043C0001A43009BDB78D90680231B050B401A43019B8133FF339B001A500D480C4A019B8133FF339B009B580B4A1A40009B1B791907C0239B050B401A43019B8133FF333B -:404400009B001A50039B180004B0704701004A000000264003004A00FFFFFFCF00B585B0019000911B4B0393019B002B2ED0019B012B2BD8019B013B01931749164A019B2C -:404440008133FF339B009B58802212061A43019B8133FF339B005A5005E0012000F0C8F9009B013B00930C4A019B9133FF339B009B580122134002D1009B002BEDD1009BEB -:40448000002B01D1054B00E000230393039B180005B000BD01004A000000264002004A0030B583B0020000916B4606331A806B46063300229B5E002B2CDB334C6B46063322 -:4044C00000229B5E9B0830496A4606320020125E9208C03292005258694606310988080003210140C900FF2088400100C9431140009A9201FF2010406A4606321288150020 -:4045000003222A40D200904002000A43C0339B001A5135E01D4C6B4606331B881A000F231340083B9908194A6B4606331B8818000F230340083B9B0806339B00D31804331B -:404540001B686A4606321288100003220240D200FF2090400200D2431A40009B9B01FF2018406B4606331B881D0003232B40DB00984003001A438B1D9B00E31804331A60A2 -:40458000C04603B030BDC04600E100E000ED00E000B585B00190009100230393019B002B35D0019B5B68032B04D91C4B3421180000F036F9019B00229B5E002B08DB019B72 -:4045C00000229A5E019B9B781900100000F02EF8019B00229A5E019B5B6819001000FFF75FFF0F4B9A680F4B9A4212D1009B002B04D10A4B4321180000F012F9019B002287 -:404600009B5E009A1100180000F0A2F801E0064B0393039B180005B000BDC0469057041000ED00E0000000080100560088B002006B4606331A806B4605330A1C1A706B460F -:40464000063300229B5E9B0807936B46063300229A5E079B9B00D31ADB000693FF22069B9A4013000593059BDB4304936B4605331A78069B9A401300059A13400393079B38 -:40468000072B5DD8079B9A002F4BD3181B689F462E4B1B6A049A134002932C4B0299039A0A431A624DE0294B5B6A049A13400293264B0299039A0A435A6242E0234B9B6A5B -:4046C000049A13400293214B0299039A0A439A6237E01E4BDB6A049A134002931B4B0299039A0A43DA622CE0184B1B6B049A13400293164B0299039A0A431A6321E0134B98 -:404700005B6B049A13400293104B0299039A0A435A6316E00D4B9B6B049A134002930B4B0299039A0A439A630BE0084BDB6B049A13400293054B0299039A0A43DA6300E0E2 -:40474000C046C04608B07047005804100000214000B585B0020000916B4606331A80184B9A68184B9A421CD1009B002B04D1164BFA21180000F054F86B46063300229B5EEF -:4047800010331A000F4B9200D35803936B46063300229B5E10331A000A4B92000099D15009E06B46063300229B5E10331A00074B9200D3580393039B180005B000BDC046CE -:4047C00000ED00E00000000890570410000000100230800803D001300238FCD1C046C0467047EFF3108072B6704780F31088704700B583B002006B4606331A806B460633E6 -:404800001B88044A127853431800FFF7E1FFC04603B000BD7005000882B0019001BEFEE700B583B0019000910199054B1822180003F03AFD034B009A1A600020FFF7ECFF4C -:404840006814000880140008064B802212069A64044B9B6C002B01DB002300E0024B18007047C046000027400300460082B0094A80231B01D3580193064B5B68FF22134052 -:4048800004D0019B8022D20213430193019B180002B070470000264000B583B00190019B1A68114B1A60019B5A680F4B5A60019B9A680D4B9A60019BDA680B4BDA60019BCC -:4048C0001A69094B1A61019B5A69074B5A61019B9A69054B9A61019BDA69034BDA6100F005F8C04603B000BD84140008FEE7000084B0020000916B4607331A706B46073399 -:404900001B78002B01D0192300E064230293009B029A9A429B415B42DBB203933349334AE8235B00D358032293431A00039B032003401A43E8235B00CA502C492B4AE8238C -:404940005B00D3582A4A1A40E8235B00CA502749264A80235B00D358032293431A00039B032003401A4380235B00CA501F491F4A80235B00D3581E4A1A4080235B00CA50F8 -:404980006B4607331B78002B0CD0009B102B06D9009B212B01D8012302E0022300E00023039315E0009B1D2B10D9009B3A2B0BD9009B572B06D9009B782B01D8032306E075 -:4049C000042304E0022302E0012300E000230393084B084A12680F218A431100039A0F2002400A431A60C04604B0704700002140FFFCFFFF0000254082B00A4A0A4BD358B0 -:404A00001F2213400193B0235A05E823DB00D35CDBB21A00019BD31A5A1E9341DBB2180002B07047000026401CFF000000B585B002006B4607331A70002303936B460733F7 -:404A40001B78002B0CD06B4607331B78012B07D02E23FF331A00214B11001800FFF7E0FE1F4B1B68002B05D00121002000F096F903000393039B002B26D1FFF7B2FE030065 -:404A80000293174B1B68002B03D00421002000F085F9144B134A126904218A431A616B4607331B78012B01D030BF00E020BF029B1800FFF79AFE0A4B1B68002B0AD00821B5 -:404AC000002000F06BF905E00221002000F066F9054B0393039B180005B000BD205804102872000800ED00E0FF00420000B585B002006B4607331A706B4607331B78002B77 -:404B00000AD06B4607331B78012B05D0324A334B11001800FFF784FEFFF763FE03000293FFF76AFF03001A006B4607331B7893424AD06B4607331B78002B17D100F00EFA20 -:404B400000F024FA2649264A264BD3581F2293430B221343234A8B5000F050FAB0235A05E823DB00D35CDBB2039314E01C491C4A1C4BD3581F2293430B221343194A8B50FD -:404B80000920FFF735FE00F04DFAB0235B05164A9B5CDBB203931249114A124BD3581F2293431A00039B1F20034013430D4A8B506B4607331B78012B06D10920FFF718FEF2 -:404BC00000F000FA00F0D6F9029B1800FFF70DFEC04605B000BDC046EC06000020580410000026401CFF00004107000000B587B0019017236B4400221A70FFF7F2FD030097 -:404C00000293019B002B05D0304B1B681F2B01D8012200E0002217236B441A701A7801210A401A7017236B441B78002B43D0019BDB68002B39D0019B1B68002B35D0244B77 -:404C40001B680493002303930DE0049A019B9A4204D117236B4400221A7007E0049B0393049B5B690493049B002BEED117236B441B78002B1ED0164B1B68002B03D1144B7E -:404C8000019A1A6002E0039B019A5A61019B039A1A61019B00225A610E4B019A1A600B4B1B685A1C094B1A6004E017236B4400221A7000E0C046029B1800FFF796FD17237A -:404CC0006B441B78180007B000BDC04628720008207200082472000800B587B0019017236B4400221A70FFF77CFD03000393284B1B68002B41D0274B1B6804930BE0049AA5 -:404D0000019B9A4204D117236B4401221A7005E0049B5B690493049B002BF0D117236B441B78002B29D0019B5B69002B04D0019B5B69019A12691A61019B1B69002B04D017 -:404D4000019B1B69019A52695A61124B1A68019B9A4204D10F4B1B685A690E4B1A600E4B1A68019B9A4203D1019B1A690A4B1A60074B1B685A1E064B1A60039B1800FFF78A -:404D800034FD17236B441B78180007B000BDC04628720008207200082472000800B589B002006B4607331A706B4606330A1C1A70002307936B4607331B78002B1AD06B46DA -:404DC00007331B78012B15D06B4607331B78022B10D06B4607331B78032B0BD06B4607331B78042B06D082231A01564B11001800FFF716FD6B4606331B78012B14D06B466F -:404E000006331B78022B0FD06B4606331B78042B0AD06B4606331B78082B05D04A4A494B11001800FFF7FCFC6B4606331B78042B04D06B4606331B78012B39D1434B1B680C -:404E400006932DE0069B1B796A46073212789A4223D1069B9B68002B06D06B4606331A78069B9B68134018D1069BDB685A6803AB5A60069BDB689A6803AB9A6003AB6A4619 -:404E8000063212781A70069B1B6803AA10009847030007932E4B069A1A60069B5B690693069B002B49D0079B2A4A9342CAD144E0294B1B6806936B4606331B78022B34D1EA -:404EC000234B1B680693069B002B2ED0069B1B6906932AE0069B1B796A46073212789A4220D1069B9B68002B06D06B4606331A78069B9B68134015D1069BDB685A6803ABCF -:404F00005A60069BDB689A6803AB9A6003AB6A46063212781A70069B1B6803AA1000984703000793069B1B690693069B002B05D0079B084A9342CDD100E0C046079B1800BC -:404F400009B000BD2058041021080000207200082C720008FF00420024720008044B044A9269802149040A439A61C0467047C04600F02540034B034A926903490A409A61DA -:404F8000C046704700F02540FFFFFFFE0B490B4A0B4BD3580F22934302221343084A8B500649064AF0231B02D3580F22934302221A43F0231B02CA50C04670470000214022 -:404FC00004F000000B490B4A0B4BD3580F22934303221343084A8B500649064AF0231B02D3580F22934303221A43F0231B02CA50C04670470000214004F000000649064A66 -:40500000064BD358064A1340C022D2011343034A8B50C0467047C0460000214004F00000FF8FFFFF0649064A064BD358064A13408022D2011343034A8B50C0467047C04606 -:405040000000214004F00000FF8FFFFF86B00390029101926C4B0593039B002B00D1CEE0019B002B00D1CAE0019B5B681B021B041A0C019B9B6899048023DB020B401A4362 -:40508000019BDB681904C0239B020B401A43019B1B691906E023DB040B401A43019B1B7F002B01D0012300E000231A431100039B029A04329201D150019BDB68002B09D134 -:4050C0000399029A84235B0092018A18D31800221A6017E0019BDB68012B0AD1019B1A680398029984235B0089014118CB181A6008E00399029A84235B0092018A18D31805 -:4051000001221A60019B1B69002B13D1019B5A690398029986235B0089014118CB181A60019B9A690398029988235B0089014118CB181A60019B1A68039802998A235B0053 -:4051400089014118CB181A60019B9B6C013325D0019B9B6A0F221A40019B1B6B1902F0231B010B401A43019B9B6B1904F0231B030B401A43019B1B6C1B031B041B0C1A4367 -:40518000019B9B6C1B01FF210B401A430398029990235B0089014118CB181A60019B5B6A03221A40019BDB6A1B0130210B401A43019B5B6B1902C0239B000B401A43019BCF -:4051C000DB6B9B01FF210B401A43019B5B6C9B000C210B401A430398029992235B0089014118CB181A60019B1A6A039802999C235B0089014118CB181A6000230593059BA1 -:40520000180006B07047C0460100B60082B001900023180002B0704782B001900023180002B0704700B585B00190009100230393009B1800FDF78EFB031E02D001235B42B5 -:405240000393039B180005B000BD00B587B0039002910192009300230593019A029B11001800FDF7C3FB031E02D001235B420593059B180007B000BD82B001900091009B03 -:40528000074A934206D9009B064A934202D880239B0001E001235B42180002B07047C046FFFFFF0FFFFF0F1082B0019080239B00180002B0704782B0019080235B0518005F -:4052C00002B0704782B0019080235B03180002B0704782B001900023180002B0704782B002006B4606331A806B4606331B881A0007231340180002B0704782B002006B4657 -:4053000006331A806B46063300229B5E1B121BB29BB21A00FF231340180002B07047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393039B18006D -:4053400004B07047006480000000324000B585B0039002910192029B072B05D90F4A104B11001800FFF75CFA019B012B05D90D4A0B4B11001800FFF753FA019B002B05D197 -:405380000122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE502000090580410E602000000B587B0039002910192029B072B05D9134A144B110018006B -:4053C000FFF72EFA019B0F22934305D0104A0F4B11001800FFF724FA029B9B000593039B9B6A0F21059A91400A00D24313400493019B0F221A40059B9A40049B1A43039BCF -:405400009A62C04607B000BD8E030000905804108F03000084B002006B4607331A706B4606330A1C1A70002303936B4606331B78062B25D89A00144BD3181B689F466B4631 -:4054400007331B78002B02D0012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE00B23039308E00C23039305E00D23039302E000230393C046EA -:40548000039B180004B07047A459041082B0EFF305830193019B5A1E9341DBB2180002B0704782B0EFF310830193019B5A1E9341DBB2180002B0704700B585B00190019B4C -:4054C000002B05D12849294B1C221800F6F786FD019B1B68002B05D12349254B1D221800F6F77CFD019B04229B5E013305D11E49204B1E221800F6F771FD019B04229B5E42 -:405500001800FFF7ECFE03000393019B9A79019BDB7919001000FFF77DFF03000293019B1B68029A03991800FFF73EFF019B9B79002B15D1029B0A2B02D00B2B08D00FE004 -:40554000019B1B68039901221800FFF7FFFE07E0019B1B68039900221800FFF7F7FEC046C04605B000BDC046FC5804104C590410505904105C59041010B586B003900A00B8 -:405580000A236B441A80039B002B05D13449354B34221800F6F722FD039B0A226A4412889A80039B00229A71039B0022DA710A236B4400229B5E01334ED0039B04229B5E57 -:4055C0001800FFF78CFE0300072B05D92449264B3D221800F6F702FDFFF758FF03001A0001235340DBB2002B15D0FFF75AFF03001A0001235340DBB2002B0CD00A236B446E -:4056000000229B5E180000F0D1F9031E03D0174B1800F6F721FF039B04229B5E1800FFF76CFE03001800FFF77BFE0200039B1A6000230593039B1C68039B04229B5E180077 -:40564000FFF74DFE0100059A00230093130008222000FDF795FB00E0C04606B010BDC046FC5804104C5904106C5904108459041000B583B001900A006B4603331A70019BC8 -:40568000002B05D10E490F4B55221800F6F7A6FC019B04229B5E013305D109490A4B56221800F6F79BFC019B6A4603321278DA71019B1800FFF700FFC04603B000BDC0461F -:4056C000FC5804104C5904105C59041000B583B001900A006B4603331A70019B002B05D10E490F4B5E221800F6F778FC019B04229B5E013305D109490A4B5F221800F6F793 -:405700006DFC019B6A46033212789A71019B1800FFF7D2FEC04603B000BDC046FC5804104C5904105C59041082B00190019BDBB2180002B0704782B00190019B1B14DBB282 -:405740000F221340DBB2180002B0704782B00190019B1B15DBB201221340DBB2180002B0704782B002006B4606331A806B4606331B881A0007231340180002B0704782B068 -:4057800002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B07047000084B00190019B0E2B06D8019B054A94466344DB01039301E0034B0393EC -:4057C000039B180004B07047006480000000324000B585B0039002910192029B072B05D90F4A104B11001800FFF71AF8019B012B05D90D4A0B4B11001800FFF711F8019BE6 -:40580000002B05D10122029B9A40039B5A6004E00122029B9A40039B9A60C04605B000BDE5020000C0590410E602000084B002006B4607331A706B4606330A1C1A70002383 -:4058400003936B4606331B78062B25D89A00144BD3181B689F466B4607331B78002B02D0012B03D018E00823039302E00E230393C04611E00E2303930EE00A2303930BE065 -:405880000B23039308E00C23039305E00D23039302E000230393C046039B180004B070472C5A041010B586B0020002910E236B441A800E236B4400229B5E013353D00E23E3 -:4058C0006B4400229B5E1800FFF759FF03001800FFF768FF03000593029B1800FFF736FF03001C00029B1800FFF725FF030019002000FFF79BFF030004930E236B4400222F -:405900009B5E1800FFF72DFF0400029B1800FFF70BFF0300049A0598009301232100FDF72FFA049B0A2B02D00B2B0ED01BE00E236B4400229B5E1800FFF713FF0100059BD7 -:4059400001221800FFF744FF0DE00E236B4400229B5E1800FFF705FF0100059B00221800FFF736FFC046C04606B010BD82B002006B4606331A806B4606331B881A0007239B -:405980001340180002B0704782B002006B4606331A806B46063300229B5E1B121BB29BB21A00FF231340180002B0704700B587B002006B4606331A806B46063300229B5E88 -:4059C0001800FFF7E1FF030004936B46063300229B5E1800FFF7CAFF0300039301235B420593049B0D2B27D8039B072B24D8F6F70BFC154A049BD3181B781A00039B1A412C -:405A000013000122134013D10F4A049BD3181B785AB20121039B99400B005BB213435BB2D9B2094A049BD3180A1C1A7000230593F6F704FC059B03E0044B1800F6F70CFDC3 -:405A4000180007B000BDC0467C050008485A041000B585B0020000916B4607331A70FF2303936B4607331A7813005B009B189B00214A9B1802936B4607331B78032B05D935 -:405A80001E491F4BC8221800F6F7A8FA029B1A68009B9A4205D219491A4BC9221800F6F79DFAF6F7B1FB029B9B680121009A91400A00134019D1029B9B680121009A91408F -:405AC0000A001A43029B9A60009B0393009B01330093029B009A5A60029B5A68029B1B689A4202D9029B00225A60F6F7A7FB039B180005B000BDC0468C050008945A04101D -:405B0000E85A0410085B041000B587B002006B4607331A70FF2305936B4607331A7813005B009B189B00244A9B1804936B4607331B78032B05D92149214BF8221800F6F70B -:405B40004DFAF6F761FB049B5A68049B1B689A4205D31A491B4BFC221800F6F73FFA049B5B68039312E0049B5A68049B1B689A4202D9049B00225A60049B5A68039B9A42BF -:405B800013D0049B5B685A1C049B5A60049B5A686B4607331B7811001800FFF759FF03000593059BFF2BDED000E0C046F6F746FB059B180007B000BD8C050008945A04108D -:405BC000E85A0410505B041000B585B0020000916B4606331A806B46063300229B5E0393039B1F2B06D9BB235A001649164B1800F6F7F4F9009B002B07D17823FF331A00BE -:405C00001049124B1800F6F7E9F9F6F7FDFA104B039A9200D358002B05D06B460633012252421A8004E00A4B039A92000099D150F6F704FB6B46063300229B5E180005B013 -:405C400000BDC046945A0410C85B0410BC5B04103072000800B585B0020000916B4606331A806B46063300229B5E0393039B1F2B07D98823FF331A001349144B1800F6F738 -:405C8000ADF9009B002B06D1C4235A000E49104B1800F6F7A3F9F6F7B7FA0E4B039A9200D258009B9A4205D10A4B039A92000021D15003E0084B1800F6F7CEFBF6F7BEFA01 -:405CC000C04605B000BDC046945A0410C85B0410BC5B041030720008E05B041010B58EB008AB3B4A03CA03C301230D930FE008AB0D9A5200D35C190008AA0D9B5B00D318B4 -:405D000001331A78334B5A540D9B01330D930D9B032BECD902AB304A13CA13C313CA13C301230C9315E002AB0C9AD200D35C180002AA0C9BDB00D31804331A682749030064 -:405D40005B001B189B00CB1808331A600C9B01330C930C9B022BE6D901AB00221A7001AB00225A7001230B930FE001AB0B9A5200D35C190001AA0B9B5B00D31801331A786C -:405D8000174B5A540B9B01330B930B9B002BECD06B4600221A706B4600225A7001230A930FE06B460A9A5200D35C19006A460A9B5B00D31801331A780A4B5A540A9B0133F8 -:405DC0000A930A9B002BECD0C0460EB010BDC0460C5C04107C050008145C04108C050008BC050008C405000882B00190019B1B12DBB2180002B0704786B0029101920F23FF -:405E00006B44021C1A70284B05930F236B441B78002B1FD1029B072B41D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B1B021B041B0C1A43FB -:405E4000029B80208000844663449B005A500023059324E00F236B441B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B90208000844663449B009B580E4A02 -:405E80001A40019B1B020D4803401A43029B90208000844663449B005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF0000FF0000FF00FFFF00EE -:405EC00086B00291019200930F236B44021C1A70424B05930F236B441B78022B3CD1029B032B00D976E0019B3D4A934272D8009B1F2B6FD83B493B4A029BA020800084463F -:405F000063449B009B58384A1A40019B1B02374803401A43029BA0208000844663449B005A5030492F4A029BA0208000844663449B009B58F82293431A00009BDB00FF2078 -:405F400003401A43029BA0208000844663449B005A50002305933DE00F236B441B78032B38D1029B002B35D1019B214A934231D8009B1F2B2ED81B491A4A029BB020800018 -:405F8000844663449B009B58FF221A40019B1B021A43029BB0208000844663449B005A501049104A029BB0208000844663449B009B58F82293431A00009BDB00FF2003402D -:405FC0001A43029BB0208000844663449B005A5000230593059B180006B0704701004A00FFFF000000000140FF0000FF00FFFF00FFFFFF0010B584B000926B460733021CAA -:406000001A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1009B072B17D96B4606331B78012B02D1009B0F2B02 -:406040000FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A46063212789201FF211140009A3F2422400A43C021FB -:4060800089008C4663449B001A5000230393039B180004B010BDC04601004A000000014084B0020000916B4607331A70204B03936B4607331B78032B35D86B4607331B78E3 -:4060C000002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B4607331B78032B18D1009B002B15D10E496B46073301 -:406100001B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B07047C04601004A000000014000FF008084B00200C0 -:4061400000916B4607331A701E4B03936B4607331B78032B32D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D173 -:40618000009B032B07D96B4607331B78032B15D1009B002B12D10C496B4607331B789B01FF221A40009B3F20034013438022D2051A438023DB00CA5000230393039B1800A1 -:4061C00004B0704701004A000000014082B00190019AD0239B00D358180002B0704782B00190019AC2239B00D358DB05DB0D180002B0704782B00190019A82239B00D358F5 -:40620000DB05DB0D180002B0704782B00190019B1A6880231B01134001D0802300E04023180002B0704782B00190019B1B68802212061A43019B1A60C04602B0704700B5B7 -:4062400083B00190019B1800FFF7C0FF0300180003B000BD00B583B001900091009A019B11001800FDF796FB0300180003B000BD00B583B001900091064A009B9A40019B82 -:406280005B08D3180199180005F0D2FA0300180003B000BD80F0FA0210B586B0019000914D4B0593019B9B7CFF2B3BD10220FFF72BFC03000493049B032B13D8019B1B7C2C -:4062C000049A02211800FFF795FE03000593059B002B29D1019B02225A74049BDAB2019B9A7421E00120FFF70FFC03000493049B0F2B13D8019B1B7C049A01211800FFF7F7 -:4063000079FE03000593059B002B0DD1019B01225A74049BDAB2019B9A7405E02F4B1800F6F79AF800230593059B002B4FD1019B5B7C022B27D1019B9B7C19000220FFF728 -:40634000FDFE009A13005B009B189B0005211800FFF78EFF03000393019B9B7C1800039B5B09591E039B1F2213400A0001000220FFF7A6FD03000593019B9B7C19000220AD -:40638000FFF78EFE23E0019B5B7C012B1FD1019B9B7C19000120FFF7D1FE019B9B7C1C00009A13005B009B189B0000211800FFF75FFF03001A0021000120FFF71DFD0300F3 -:4063C0000593019B9B7C19000120FFF769FE059B180006B010BDC04601004A00805D041000B585B00190019B0A229B5E1B4A11001800F5F717F803000393019B08229B5E21 -:40640000174A11001800F5F70DF803000293019B0A229B5E1800FFF7C9FA031E07D1019B08229B5E1800FFF7C1FA031E03D00D4B1800F6F711F8019B0A229B5E039A11006D -:406440001800FFF72FFA019B08229B5E029A11001800FFF727FAC04605B000BD944F0410F84E0410A85D041000B593B0019002AB180040231A00002101F078FB02AB0C223D -:406480005A6002AB08229A6002AB02225A7302AB14225A6202AB0B22DA62019BDB7C1A0002AB9A60019B5A7D02AB9A73019B1A7D02AB5A73019B0C229B5E01335A1E93412D -:4064C000D9B202AB20229954019B1B6802A900221800FDF78BFA019B1B681800FFF7A3FEC04613B000BD000000B587B00190080011006B460233021C1A806B460A1C1A80BF -:40650000019B05936B46023300229B5E4E4A934206D06B4600229A5EA023DB009A4201D1012200E0002213236B441A701A7801210A401A7013236B441B78002B0AD0434BA5 -:406540001B68002B06D04249019B5022180001F07BFA77E03F4A6B46023300215B5E11001800F4F70DFF030003933B4A6B4600215B5E11001800F4F703FF0200039B110050 -:406580001800F4F7B9FE03000393039B013355D0039A059B1A60039B304A944663441A0C059B5A60059B6A46023212885A81059B6A4612881A81274A6B46023300215B5E12 -:4065C00011001800F4F72EFF03001800FFF70CFC03001A00059B1A74059BFF229A74059B0822DA74059B02221A75059B00225A75059B01225242DA81059B012252429A8107 -:40660000E1235A02059B11001800FFF745FE059B1800FFF729FF059B1800FFF7E1FE13236B441B78002B0DD00199094B5022180001F00AFA054B01221A6003E0084B18006D -:40664000F5F70AFF07B000BD01050000B0720008D8830008944F0410F84E041000009FBF205E041000B585B001900091019B0393039B1B6800211800FDF74EFC009A039BCF -:4066800011001800FFF708FE039B1B681800FFF7CAFDC04605B000BD00B585B001900091019B0393C046019B180000F032F8031EF9D0039B1B68009A11001800FFF7CAFDAA -:4066C000C04605B000BD00B585B00190019B0393C046019B180000F00BF8031EF9D0039B1B681800FFF7ABFD0300180005B000BD00B585B00190019B0393039B1B68180094 -:40670000FFF76DFD03005A1E9341DBB2180005B000BD10B584B00190019B0393039B1B681800FFF767FD0400039B1B681800FFF76CFD0300E31A5A1E9341DBB2180004B003 -:4067400010BD10B50020FEF771F9C04610BD000082B002006B4606331A806B46063300229B5E002B0ADB074B6A460632128811001F220A40012191400A001A60C04602B0C9 -:406780007047C04600E100E082B002006B4606331A806B46063300229B5E002B0FDB09496B4606331B881A001F23134001229A40130080228B50BFF34F8FBFF36F8FC04628 -:4067C00002B0704700E100E082B002006B4606331A806B46063300229B5E002B0BDB07496B4606331B881A001F23134001229A4080235B00CA50C04602B0704700E100E0D0 -:4068000086B0029101920F236B44021C1A70284B05930F236B441B78002B1FD1029B072B41D8019BFF2B3ED82249224A029B80208000844663449B009B581F4A1A40019B23 -:406840001B021B041B0C1A43029B80208000844663449B005A500023059324E00F236B441B78012B1FD1029B0F2B1CD8019B134A934218D80F490F4A029B902080008446C5 -:4068800063449B009B580E4A1A40019B1B020D4803401A43029B90208000844663449B005A5000230593059B180006B07047C04601004A0000000140FF00FFFFFFFF000053 -:4068C000FF0000FF00FFFF0010B584B000926B460733021C1A706B4606330A1C1A70234B03936B4607331B783A2B3AD86B4606331B78032B35D86B4606331B78002B02D1B8 -:40690000009B072B17D96B4606331B78012B02D1009B0F2B0FD96B4606331B78022B02D1009B032B07D96B4606331B78032B18D1009B002B15D10E486B4607331B786A4677 -:40694000063212789201FF211140009A3F2422400A43C02189008C4663449B001A5000230393039B180004B010BDC04601004A000000014084B0020000916B4607331A70FF -:40698000204B03936B4607331B78032B35D86B4607331B78002B02D1009B072B17D96B4607331B78012B02D1009B0F2B0FD96B4607331B78022B02D1009B032B07D96B46D2 -:4069C00007331B78032B18D1009B002B15D10E496B4607331B789B01FF221A40009B3F2003401343094A1A438023DB00CA50064A8023DB00D35800230393039B180004B024 -:406A00007047C04601004A000000014000FF008082B001900091019B009A9A61C04602B0704784B00390029101920399029A98235B0092018A18D318019A1A600399029AF2 -:406A400098235B0092018A18D3181B68C04604B0704782B0019000910122009B9A40019B9A60C04602B0704782B0019000910122009B9A40019B5A60C04602B0704784B016 -:406A80000390029101920399029A86235B0092018A18D318019A1A60C04604B0704782B0019000910199009A84235B0092018A18D3181B68180002B07047000000B583B0A5 -:406AC0000190019B1B78082B09D1074B00211800FFF7BFFF044B01211800FFF799FF0023180003B000BDC0460000384010B500F0CDF800F0C5F8F5F7C5F9C04610BD0000A6 -:406B000010B500F0BDF800F0C1F8254B1B68002B43D1234B01221A60002200211320FFF7D3FE312200210020FFF76AFE00210020FFF720FF1B4B1C481A000021FEF786FA06 -:406B4000194B00211800FFF784FF184B1800FEF74DF803001A0001235340DBB2002B03D0134B1800F5F778FC0F4B01211800FFF74FFF80235B0019000020FFF725F80300F0 -:406B8000013303D10B4B1800F5F766FC0A4A0B4B11001800FDF7FCFC00E0C04610BDC046B4720008945E041000003840F0050008E05E0410045F0410ED6A03108C5E0410BF -:406BC00010B500F05DF80A4B00211800FFF74CFF084B1800FEF780F880235B0019000020FFF738F8044B00221A60C04610BDC04600003840F0050008B472000810B5074B09 -:406C00001B68002B01D1FFF77BFF054B00211800FFF745FF0300180010BDC046B47200080000384000B585B00190134B00211800FFF735FF03000393019A039BD31A02937D -:406C40000E4B1B68002B01D1FFF75AFF029B012B02D9029B033302D9039B02330193019B05481A000021FFF70AFF0020FFF770FDC04605B000BDC04600003840B472000869 -:406C800010B50020FFF780FDC04610BD10B5044B022200211800FFF7C4FEC04610BDC0460000384010B50020FFF752FD0020FFF78BFDC04610BD0000014B18007047C04673 -:406CC000845E0410C317C0185840704710B5044B0A001B6801001800F5F76DF910BDC0460806000810B55143F5F710F9041E1CD00300083B5A6803239A43043A242A16D8C7 -:406D00000300132A0DD900210833016041601B2A07D98160C160242A0DD1030001611833416100221A605A609A60200010BD002100F01CFFF9E703001033F2E7014B1868F6 -:406D40007047C0460806000870B505000C1E40D0002802D0836B002B3ED00126636E334233D1A3899B0543D52100280000F052F8E36A0600002B04D0E16928009847002818 -:406D800044DBA3891B062AD4216B002908D023004033994202D02800F5F7EFF800232363616C002904D02800F5F7E7F80023636400F076F90023A381636EDB0714D5A06DFF -:406DC00000F0F8FA00F074F904E00C22A35E002BCAD10026300070BD00F032F9BDE721692800F5F7CAF8CFE7A06D00F0E7FAE6E7A06D00F0E1FA0C22A35E002BB4D1636EF0 -:406E00001E40E6D1A06D00F0D9FAE3E701267642B7E7C046F0B5C64600B50C23CA5E804693B20C00190740D480231B0113436268A381002A00DC70E0A66A002E31D04246F8 -:406E40004146156800229BB20A60DA0400D469E0226D5B0706D56368D21A236B002B01D0E36BD21A0023E1694046B047431C3DD0A3893A4A13400022626022691BB2A3813A -:406E80002260DB0447D44346216B1D60002908D023004033994202D04046F5F76EF800232363002004BC9046F0BD2669002EF8D022682660951B00229B0700D16269A260F5 -:406EC000002D04DCEDE736182D1A002DE9DD2B003200E1694046676AB8470028F3DC40220120A38940421343A381DBE7434619681D29F4D81A4B0122CB409A43EFD1A38950 -:406F0000164E6260334022691BB2A3812260DB04B9D50029B7D12065B5E7E26B002A00DD8AE7BEE700220123E1694046B0470200431C02D0A389A66A8BE743461B68002BEC -:406F4000F8D01D2B01D0162B03D1434600201D60A8E74021A3890B43A381A3E7FFF7FFFF0100402070B505000C00002802D0836B002B16D00C22A35E0026002B0FD0626E2A -:406F8000D20701D49B0513D521002800FFF742FF636E0600DB0702D4A3899B0504D5300070BD00F04DF8E5E7A06D00F007FAF6E7A06D00F001FAE7E710B5011E04D0054BE0 -:406FC0001868FFF7CFFF10BD034B0449186800F0A5F9F8E7080600083C5F0410656F031010B5024900F09AF910BDC046496D0310002310B50400036043608360818143669D -: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 -:408C40002C5D1E07150901392E430C701C092300340032001C43F0D10C920D9332AB5B1A119166460E93F5E6505F0410F8600410FFFFEF7FB4600410129310231C438B460E -:408C8000A30600D511E1E30601D500F031FC630601D400F02DFC0F9B1A880C92002204330D920F930C9A0123ADE78B4641461293002901D001F090F8B84B1793A30600D594 -:408CC000ABE0E30601D500F007FC630601D400F003FC0F9B1A880C92002204330D920F93E30700D4A9E00C990D9A0B0013431A000223002A00D186E730201EA908704825EF -:408D00006846401900781C4348707CE78B464146002901D001F083F8A30601D500F0E9FDE30601D500F09BFD630601D400F097FD69460F9B098D1A680433079211800F93AA -:408D4000A3E54B461C430B78D8E512930F9B8B461D1D1B6816A91A0011930023CB77002A01D100F0FBFE5346013301D100F038FE524600211198FEF701FE002801D100F092 -:408D800054FF119BC31A1A000E93DB43DB171A4016ABDB7F0792984600230F9508949A4613935FE60F9A1293136828AD07936B461B7F8B462B70002316A9CB771300043395 -:408DC0000F93002308949846013307930E93002311959A4613934BE68B4641461293002900D1F4E516ABD877F1E563461C430B7884E50B786C2B01D100F086FD10221443B3 -:408E00007CE58B4641461293002901D000F0E8FF634B1793A30600D453E707220F9B07339343013294469C4462460F921A685B680C920D93E30700D555E70C990D9A080009 -:408E4000104302230200DEE68B460F9930220B680C9300230D9302331C431EAB1A7048325A700B0004330F934D4B129217930C9A0223C8E601231C430B783FE50F9B1A1D9B -:408E80001B680B93002B00DA42E50B780F9235E50B78002800D031E50122203090462DE58B461293A30600D4EDE607220F9B07339343013294469C4462460F921A685B6817 -:408EC00011001A00080010430C910D920123020099E68B461293A30600D483E607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D9200236C -:408F0000020080E68B4641461293002901D000F07FFF129B002B00D10BE528AD2B70002316AAD37708944EE7BC684346002B0FD016AA1F23944663443360012373607B68B6 -:408F400001340133BC607B60072B00DDB3E108364B46002B0CD01EAB3360022373607B6802340133BC607B60072B00DDAFE10836109B802B00D120E153460E9A9D1A002D56 -:408F80003CDD084A7B689146102D2CDD102221009246099C32002E004D4609E0C4600410D860041008610410103E0832102E16DD50461031013315605060B9607B60072B8A -:408FC000F2DD3A000699200002F0A2FB002800D0B7E4103EB9687B6832AA102EE8DCA9460C00350016004A466419013332607560BC607B60072B00DD51E10836089BDB0570 -:4090000000D5B6E0119B33600E9B9C4673607B6864440133BC607B60072B00DD9DE00836089B5B0741D50B9B079A9D1A002D3CDDC44A7B689046102D26DD10222100914618 -:40904000099C32002E00069D03E0103E0832102E17DDBC4810311060484601335060B9607B60072BF1DD3A002900200002F050FB002800D065E4103EB9687B6832AA102E23 -:40908000E7DC35000C00160042466419013324C6BC607B60072B08DD3A000699099802F037FB002800D04CE4BC680B9B07998B4200DA0B000A9A94469C4463460A93002CB3 -:4090C00000D0D6E0002332AE7B60FFF7DEFB149B012B00DCAEE0119B01343360012373607B68BC6001337B60072B00DDDFE20836199A01333260189A984694466444726014 -:40910000BC607B60072B00DDDEE20836002200231698159902F012FD002800D0A4E1119D149B0135013B35607360E41801239C46E0444346BC607B60072B00DD8BE0083677 -:4091400021AB33601A9B9C467360434664440133BC607B60072B00DC61E73A000699099802F0D6FA002801D0FFF7EBFBBC6832AE56E7129B652BAADD0022002316981599BD -:4091800002F0DCFC002800D1E2E06F4B01343360012373607B68BC6001337B60072B00DD66E308361F9B149A934200DAA4E1089BDB0700D5A0E1BC6832E70B9B079A9D1A5B -:4091C000002D00DCD8E6614A7B689146102D25DD102221009046099C32004E4603E0103D0832102D17DD40461031013316605060B9607B60072BF2DD3A000699200002F0D4 -:4092000087FA002801D0FFF79CFB103DB9687B6832AA102DE7DCB1460C0016004A466419013332607560BC607B60072B00DD7EE20836A1E60123089A134200D04BE773601E -:409240007B68119A013301343260BC6098467B60072B00DC73E73A000699099802F058FA002801D0FFF76DFB7B68BC68984632AE66E73A000699099802F04AFA002800D158 -:4092800020E7FFF75EFB089C012B00D184E1022B29D10894002300240C930D94C5E43A000699099802F034FA002801D0FFF749FBBC6832AEA2E63A000699099802F028FA78 -:4092C000002801D0FFF73DFBBC6832AE40E63A000699099802F01CFA002801D0FFF731FBBC6832AE44E60894002300240C930D940C980D995B4632AA07939146B34600E01E -:40930000A1464A0794464B4665465C1EC6080723CA08354311002A0003403033237028000A43EDD10C900D9107995E468B4608994A461194C90700D53DE132AB1B1B0E93E0 -:40934000FFF788FBF8600410F4600410086104101F98002800DC96E2139A1499130090468B4200DD88464346002B0CDD119B44443360434673607B68BC6001337B60072B35 -:4093800000DDB7E308364346DB434246DB171340139AD31A9846002B00DC28E1102B01DC00F0E7FCCF4A2100914610227B689246099D32004C46464604E00832103E102E73 -:4093C00000DC04E150461031013314605060B9607B60072BF1DD3A000699280002F098F9002801D0FFF7ADFAB9687B6832AAE5E70D9B002B00D1CAE00C9C0D9D32ABB1464F -:409400001E00200029000A22002302F0E3FB013E303232700023200029000A2202F0DAFB030004000D000B43EBD1320032AB9B1A11960C940D954E460E93FFF70BFB0023E5 -:409440000E9332AB1193FFF705FB3A000699099802F05EF9002801D0FFF773FA16ABDB7FBC68984632AE60E5149B5D1E002D00DC66E69C4B9946102D29DD102332009A46A6 -:409480002E0021004346099C4D4603E0103E0832102E17DD50461031013315605060B9607B60072BF2DD3A000699200002F030F9002801D0FFF745FA103EB9687B6832AA6A -:4094C000102EE7DCA9460C003500984616004B4675603360641929E60F9B1A68FFF7FBFB13680793FFF782FA0F9B1A68FFF784FB0F9B1A68FFF7D1FB199BBA683360189B78 -:409500009C4673607B68624401331400BA607B60072B00DD02E20836149B5D1E002D00DC7EE5704A7B689146102D25DD102221009046099C32002E004D4603E00832103E0A -:40954000102E15DD40461031013315605060B9607B60072BF2DD3A000699200002F0D8F8002801D0FFF7EDF9B9687B6832AAE6E7A9460C00350016004A4664190133326050 -:409580007560BC607B60072B00DC48E5E5E50C9B092B00D930E7089C27220C9B28A930338B54012316AA94460E936E33634408941193FFF74FFA302B00D10BE23023023A9A -:4095C000137032AB9B1A0E931192FFF743FAB046A14616000C004A4632604246444401337260BC607B60072B00DD9CE208361F9B149A93424CDB089AD20749D4149A139990 -:40960000D31A521A90469A4200DD98464246002A0FDD1399119A8C4662443260424672607A6844440132BC607A60072A00DD86E208364246D543ED1715405D1B002D00DC4A -:40964000EEE4284A7B689146102D95DD102221009046099C32002E004D4603E00832103E102E85DD40461031013315605060B9607B60072BF2DD3A000699200002F048F831 -:40968000002801D0FFF75DF9B9687B6832AAE6E7199A3260189A944672607A6864440132BC607A60072A00DD30E20836A6E73A000699099802F02CF8002801D0FFF741F9BE -:4096C000BC687B6832AE13E53A000699099802F01FF8002801D0FFF734F97B68BC68984632AE13E508610410072307329A4301339C46944463460F93536812680D930C92C6 -:40970000002B01DBFFF77AF90C980D99002342428B4111001A002D2316A8C377080010430C910D92984602002C3BFFF770F93A000699099801F0ECFF002801D0FFF701F90D -:40974000BC6832AE18E41699159D0A0008002B00290004F023F8002800D0E6E25346013300D10DE22023129A9A430E92472A00D11CE180235B0023430893159B002B00DA67 -:4097800021E2169A0793002391461093129B662B00D1FCE1462B00D1DBE00E9A0998453A13005942594120AB0D0003931FAB0293022323AA55441B92049200930195079B60 -:4097C0004A4600F063FC129B1190672B00D039E2119B9846A844E30700D48BE2002300224846079902F0AAF9434600280AD1239B434507D2302140465A1C23921970239B22 -:409800009842F9D8119A9B1A14930E9B472B00D1F6E0129B652B00DC26E2129B662B00D1F4E11F9B1393149B139A1900914200DDD4E1E30700D549E2D343DB1711001A4018 -:40984000672307920E911293109B002B00D0CFE016ABDB7F984600239A46FFF703F90F9A0A9913681960130004330F93FFF70DF83A000699099801F04BFF002801D0FFF773 -:4098800060F832AE8EE4DE4B01343360012373607B68BC6001337B60072B7ADC0836002807D1149B002B04D1089BDB0701D4FFF7B7FB199B3360189B191973607B68B96096 -:4098C00001337B60072B00DDF2E132000832002800DACCE111980133106014987B6044185060BC60072B00DD37E408321600FFF797FB0F990A9A0B681A60D2175A600B0077 -:4099000004330F93FEF7C1FF4B4601311C430B78FEF7F4FFBB4B1193FFF737F93A000699099801F0F5FE002801D0FFF70AF8BC6832AEF1E540210998F2F7E8FA069B18602D -:409940001861002800D14FE24023069A5361FEF78EFF23AB1B93049320AB03931FAB02935346019303234A4600930998079B00F08DFB55461190119B9846129BA844462B37 -:4099800000D02BE7119B1B78302B16D01F9B984424E73A000699099801F0BAFE002801D0FEF7CFFF1F98BC6832AE78E75346002B00D0DEE601339A46DBE6002200234846AB -:4099C000079902F0BBF80028E0D101235B1B1F93984403E7119A32AB9B1A0E93FFF73AF81198FEF7E5FB02000E900300FFF7CDF92D2316AAD377984600239A46FFF735F8F6 -:409A00001F9B1393DA1C02DB9A4500DB0BE7129B023B12932C22139B48215D1E16AB9B186A46521812781F951A70002D00DAA4E12D212B2316AA52181370092D00DC4CE16E -:409A400016AA3B23944663449A46B146A046564600E0260028000A2102F05AF8741E3031217028000A2101F06DFF05000928F0DC23004446B0464E46994603003033D8B215 -:409A80004346023B18709A4500D8B4E142461B9B4546991A012307315B4201E0E85C013321AAD218D0708B42F8D116A98C462E224B4662449446FB1A634421AA14999B1AD8 -:409AC0009C460A0062441A930E92012900DC45E1189A0E9B944663441A000E93DB43DB171A40002307921393AEE601235B420A93FEF72DFF3A000699099801F009FE00284B -:409B000001D0FEF71EFFBC6832AE3CE43A000699099801F0FDFD002801D0FEF712FF1F9BBC6832AE6AE53A000699099801F0F0FD002801D0FEF705FFBC6832AE57E53A00E9 -:409B40000699099801F0E4FD002801D0FEF7F9FE149B1F9ABC689B1A32AE6AE553460793062B01D906230793079B0F950E93002398469A461393244B08941193FEF778FFF4 -:409B80002023129A9A431A3B0E929A46F1E523AB1B93049320AB03931FAB02935346019303234A4600930998079B00F06FFA03005344119098465546E4E62D2316AAD37771 -:409BC0009846FEF7DBFF802212069446169B9946159B634407932D231093D7E5189A149B9446139A63440E93002A00DCCEE01A00DB43DB171A4067230792129324E6C046B4 -:409C0000F4600410B8600410EC6004101F9B1393002B00DCD5E05246002A00D092E0E20700D58FE007930E930EE616ABDB7F0F959846534607930E93002308949A461393FE -:409C4000FEF710FF119B9846129BA844472B00D0C4E5E30700D58EE6239B119A9B1A14930E9B472B00D1CBE61F9B1393D2E64442103000DBD0E06E481026050003E00832C6 -:409C8000103C102C38DD1031013315605660B9607B60072BF3DD3A000699099801F038FD002801D0FEF74DFEB9687B6832AAE7E73A000699099801F02BFD002801D0FEF769 -:409CC00040FE1F98B9687B6832AA00E6189A139B944663441A000E938AE72E21302316AA521813702B0016AA013130335218137022ABE2E6239B85E5A94648460919013350 -:409D000010605460B96008327B60072B00DCE1E53A000699099801F0FBFC002801D0FEF710FEB9687B6832AAD4E5159B002B38DB16ABDB7F9846129B472B2EDC3D4B1193CA -:409D4000FEF723FF189A139B9446634453441A000E93DB43DB171A40079275E501232340139300D0B4E60E9AD343DB171A4007926AE52F4A7B6891462DE40123139A1B394A -:409D80009D1A16AA2C335218137056E60E9B139A981A431C1A000E932AE7274B1193FEF7F4FE2D2316AAD3779846C4E70F9B1A1D1B689A46002B36DB4B780F925946FEF719 -:409DC0009DFD5346002B01D1E30703D5189B581C0300BBE7012325E716ABD877FEF76CFF16ABD877FFF714F80C23099A13600D3B0A93FEF7ACFD16AA2E23944663445CE657 -:409E000016ABD877FEF785FE16ABD877FEF7DDFD16ABD877FFF77DF8054881466DE716ABD877FEF779FF01235B429A46C4E7C04608610410BC600410C060041030B504003F -:409E40009BB01800002A2EDB82236D469B00AB8100910491002A11D00123013A5B4202920592EB8102001E9B69462000FEF7E2FC431C12DB0023009A13700CE001235B42D3 -:409E800002920592EB8102001E9B69462000FEF7D1FC431C04DB1BB030BD8B232360E9E78B232360F7E78B23012023604042F2E710B50400054882B00068009313000A00AC -:409EC0002100FFF7BBFF02B010BDC04608060008002904D0FF2A04D801200A7070470020FCE78A23036001204042F7E770B50500080011000022064C22601A00F2F7C2FE12 -:409F0000431C00D070BD2368002BFBD02B60F9E74C840008002370B5064C050008002360F2F76AFE431C00D070BD2368002BFBD02B60F9E74C840008F0B545468046DE464C -:409F400057464E464246E0B50C69126985B00B0002910020944200DD90E014229446634499464A46013CA300D6181422424493469B4433681500591C5B461868019201F05B -:409F800057FC031E009042D0290000274D460020B146A2463E0004009C462F0008000395634604CF15042D0C5D43120C5A43AD192B0CD21803682D041904090C0919160C94 -:409FC0002D0C1204491B120C1B0C9B1A0A149B1809041C14090C1B04194302C0B945DFD2039B4E4699465B461B685446002B0ED15B46019A043B9A4204D306E0043B013C3C -:40A000009A4202D219680029F8D043461C610299404601F055FA00282FDB4F460020009B019D013300932B6802CF1A04120C10180A04120C821A090C1B0C5B1A11145B18D7 -:40A0400012041814120C1B04134308C5BE42EAD20199A3008C4663441A68002A0DD1043B0A00994204D306E0043B013C9A4202D219680029F8D043461C61009805B03CBC78 -:40A0800090469946A246AB46F0BDC046F0B557464E464546DE46E0B5016C99B082461D0016001F00002909D00123426C93404A608B6000F0F9FF002352461364B846002FF2 -:40A0C00037DB0023259A13604246D64B1A409A4218D0002200233000390001F02FFD00282FD00123249A1360269B002B00D12AE2CD481860013819B03CBC90469946A246FE -:40A10000AB46F0BDC94B249A1360002E0BD14346180308D1269BC648002BECD003000833269A1360E7E7269BC248002BE3D0C31CF6E70123259A68001360430898461F0055 -:40A14000C2E716AB019317AB009332003B00504601F06CFA434683461A0D00D1D6E13B03B54C1B0B1C43B54B30009846169B21009946002390440F930022B14B02F0F8FF0E -:40A18000B04AB14B02F074FDB04AB14B01F02CFE040040460D0003F055FBAE4AAE4B02F067FD02000B002000290001F01DFE04000D0003F013FB002203900023200029007F -:40A1C00001F0C2FC002800D0B1E20123039C0C93162C10D8A149E300C9183200086849683B0001F0C5FC002800D11DE32300013B039300230C934B4642469A1A0023069372 -:40A200001300013B049300D5A1E2039B002B00DA84E29C460D930023049A9946110061440491229B092B00D98FE10124052B02DD0024043B2293229B032B01D100F0CEFC6D -:40A2400001DC00F092FC229B042B01D100F040FC01230B93229B052B01D000F08BFC239A039B944663440E93013307931D1E01DC00F049FD079B98460023524600215364F6 -:40A28000172D0AD9012204335B0018001430110001328542F8D253465964504600F0DCFE5346186443460A900E2B00D961E1002C00D15EE110961197039E002E01DC00F029 -:40A2C00025FD32000F21654B0A40D2009B1836111C685D68F30601D400F0CAFC604B0E401A6A5B6A1098119902F08EF80323984608900991002E11D0594F0123334209D0DC -:40A300009C463A687B6820002900E04402F0B0FC04000D0076100837002EEED12200089809992B0002F070F806000F000C9B002B09D00022404B3000390001F005FC00280F -:40A3400001D000F0C2FD404603F07CFA32003B0002F08EFC0022434B01F046FD424A0B0094466344089009910993079B002B01D100F050FC039B1393079B12930B9B002B84 -:40A3800001D100F01DFD129B00205A1E334BD2009B181A685B68354902F036F8089A099B02F0E6FE089009913900300003F016FA040003F047FA02000B003000390002F03C -:40A3C000D7FE05000E000A9A3034511CE7B2149117703300089809992A0001F0C9FB002801D000F0FEFD2A0033000020124902F0BFFE02000B000898099901F0B9FB002860 -:40A4000001D000F0E7FD129B012B01D100F078FC0A9A129B9446634498464B461293149B994638E00000F07FF56004100F2700001C620410286204100000F03F01FCFFFF74 -:40A440000000F83F61436F63A787D23FB3C8608B288AC63FFB799F501344D33F586204103062041000001C400000C0FC0000E03F2A0033000020B94902F07AFE089A099B2D -:40A4800001F062FB002801D000F074FDA146444501D100F033FC089809990022B04B02F0E7FB0022AE4B089009912800310002F0DFFB0D00040003F091F9070003F0C2F9AB -:40A4C00002000B002000290002F052FE4B463037FFB25C1C1F70089A099B05000E0001F033FB0028C4D0139B03935946504600F0DBFD00232370039B249A01331360269B25 -:40A50000002B00D1A8E31C600A98F4E5169B9946179B4B441C00934BE318202B00DC7EE13100914A4046A218D1400A004021CB1A9840104303F0C8F9631E984601238B4D6A -:40A540000F93491918E68A48D5E50023524600215364504600F080FD5346186401235B4207930E93023300220B9300230A9023922293179B002B00DAABE0039A0E2A00DD96 -:40A58000A7E07C4BD2009B185C681B6804930594239B002B00DAA7E2049C059D300022002B00390001F030FF03F018F9804603F049F922002B0002F05BFB02000B0030001C -:40A5C000390002F0D5FD43460A9A30331370079B06000F00541C012B4ED00022604B02F047FB0022002306000F0001F0A7FA002800D07AE70A9B079A9D1C9C465B46069379 -:40A6000053466244AA46049C059D914607930FE00022534B02F02CFB01239C460022002306000F00E24401F089FA002800D0D9E222002B003000390001F0E6FE03F0CEF87F -:40A64000804603F0FFF822002B0002F011FB02000B003000390002F08BFD53464246013B303206000F00D3461A70D145D0D1069B54469B46079B9A4632003B00300039004D -:40A6800001F0B2FB06000F0002000B000498059901F05AFA00280CD10498059932003B0001F04CFA002800D11FE74346DB0700D41BE7651E2F780A9B06E09D4200D151E39F -:40A6C000023C27782C00013D392FF6D001372F700BE70B9A002A4FD0229A012A00DC2CE2079B5C1E4B46A14500DAB8E21C1B079B002B00DAD4E3069B0893079B069A012121 -:40A7000094469C4462460692049A504694469C446346049300F060FD804632E0069A039BD21A5B429946002306920D9379E5039803F088F80B0002002900200001F0FEF921 -:40A74000020050425041039B1B1A03933DE501239B1A06930023049357E5C0460000F03F000024403204000012040000000010FEF460041058620410069B4C4608930023A7 -:40A78000984608990B1E0EDD049A002A0BDD934200DD87E1069AD21A0692089AD21A0892049AD31A04934B46002B1AD00B9B002B00D1BBE1002C10DD41462200504600F0A2 -:40A7C000BFFD5A4601008046504600F00FFD05005946504600F068FCAB464B461A1B00D0A5E10121504600F0F7FC0D9B8146002B1DDD1A000100504600F0A2FD229B814616 -:40A80000012B00DC50E100244B461B6903339B004B44586800F098FC20231B1A10E020223000D31A984085E600230C93E3E4229B0024012B00DC8BE10D9A0123002AE3D171 -:40A8400004991F208C466344184000D1AEE020231B1A042B00DCCCE31C23181A069B9C46844463460693089B9C46844463468C468444089363460493069B002B05DD5946E4 -:40A880001A00504600F0BCFD8346049B002B05DD49461A00504600F0B3FD81460C9B002B00D094E0079B002B00DC75E10B9B002B00D1A6E0089B002B05DD41461A00504600 -:40A8C00000F09EFD804643460C93002C00D050E2079C0A9A013C23009446634408930123334007934B4606930C9B574645465E4692469846069B300019009946FFF71CFB94 -:40A9000003000B90303329003000049300F0D8FD494604004246380000F0ECFDC3688146002B00D01EE10100300000F0C9FD83464946380000F0B8FB5B46229A134303D1A8 -:40A94000079B002B00D106E3002C00DAA8E1229B1C4303D1079B002B00D1A1E15B46002B00DD82E2694652465346097C5C1C1170089A524500D18AE2310000230A22380018 -:40A9800000F09CFB002306000A2229003800454500D1E1E000F092FB4146050000230A22380000F08BFBA2468046A3E71C20069B9C46844463460693089B9C468444634641 -:40A9C0000893049B9C4684446346049354E74946584600F075FD002800DB63E7039B5946013B03930A220023504600F067FB0B9B8346002B00D0CAE20E9B002B00DCD8E256 -:40AA000007930A9B5D460024079F9B4606E0290000230A22504600F051FB050049462800FFF78AFA5B46303018550134BC42EEDBAB460600079C002C00DC37E20A9B002732 -:40AA40009C46644459460122504600F0D9FC4946834600F035FD002800DC44E1651E2B780A9A06E0954200D1B1E0023C23782C00013D392BF6D001332B704946504600F052 -:40AA800013FB4346002B00D12FE5002F05D0474503D03900504600F007FB4146504600F003FB22E5130075E6002E00D0ABE63B030024002B00D0BFE6BA4B3B4200D1BBE6C6 -:40AAC000069B013401330693049B01330493B3E601230B93239B002B00DCD1E01D0098460E930793FFF7C8FB079B002B00DD53E500D0ADE0049805990022AB4B02F0B8F856 -:40AB00003B00320001F03EF8002399469846002855D0239B0A9CDB4303934946504600F0C3FA4346002B00D1DFE4B6E74A465946504600F005FC834653E60F9A002A00D129 -:40AB4000B6E19A4A4C469446069A63440892D5E5002E00D070E6AAE700F0B0FAA24605008046C7E601239B46E2E600230B93229B022BAFD00024534621005C64504600F059 -:40AB80006BFA5346186401235B4207930E9302330A9023940B93ECE4229B022B00DC85E6079B002BB5D149460522504600F086FA81460100584600F083FC0028A9DD312314 -:40ABC0000A9A1370039B541C01330393A5E7039B0A9A01330393312313704EE700230B93FFF73DFB069B5C469B46079B9A467CE4404602F027FE32003B0002F039F800226E -:40AC00006B4B01F0F1F86B4A0B00944663440890099109930022644B3000390002F0A8FA089E099F32003B0004000D0000F0A0FF002800D0B2E08020000684463900614474 -:40AC40000B0032002000290000F07EFF002857D00023994698465CE70A98FFF74CFAE21A0D9BA1469C469444634600240D933EE5109A119B0892099302239846FFF73AFB02 -:40AC80000023524600215364504600F0E5F95346186401230A90079323930E93FFF707FB43460C935B46069AA846B3465546049E9146BA46002B10DD59460122380000F07B -:40ACC0009FFB4946834600F0FBFB002800DC57E1392E00D122E10B9E31360C9B47466C1C2E709846C9E6002803D1F30701D5B5E61C00631E1A78302AFAD0BEE6129B994624 -:40AD0000109E119F35E40125FFF7B4FA039B002B00D1D4E0109811995C420F23264A2340DB00D3181A685B6801F0A2FF241106000F00002C00D149E1022398461F4D0123EE -:40AD4000234209D09C462A686B6830003900E04401F08EFF06000F0064100835002CEED1FFF7E4FA039B30270133039330232B70ACE45968504600F06FF9434641460400BE -:40AD80001B690C319A1C92000C30FCF75DFE01222100504600F034FB0C9099E50023994698460CE70000F07F000014403304000000001C400000C0FC586204103062041094 -:40ADC000129B8F49013BDB00C91808684968089A099B01F04DFF149015913900300002F0FDFC050002F02EFD02000B003000390002F0BEF9129B089009910A991A008C46E5 -:40AE0000303562444C1C0D709046012B1BD008980999250000227B4B01F02AFF0F00060002F0DCFC040002F00DFD303402000B003000390002F09CF92C700135A845E9D113 -:40AE40004446089009911498159900226E4B00F0CBFF089A099B00F077FE002867D0139B651E03932F780A9B2EE44346B3460C93049E069BA84699465546BA46392E4DD0A8 -:40AE80000C9B013647466C1C2E709846F5E54246069BB346BA46049E99462F009046D1E5069B079A9B1A0893002327E40124C5E53623169A4C469B1A069A08921EE40223AB -:40AEC000109E119F9846FFF731FA079B002B00D18EE60E9C002C00DC12E7039B0022013B13933000474B390001F0C2FE060040460F00013002F0A6FC32003B0001F0B8FE76 -:40AF00000022424B00F070FF414A0B00944663440890099112940993FFF730FA39232B700C9B47466C1C98460A9A3923A1E5149A159B0020344902F01BF9089A099B00F00A -:40AF400017FE002801D1DBE61C00631E1A78302AFAD0FFF7C8FA4346B3460C93049E069BA84699465546BA46392ED7D0002C00DDB1E6B2E6139A4D4603920A9BFFF7A4FBD5 -:40AF8000002800D0A9E6F30700D4A6E6A0E6002341460A22504600F091F80E9B8046002B01DD079386E4229B022B1FDC0E9B079380E4229B022B19DC4946FEF7BDFF0A9B79 -:40AFC000303018700E9B0600079333E502239846FFF7ACF9139B149C03930A9B1D00FFF773FB139B149C0393FFF77FFA0E9B0793D6E5042B00D13FE43C23181AD7E4C0467A -:40B0000058620410000024400000E03F00001C400000C0FC044B1B68586B002801D0F03070470248FBE7C04608060008380A000870B50500080011000022064C22601A005D -:40B04000F1F7F8FF431C00D070BD2368002BFBD02B60F9E74C84000870B50400C06C0D0000280AD0AB00C318186800280FD002681A6000230361C36070BD2122042120001D -:40B08000F0F799FFE0640028ECD10020F4E70126AE40721D920001212000F0F78CFF0028F3D045608660E4E7002906D04B689A00C36C9B181A680A6019607047F8B5CE46B7 -:40B0C00047468146080080B50D000C691F0000211430036801311E04360C56431B0C5343F619370CDB1936041F0C360C1B049B1908C08C42EDDC002F08D0AB689C420ADA67 -:40B10000231D9B00EB1801345F602C6128000CBC90469946F8BD6B684846591CFFF79CFF29002B6980469A1C92000C310C30FCF78BFC6B689A004B46DB6C9B181A682A602D -:40B140001D604546DCE7C0460300020C0020002A01D11B0410301A0E01D108301B021A0F01D104301B019A0F01D102309B00002B03DB01305B0000D42020704703685A0764 -:40B1800009D00022D90704D49A0720D402229B0803601000704719040022002901D11B0C1032FF21194201D108321B0A190701D104321B09990701D102329B08D90704D4BA -:40B1C0005B0801D12022E4E701320360E1E75B0803600122DDE7C04610B50C000121FFF73BFF01234461036110BDC046F0B557464E464546DE46E0B514690E6985B00F0087 -:40B200001500A64204DA3300170026000D001C0033199846BB687968984500DD0131FFF71BFF14220300944663449B4643469B005B441900029303905B4600228B4503D269 -:40B24000029904C39942FCD81423A4009A4614372300BC46AA44B60053440097B44401939A454FD253461B681E04360C20D05C460027009D210008CC04CD99464846130414 -:40B280001B0C73430004000C1B18D819130C4A467343120C9B18020C9B1802041F0C120C1B0413430B60AC45E4D8534627601B681E0C20D05B4600211B685C4618000F00DF -:40B2C0006246009D2988000C71430918C9191B0408041B0C0343236008CD60681B0C734307043F0CDB19090C5B181F0C0434AA42E8D89446236004239946019BCA44CB4403 -:40B300005345AFD84346002B0EDD029B043B1A68002A09D1424603E0043B1968002902D1013A002AF8D19046039B424618001A6105B03CBC90469946A246AB46F0BDC0461B -:40B34000F8B54746CE46032380B580460F00140013403AD1A4103E00002C25D043469D6C002D3BD03E00002301279946274207D1641019D0286800281BD005002742F7D022 -:40B380002A0031004046FFF731FF002E1BD04246D26C736894469B0063441A68641032601E600600002CE5D130000CBC90469946F8BD2A0029004046FFF718FF4B46286061 -:40B3C00003600500DAE70600D2E70B4A013B9B009A580023FFF772FE0700BBE701214046FFF73AFE054B05004361012303614346986400230360B5E720630410710200000D -: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 -:40C5C0005B081343190007B03CBC90469946A246AB46F0BD002380229C4612039846034CE0E70023014C00229846DBE7FF07000001FCFFFF2C6304100DFCFFFFFFFF0F8065 -: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 -:40CE40005C464B46019502986AE7C046FF07000001FCFFFF6C630410FFFF0F800DFCFFFF4A464946170C1A0C1B041B0C08041900000C41431500884619007D43794303950D -: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 -:40D940002BF9203002E0081CFEF726F910BDC046F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC9E46704701B40248844601BC604700BF5D100008EC7200080A2B2B2073 -:40D980004D6265644F53204661756C742048616E646C6572202B2B0A0A4661756C74547970653A20000000004D656D4D616E6167654661756C7400004275734661756C7447 -:40D9C0000000000055736167654661756C740000486172644661756C740000000A0A436F6E746578743A00000A0A2D2D204D6265644F53204661756C742048616E646C6558 -:40DA000072202D2D0A0A00004661756C7420657863657074696F6E000A52252D34643A202530386C580000000A53502020203A202530386C580A4C522020203A2025303863 -:40DA40006C580A50432020203A202530386C580A78505352203A202530386C580A50535020203A202530386C580A4D535020203A202530386C5800000A43505549443A2052 -:40DA80002530386C580000000A4D6F6465203A2054687265616400000A50726976203A2055736572000000000A50726976203A2050726976696C6567656400000A4D6F6496 -:40DAC00065203A2048616E646C6572000A537461636B3A20505350000A537461636B3A204D53500011060010210600104306001025732025753A2053504D207265616420C3 -:40DB00006C656E677468206D69736D6174636800340800104C08001064080010C808001054090010EE090010100B0010260B00108E0B00101C0C0010BC0C001068130010BD -:40DB40008013001098130010EA1300103A140010FE14001062150010821900108219001054170010B8170010C81700101418001074180010821900108219001082190010BB -:40DB800082190010DE160010221700109A160010681600108219001082190010821900108219001082190010821900108219001082190010821900108219001082190010C6 -:40DBC0008219001082190010821900108219001082190010821900108219001082190010821900108219001082190010821900108219001082190010D41800100C1C001097 -:40DC00003C1C0010901C0010F41C0010041D0010CC1D00107073615F6D61635F6F7065726174696F6E0000007073615F686173685F6F7065726174696F6E00007073615F58 -:40DC40006173796D6D65747269635F6F7065726174696F6E000000007073615F616561645F6F7065726174696F6E00007073615F73796D6D65747269635F6F70657261746E -:40DC8000696F6E007073615F6B65795F6D616E6167656D656E745F6F7065726174696F6E000000007073615F656E74726F70795F6F7065726174696F6E0000007073615FFF -:40DCC00063727970746F5F67656E657261746F725F6F7065726174696F6E73007073615F660000007073615F665F6D757465780025732025753A20706172746974696F6E90 -:40DD0000206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E2070EE -:40DD400073615F66210A000025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E20702D -:40DD800073615F66210A0000001A0100011A0100021A0100031A0100E4DC03100B0000000C5500081C0000007073615F665F696E697400004142434445464748494A4B4C60 -:40DDC0004D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2D4D4245445F434F4E465F53546B -:40DE00004F524147455F44454641554C545F4B56000000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F636F6D706F6E656E74732F5441E1 -:40DE4000524745545F5053412F73657276696365732F7073615F70726F745F696E7465726E616C5F73746F726167652F434F4D504F4E454E545F5053415F5352565F494D7F -:40DE8000504C2F706974735F696D706C2E637070000000007464625F66696C656E616D6520213D204E554C4C000000007464625F66696C655F6C656E203E3D205053415FCD -:40DEC0004954535F46494C454E414D455F4D41585F4C454E0000000066696C656E616D655F696478203C3D205053415F4954535F46494C454E414D455F4D41585F4C454E1B -:40DF0000000000007073615F6974735F7365745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615FCD -:40DF40006974735F6765745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000007073615F6974735F6765745FEE -:40DF8000696E666F5F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A00007073615F6974735F72656D6F76655F693A -:40DFC0006D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A0000000025732025753A20556E6578706563746564206D6563 -:40E000007373616765207479706520256421000025732025753A204B5653746F726520696E6974696174696F6E206661696C65642077697468207374617475732025642180 -:40E04000000000006D6573736167655F68616E646C657200706974735F656E7472790000697473006974735F6D7574657800000025732025753A20706172746974696F6E75 -:40E08000206973204E554C4C210A000025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E206972 -:40E0C0007473210A0000000025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E206963 -:40E100007473210A0000000064E003100B000000C45900081C0000006974735F696E6974000000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642DB3 -:40E140006F732F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F68616E646C65735F6D616E616765722E63000000008E -:40E1800068616E646C655F6D677220213D202828766F6964202A29302900000068616E646C655F6D656D20213D202828766F6964202A293029000000706F6F6C5F69782052 -:40E1C000213D2068616E646C655F6D67722D3E706F6F6C5F73697A650000000068616E646C6520213D2028287073615F68616E646C655F742930290025732025753A205B8C -:40E200004552524F525D2048616E646C65277320696E646578205B25645D20697320626967676572207468616E2068616E646C657320706F6F6C2073697A65205B25645DEC -:40E2400021200A0025732025753A205B4552524F525D2048616E646C65202564206973206E6F7420666F756E6420696E20657870656374656420696E64657821200A0000BB -:40E2800025732025753A205B4552524F525D205265717565737420666F722064657374726F79206279206E6F6E2D6F776E6572206F7220667269656E64210A002573202577 -:40E2C000753A205B4552524F525D20547279696E6720746F20676574206D656D6F727920666F7220616E20696E76616C69642068616E646C6521200A000000002573202543 -:40E30000753A205B4552524F525D205265717565737420666F722068616E646C65206D656D6F7279206973206E6F7420616C6C6F77656420666F7220746869732070617200 -:40E34000746974696F6E21200A00000068616E646C655F6D67722D3E68616E646C65735F706F6F6C5B706F6F6C5F69785D2E68616E646C655F6D656D20213D202828766F8A -:40E380006964202A293029007073615F686E646C5F6D67725F68616E646C655F64657374726F79007073615F686E646C5F6D67725F68616E646C655F6765745F6D656D00AC -:40E3C00025732025753A20706172746974696F6E73206973204E554C4C210A00696E69745F706172746974696F6E730025732025753A205349442030782578206973206EC7 -:40E400006F7420616C6C6F77656420746F2062652063616C6C65642066726F6D204E5350450A000025732025753A20506172746974696F6E20256420646964206E6F74205D -:40E440006465636C6172652065787465726E2066756E6374696F6E730A00000025732025753A205349442030782578206973206E6F7420696E20706172746974696F6E20A4 -:40E4800025642065787465726E2066756E6374696F6E73206C6973740A0000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F636F6D706FFB -:40E4C0006E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73706D5F636C69656E742E63006F734F4B203D3D206F735F73746174757D -:40E500007300000028666C61677320262028307838303030303030302929203D3D203000666C616773202620726F745F736572766963652D3E6D61736B0000006D736720A3 -:40E54000213D202828766F6964202A293029000025732025753A20534944203078257820697320696E76616C6964210A0000000025732025753A206D696E6F7220766572F2 -:40E5800073696F6E20256420646F6573206E6F7420636F6D706C79207769746820736964202564206D696E6F722076657273696F6E20256420616E64206D696E6F722070E8 -:40E5C0006F6C6963792025640000000025732025753A2050656E64696E6720636F6E6E656374206D65737361676520697320696E61636365737369626C650A0025732025EA -:40E60000753A20636F756C64206E6F742063726561746520612073656D6170686F726520666F7220636F6E6E656374206D657373616765006368616E6E656C20213D202875 -:40E6400028766F6964202A293029000025732025753A2050656E64696E672063616C6C206D65737361676520697320696E61636365737369626C650A0000000025732025DA -:40E68000753A2050656E64696E6720636C6F7365206D65737361676520697320696E61636365737369626C650A00000025732025753A20436F756C64206E6F742063726512 -:40E6C00061746520612073656D6170686F726520666F7220636C6F7365206D6573736167650000007073615F636F6E6E6563745F6173796E6300000073706D5F76616C6974 -:40E70000646174655F636F6E6E656374696F6E5F616C6C6F776564007073615F636F6E6E656374007073615F63616C6C5F6173796E6300007073615F63616C6C00000000DD -:40E740007073615F636C6F73655F6173796E63007073615F636C6F736500000025732025753A204661696C656420696F7665632056616C69646174696F6E20696E76656323 -:40E780003D28305825702920696E6C656E3D28256429206F75747665633D283058257029206F75746C656E3D282564290A00000025732025753A206368616E6E656C20691A -:40E7C0006E20696E636F72726563742070726F63657373696E672073746174653A202564207768696C65202564206973206578706563746564210A002F686F6D652F6F72DE -:40E8000065636F6830312F637970726573732F6D6265642D6F732F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F5350452F73D2 -:40E84000706D5F636F6D6D6F6E2E63002828766F6964202A29302920213D20726567696F6E5F636F756E74002828766F6964202A29302920213D206163746976655F7468A7 -:40E88000726561645F69640076616C69646174655F696F76656300006368616E6E656C5F73746174655F737769746368000000006368616E6E656C5F73746174655F6173FB -:40E8C000736572740000000053504D5F6368616E6E656C5F706F6F6C0000000053504D5F6163746976655F6D657373616765735F706F6F6C000000002573202D2046616969 -:40E900006C656420746F20637265617465206368616E6E656C206D656D6F727920706F6F6C210A002573202D204661696C656420746F2063726561746520616374697665D7 -:40E94000206D65737361676573206D656D6F727920706F6F6C210A007073615F73706D5F696E69740000000025732025753A206D657373616765206461746120697320698B -:40E980006E61636365737369626C650A0000000025732025753A20696E5F76656320697320696E61636365737369626C650A000025732025753A20696E5F7665635B2564A2 -:40E9C0005D20697320696E61636365737369626C650A000025732025753A206F75745F76656320697320696E61636365737369626C650A0025732025753A206F75745F762A -:40EA000065635B25645D20697320696E61636365737369626C650A0025732025753A20436F756C64206E6F7420616C6C6F6361746520616374697665206D657373616765A8 -:40EA4000000000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D65 -:40EA8000504F4E454E545F5350452F73706D5F7365727665722E63006F734F4B203D3D206F735F73746174757300000025732025753A20446571756575652066726F6D20AC -:40EAC000656D7074792071756575650028666C61677320262028307838303030303030302929203D3D203000666C616773202620726F745F736572766963652D3E6D6173AF -:40EB00006B0000002828766F6964202A29302920213D20637572725F706172746974696F6E00000025732025753A20696E74657272757074206D61736B2030782578206DB2 -:40EB40007573742068617665206F6E6C7920626974732066726F6D2030782578210A00002861737365727465645F7369676E616C73203D3D202861737365727465645F737B -:40EB800069676E616C73202620666C6167735F616C6C2929207C7C2028282830783830303030303030554C2920213D2074696D656F75742920262620283078464646464648 -:40EBC00046464555203D3D2061737365727465645F7369676E616C732929000025732025753A206D736720697320696E61636365737369626C650A0025732025753A20731B -:40EC000069676E756D2030782578206D7573742068617665206F6E6C79203120626974204F4E20616E64206D757374206265206120737562736574206F662030782578217E -:40EC40000A00000025732025753A20666C6167206973206E6F7420616374697665210A0025732025753A205265636569766564207369676E616C2028307825303878292061 -:40EC80007468617420646F6573206E6F74206D6174636820616E7920726F6F74206F66207472757374207365727669636500000025732025753A207073615F676574202DAA -:40ECC00020756E6578706563746564206D65737361676520747970653D3078253038580025732025753A20496E76616C696420696E7665635F6964780A00000025732025DB -:40ED0000753A2062756666657220697320696E61636365737369626C650A000025732025753A20496E76616C6964206F75747665635F6964780A000025732025753A2049B3 -:40ED40006E76616C6964207772697465206F7065726174696F6E20285265717565737465642025642C20417669616C61626C65202564290A000000006163746976655F634F -:40ED800068616E6E656C20213D202828766F6964202A2930290000006163746976655F6368616E6E656C2D3E6D73675F70747220213D202828766F6964202A2930290000EA -:40EDC00025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F72205053415F4950435F434F4E4E4543540000002573202564 -:40EE0000753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F72205053415F4950435F43414C4C000025732025753A207073615F720A -:40EE400065706C792829202D20556E6578706563746564206D65737361676520747970653D3078253038580025732025753A20436F756C64206E6F742066696E642070618E -:40EE800072746974696F6E2028706172746974696F6E5F6964203D202564290A0000000025732025753A207073615F63616C6C28292063616C6C656420776974686F7574CD -:40EEC000207369676E616C656420646F6F7262656C6C0A006163746976655F6D73672D3E6368616E6E656C20213D202828766F6964202A293029000025732025753A20545C -:40EF0000727920746F20636C65617220616E20696E7465727275707420666C616720776974686F7574206465636C6172696E67204952510025732025753A205369676E615F -:40EF40006C202564206E6F7420696E206972712072616E67650A000025732025753A207369676E616C2030782578206D7573742068617665206F6E6C792031206269742083 -:40EF80004F4E210A0000000025732025753A207073615F656F6928292063616C6C656420776974686F7574207369676E616C6564204952510A000000636F70795F6D657317 -:40EFC000736167655F746F5F73706D0073706D5F726F745F736572766963655F71756575655F646571756575650000007073615F77616974000000007073615F6765740020 -:40F00000726561645F6F725F736B6970000000007073615F72656164000000007073615F77726974650000007073615F7265706C79000000515F4D5554000000515F575FF6 -:40F0400053454D00515F525F53454D002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F636F6D706F6E656E74732F5441524745545F505341C1 -:40F080002F73706D2F434F4D504F4E454E545F53504D5F4D41494C424F582F434F4D504F4E454E545F5350452F73706D5F6D61696C626F785F7370652E630000286F734FB1 -:40F0C0004B203D3D206F735F73746174757329207C7C20286F734572726F725265736F75726365203D3D206F735F7374617475732900000025732025753A206D65737361DC -:40F100006765206461746120697320696E61636365737369626C650A0000000066616C736500000071756575655F6D7574657820213D204E554C4C0066756C6C5F71756546 -:40F1400075655F73656D20213D204E554C4C000071756575655F726561645F73656D20213D204E554C4C000034F003100B000000E85D00081C0000003CF0031000000000B1 -:40F18000045E00081000000044F0031000000000145E0008100000006F6E5F706F707065645F6974656D00002F686F6D652F6F7265636F6830312F637970726573732F6D76 -:40F1C0006265642D6F732F636F6D706F6E656E74732F5441524745545F5053412F73706D2F434F4D504F4E454E545F53504D5F4D41494C424F582F6970635F71756575651D -:40F200002E630000717565756520213D204E554C4C000000626173655F71756575655F6D656D20213D204E554C4C0000626173655F71756575655F6D656D2D3E6D616769E3 -:40F2400063203D3D204950435F51554555455F424153455F4D414749430000006D7574657820213D204E554C4C00000066756C6C5F71756575655F73656D20213D204E554F -:40F280004C4C0000726561645F73656D20213D204E554C4C0000000071756575652D3E6D61676963203D3D204950435F51554555455F50524F44554345525F4D414749430F -:40F2C000000000006F734F4B203D3D206F735F737461747573000000286F734F4B203D3D206F735F73746174757329207C7C20286F734572726F7254696D656F7574203DF7 -:40F300003D206F735F737461747573290000000071756575652D3E6D61676963203D3D204950435F51554555455F434F4E53554D45525F4D414749430000000000000000CC -:40F3400000000000A94E0010DD4E0010FD4E00108D500010BB4B0010E150001051510010C1510010D74B00102D5200103F5200107D520010C3520010135300104D5300104C -:40F380000000000000000000000000000000000011D1021011D10210BB4B001011D1021011D10210C74B0010D74B001011D1021011D10210E74B0010074C00102B4C0010FF -:40F3C00011D102100D0000000D0A00002B49504400000000302C434C4F53454400000000312C434C4F53454400000000322C434C4F53454400000000332C434C4F5345448F -:40F4000000000000342C434C4F534544000000002B43574A41503A005749464920000000554E4C494E4B0000414C524541445920434F4E4E45435445440000004552524FCB -:40F4400052000000776474207265736574000000536F667420574454207265736574000062757379200000002B43495052454356444154412C000000415400004F4B0A0021 -:40F48000415445300000000041542B474D52000053444B2076657273696F6E3A25642E25642E25640000000041542076657273696F6E3A25642E25642E25642E25640000C0 -:40F4C00041542B554152545F4355523D25752C382C312C302C30000041542B554152545F4355523D25752C382C312C302C33000041542B554152545F4355523D25752C385F -:40F500002C312C302C32000041542B554152545F4355523D25752C382C312C302C31000041542B43574D4F44455F4355523D25640000000041542B4349504D55583D31008C -:40F5400041542B5253540000726561647900000041542B4357444843505F4355523D25642C25640041542B434950524543564D4F44453D310000000041542B43574A4150EC -:40F580005F4355523D222573222C22257322000041542B43575141500000000041542B4349465352000000002B43494653523A53544149502C222531355B5E225D220000DE -:40F5C0002B43494653523A5354414D41432C222531375B5E225D220041542B4349505354415F4355523F00002B4349505354415F4355523A676174657761793A22253135EA -:40F600005B5E225D220000002B4349505354415F4355523A6E65746D61736B3A222531355B5E225D2200000041542B43574A41505F4355523F0000002B43574A41505F43CB -:40F6400055523A22252A5B5E225D222C222531375B5E225D2200000041542B43574C41503D22222C222573222C0000002B43574C41503A28252A642C22252A5B5E225D220F -:40F680002C256868642C000041542B43574C4150000000005544500041542B43495053544152543D25642C222573222C222573222C25642C2564000041542B4349505354CC -:40F6C0004152543D25642C222573222C222573222C256400455350383236363A3A5F6F70656E5F7564703A20646576696365207265667573656420746F20636C6F7365207C -:40F70000736F636B6574000054435000455350383236363A3A5F6F70656E5F7463703A20646576696365207265667573656420746F20636C6F736520736F636B65740000B6 -:40F7400041542B434950444F4D41494E3D222573220000002B434950444F4D41494E3A2573252A5B0D5D252A5B0A5D0041542B43495053454E443D25642C256C75000000A8 -:40F780003E00000053454E44204F4B002C25642C0000000025640A0025643A0041542B43495052454356444154413D25642C256C7500000041542B434950434C4F53453DC3 -:40F7C000256400002B43574C41503A2825642C222533325B5E225D222C256868642C22256868783A256868783A256868783A256868783A256868783A25686878222C256863 -:40F8000068752C25642C25642C25642C25642C25642C2564290A00002B43574C41503A2825642C222533325B5E225D222C256868642C22256868783A256868783A256868A5 -:40F84000783A256868783A256868783A25686878222C256868752C25642C2564290A000025345B5E225D0A00732E2E2E00000000702E2E2E00000000455350383236363A3C -:40F880003A5F6F6F625F62757379282920756E7265636F676E697A656420627573792073746174650A000000455350383236363A3A5F6F6F625F6275737928292041542088 -:40F8C00074696D656F75740A000000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F636F6D706F6E656E74732F776966692F6573703832CD -:40F9000036362D6472697665722F455350383236362F455350383236362E6370700000005F736F636B5F6163746976655F6964203E3D2030202626205F736F636B5F616398 -:40F94000746976655F6964203C203500256C643A00000000256400004641494C000000002531325B5E225D0A00000000474F542049500A00444953434F4E4E4543540A00B3 -:40F98000434F4E4E45435445440A0000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A20696E76616C696420415420636D640A00000000F3 -:40F9C000455350383236363A3A5F6F6F625F636F6E6E656374696F6E5F7374617475733A206E6574776F726B207374617475732074696D6564206F75740A00005F636F6E28 -:40FA00006E5F737461745F636200000041542B43574D4F44455F4445463F00002B43574D4F44455F4445463A256868640000000041542B43574D4F44455F4445463D25680B -:40FA4000686400002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F706C6174666F726D2F43616C6C6261636B2E6800005F6F707300000000AD -:40FA80002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F706C6174666F726D2F53696E676C65746F6E5074722E6800005F707472203D3D209F -:40FAC0002854202A29265F646174610000000000000000009D5A0010B55A0010D35A001000000000B71DC1046E3B8209D926430DDC7604136B6BC517B24D861A0550471E05 -:40FB0000B8ED08260FF0C922D6D68A2F61CB4B2B649B0C35D386CD310AA08E3CBDBD4F3870DB114CC7C6D0481EE09345A9FD5241ACAD155F1BB0D45BC2969756758B5652E5 -:40FB4000C836196A7F2BD86EA60D9B6311105A6714401D79A35DDC7D7A7B9F70CD665E74E0B6239857ABE29C8E8DA191399060953CC0278B8BDDE68F52FBA582E5E66486A5 -:40FB8000585B2BBEEF46EABA3660A9B7817D68B3842D2FAD3330EEA9EA16ADA45D0B6CA0906D32D42770F3D0FE56B0DD494B71D94C1B36C7FB06F7C32220B4CE953D75CA65 -:40FBC00028803AF29F9DFBF646BBB8FBF1A679FFF4F63EE143EBFFE59ACDBCE82DD07DEC77708634C06D4730194B043DAE56C539AB0682271C1B4323C53D002E7220C12A25 -:40FC0000CF9D8E1278804F16A1A60C1B16BBCD1F13EB8A01A4F64B057DD00808CACDC90C07AB9778B0B6567C69901571DE8DD475DBDD936B6CC0526FB5E6116202FBD066E4 -:40FC4000BF469F5E085B5E5AD17D1D576660DC5363309B4DD42D5A490D0B1944BA16D84097C6A5AC20DB64A8F9FD27A54EE0E6A14BB0A1BFFCAD60BB258B23B69296E2B2A4 -:40FC80002F2BAD8A98366C8E41102F83F60DEE87F35DA9994440689D9D662B902A7BEA94E71DB4E0500075E4892636E93E3BF7ED3B6BB0F38C7671F7555032FAE24DF3FE64 -:40FCC0005FF0BCC6E8ED7DC231CB3ECF86D6FFCB8386B8D5349B79D1EDBD3ADC5AA0FBD8EEE00C6959FDCD6D80DB8E6037C64F643296087A858BC97E5CAD8A73EBB04B77E4 -:40FD0000560D044FE110C54B383686468F2B47428A7B005C3D66C158E4408255535D43519E3B1D252926DC21F0009F2C471D5E28424D1936F550D8322C769B3F9B6B5A3BE3 -:40FD400026D6150391CBD40748ED970AFFF0560EFAA011104DBDD014949B93192386521D0E562FF1B94BEEF5606DADF8D7706CFCD2202BE2653DEAE6BC1BA9EB0B0668EFA3 -:40FD8000B6BB27D701A6E6D3D880A5DE6F9D64DA6ACD23C4DDD0E2C004F6A1CDB3EB60C97E8D3EBDC990FFB910B6BCB4A7AB7DB0A2FB3AAE15E6FBAACCC0B8A77BDD79A363 -:40FDC000C660369B717DF79FA85BB4921F4675961A163288AD0BF38C742DB081C330718599908A5D2E8D4B59F7AB085440B6C95045E68E4EF2FB4F4A2BDD0C479CC0CD4323 -:40FE0000217D827B9660437F4F460072F85BC176FD0B86684A16476C93300461242DC565E94B9B115E565A1587701918306DD81C353D9F0282205E065B061D0BEC1BDC0FE2 -:40FE400051A69337E6BB52333F9D113E8880D03A8DD097243ACD5620E3EB152D54F6D4297926A9C5CE3B68C1171D2BCCA000EAC8A550ADD6124D6CD2CB6B2FDF7C76EEDBA2 -:40FE8000C1CBA1E376D660E7AFF023EA18EDE2EE1DBDA5F0AAA064F4738627F9C49BE6FD09FDB889BEE0798D67C63A80D0DBFB84D58BBC9A62967D9EBBB03E930CADFF9762 -:40FEC000B110B0AF060D71ABDF2B32A66836F3A26D66B4BCDA7B75B8035D36B5B440F7B100000000000000005904001095040010EB5B001000000000000000004D06001023 -:40FF000075060010295C00100000000000000000000000000000000011D10210BE6500108A6500108E65001092650010966500109A6500109E650010A2650010A665001012 -:40FF4000AA650010AE650010B2650010B6650010BA65001010660010EC65001014660010F065001018660010F4650010F8650010FC650010006600100466001008660010A5 -:40FF80000C6600101C6600103A7A00103E7A0010427A0010467A00104A7A00105E7A00105E7A00104E7A0010527A0010567A00105A7A00103EB5001056B5001052B50010B4 -:40FFC0004AB500104EB5001046B500104EB5001042B500104EB500104EB50010505341004B4559005ABC001072BC00106EBC001066BC00106ABC001062BC00106ABC00105D -:020000041004E6 -:400000005EBC00106ABC00106ABC0010637C777BF26B6FC53001672BFED7AB76CA82C97DFA5947F0ADD4A2AF9CA472C0B7FD9326363FF7CC34A5E5F171D8311504C723C31B -:400040001896059A071280E2EB27B27509832C1A1B6E5AA0523BD6B329E32F8453D100ED20FCB15B6ACBBE394A4C58CFD0EFAAFB434D338545F9027F503C9FA851A3408F32 -:40008000929D38F5BCB6DA2110FFF3D2CD0C13EC5F974417C4A77E3D645D197360814FDC222A908846EEB814DE5E0BDBE0323A0A4906245CC2D3AC629195E479E7C8376DD7 -:4000C0008DD54EA96C56F4EA657AAE08BA78252E1CA6B4C6E8DD741F4BBD8B8A703EB5664803F60E613557B986C11D9EE1F8981169D98E949B1E87E9CE5528DF8CA1890D80 -:40010000BFE6426841992D0FB054BB16C66363A5F87C7C84EE777799F67B7B8DFFF2F20DD66B6BBDDE6F6FB191C5C5546030305002010103CE6767A9562B2B7DE7FEFE193C -:40014000B5D7D7624DABABE6EC76769A8FCACA451F82829D89C9C940FA7D7D87EFFAFA15B25959EB8E4747C9FBF0F00B41ADADECB3D4D4675FA2A2FD45AFAFEA239C9CBF1F -:4001800053A4A4F7E47272969BC0C05B75B7B7C2E1FDFD1C3D9393AE4C26266A6C36365A7E3F3F41F5F7F70283CCCC4F6834345C51A5A5F4D1E5E534F9F1F108E2717193A8 -:4001C000ABD8D873623131532A15153F0804040C95C7C752462323659DC3C35E30181828379696A10A05050F2F9A9AB50E070709241212361B80809BDFE2E23DCDEBEB26BB -:400200004E2727697FB2B2CDEA75759F1209091B1D83839E582C2C74341A1A2E361B1B2DDC6E6EB2B45A5AEE5BA0A0FBA45252F6763B3B4DB7D6D6617DB3B3CE5229297BE2 -:40024000DDE3E33E5E2F2F7113848497A65353F5B9D1D16800000000C1EDED2C40202060E3FCFC1F79B1B1C8B65B5BEDD46A6ABE8DCBCB4667BEBED97239394B944A4ADE5D -:40028000984C4CD4B05858E885CFCF4ABBD0D06BC5EFEF2A4FAAAAE5EDFBFB16864343C59A4D4DD766333355118585948A4545CFE9F9F91004020206FE7F7F81A05050F03C -:4002C000783C3C44259F9FBA4BA8A8E3A25151F35DA3A3FE804040C0058F8F8A3F9292AD219D9DBC70383848F1F5F50463BCBCDF77B6B6C1AFDADA7542212163201010302F -:40030000E5FFFF1AFDF3F30EBFD2D26D81CDCD4C180C0C1426131335C3ECEC2FBE5F5FE1359797A2884444CC2E17173993C4C45755A7A7F2FC7E7E827A3D3D47C86464AC3E -:40034000BA5D5DE73219192BE6737395C06060A0198181989E4F4FD1A3DCDC7F44222266542A2A7E3B9090AB0B8888838C4646CAC7EEEE296BB8B8D32814143CA7DEDE79FC -:40038000BC5E5EE2160B0B1DADDBDB76DBE0E03B64323256743A3A4E140A0A1E924949DB0C06060A4824246CB85C5CE49FC2C25DBDD3D36E43ACACEFC46262A6399191A8D4 -:4003C000319595A4D3E4E437F279798BD5E7E7328BC8C8436E373759DA6D6DB7018D8D8CB1D5D5649C4E4ED249A9A9E0D86C6CB4AC5656FAF3F4F407CFEAEA25CA6565AF5C -:40040000F47A7A8E47AEAEE9100808186FBABAD5F07878884A25256F5C2E2E72381C1C2457A6A6F173B4B4C797C6C651CBE8E823A1DDDD7CE874749C3E1F1F21964B4BDD50 -:4004400061BDBDDC0D8B8B860F8A8A85E07070907C3E3E4271B5B5C4CC6666AA904848D806030305F7F6F6011C0E0E12C26161A36A35355FAE5757F969B9B9D017868691C4 -:4004800099C1C1583A1D1D27279E9EB9D9E1E138EBF8F8132B9898B322111133D26969BBA9D9D970078E8E89339494A72D9B9BB63C1E1E2215878792C9E9E92087CECE4965 -:4004C000AA5555FF50282878A5DFDF7A038C8C8F59A1A1F8098989801A0D0D1765BFBFDAD7E6E631844242C6D06868B8824141C3299999B05A2D2D771E0F0F117BB0B0CBEA -:40050000A85454FC6DBBBBD62C16163AA5C6636384F87C7C99EE77778DF67B7B0DFFF2F2BDD66B6BB1DE6F6F5491C5C55060303003020101A9CE67677D562B2B19E7FEFEDB -:4005400062B5D7D7E64DABAB9AEC7676458FCACA9D1F82824089C9C987FA7D7D15EFFAFAEBB25959C98E47470BFBF0F0EC41ADAD67B3D4D4FD5FA2A2EA45AFAFBF239C9C1B -:40058000F753A4A496E472725B9BC0C0C275B7B71CE1FDFDAE3D93936A4C26265A6C3636417E3F3F02F5F7F74F83CCCC5C683434F451A5A534D1E5E508F9F1F193E27171A4 -:4005C00073ABD8D8536231313F2A15150C0804045295C7C7654623235E9DC3C328301818A13796960F0A0505B52F9A9A090E0707362412129B1B80803DDFE2E226CDEBEBB7 -:40060000694E2727CD7FB2B29FEA75751B1209099E1D838374582C2C2E341A1A2D361B1BB2DC6E6EEEB45A5AFB5BA0A0F6A452524D763B3B61B7D6D6CE7DB3B37B522929DE -:400640003EDDE3E3715E2F2F97138484F5A6535368B9D1D1000000002CC1EDED604020201FE3FCFCC879B1B1EDB65B5BBED46A6A468DCBCBD967BEBE4B723939DE944A4A59 -:40068000D4984C4CE8B058584A85CFCF6BBBD0D02AC5EFEFE54FAAAA16EDFBFBC5864343D79A4D4D5566333394118585CF8A454510E9F9F90604020281FE7F7FF0A0505038 -:4006C00044783C3CBA259F9FE34BA8A8F3A25151FE5DA3A3C08040408A058F8FAD3F9292BC219D9D4870383804F1F5F5DF63BCBCC177B6B675AFDADA63422121302010102B -:400700001AE5FFFF0EFDF3F36DBFD2D24C81CDCD14180C0C352613132FC3ECECE1BE5F5FA2359797CC884444392E17175793C4C4F255A7A782FC7E7E477A3D3DACC864643A -:40074000E7BA5D5D2B32191995E67373A0C0606098198181D19E4F4F7FA3DCDC664422227E542A2AAB3B9090830B8888CA8C464629C7EEEED36BB8B83C28141479A7DEDEF8 -:40078000E2BC5E5E1D160B0B76ADDBDB3BDBE0E0566432324E743A3A1E140A0ADB9249490A0C06066C482424E4B85C5C5D9FC2C26EBDD3D3EF43ACACA6C46262A8399191D0 -:4007C000A431959537D3E4E48BF2797932D5E7E7438BC8C8596E3737B7DA6D6D8C018D8D64B1D5D5D29C4E4EE049A9A9B4D86C6CFAAC565607F3F4F425CFEAEAAFCA656558 -:400800008EF47A7AE947AEAE18100808D56FBABA88F078786F4A2525725C2E2E24381C1CF157A6A6C773B4B45197C6C623CBE8E87CA1DDDD9CE87474213E1F1FDD964B4B4C -:40084000DC61BDBD860D8B8B850F8A8A90E07070427C3E3EC471B5B5AACC6666D89048480506030301F7F6F6121C0E0EA3C261615F6A3535F9AE5757D069B9B991178686C0 -:400880005899C1C1273A1D1DB9279E9E38D9E1E113EBF8F8B32B989833221111BBD2696970A9D9D989078E8EA7339494B62D9B9B223C1E1E9215878720C9E9E94987CECE61 -:4008C000FFAA5555785028287AA5DFDF8F038C8CF859A1A180098989171A0D0DDA65BFBF31D7E6E6C6844242B8D06868C3824141B0299999775A2D2D111E0F0FCB7BB0B0E6 -:40090000FCA85454D66DBBBB3A2C161663A5C6637C84F87C7799EE777B8DF67BF20DFFF26BBDD66B6FB1DE6FC55491C5305060300103020167A9CE672B7D562BFE19E7FED7 -:40094000D762B5D7ABE64DAB769AEC76CA458FCA829D1F82C94089C97D87FA7DFA15EFFA59EBB25947C98E47F00BFBF0ADEC41ADD467B3D4A2FD5FA2AFEA45AF9CBF239C17 -:40098000A4F753A47296E472C05B9BC0B7C275B7FD1CE1FD93AE3D93266A4C26365A6C363F417E3FF702F5F7CC4F83CC345C6834A5F451A5E534D1E5F108F9F17193E271A0 -:4009C000D873ABD831536231153F2A15040C0804C75295C723654623C35E9DC31828301896A13796050F0A059AB52F9A07090E0712362412809B1B80E23DDFE2EB26CDEBB3 -:400A000027694E27B2CD7FB2759FEA75091B1209839E1D832C74582C1A2E341A1B2D361B6EB2DC6E5AEEB45AA0FB5BA052F6A4523B4D763BD661B7D6B3CE7DB3297B5229DA -:400A4000E33EDDE32F715E2F8497138453F5A653D168B9D100000000ED2CC1ED20604020FC1FE3FCB1C879B15BEDB65B6ABED46ACB468DCBBED967BE394B72394ADE944A55 -:400A80004CD4984C58E8B058CF4A85CFD06BBBD0EF2AC5EFAAE54FAAFB16EDFB43C586434DD79A4D335566338594118545CF8A45F910E9F9020604027F81FE7F50F0A05034 -:400AC0003C44783C9FBA259FA8E34BA851F3A251A3FE5DA340C080408F8A058F92AD3F929DBC219D38487038F504F1F5BCDF63BCB6C177B6DA75AFDA216342211030201027 -:400B0000FF1AE5FFF30EFDF3D26DBFD2CD4C81CD0C14180C13352613EC2FC3EC5FE1BE5F97A2359744CC884417392E17C45793C4A7F255A77E82FC7E3D477A3D64ACC86436 -:400B40005DE7BA5D192B32197395E67360A0C060819819814FD19E4FDC7FA3DC226644222A7E542A90AB3B9088830B8846CA8C46EE29C7EEB8D36BB8143C2814DE79A7DEF4 -:400B80005EE2BC5E0B1D160BDB76ADDBE03BDBE0325664323A4E743A0A1E140A49DB9249060A0C06246C48245CE4B85CC25D9FC2D36EBDD3ACEF43AC62A6C46291A83991CC -:400BC00095A43195E437D3E4798BF279E732D5E7C8438BC837596E376DB7DA6D8D8C018DD564B1D54ED29C4EA9E049A96CB4D86C56FAAC56F407F3F4EA25CFEA65AFCA6554 -:400C00007A8EF47AAEE947AE08181008BAD56FBA7888F078256F4A252E725C2E1C24381CA6F157A6B4C773B4C65197C6E823CBE8DD7CA1DD749CE8741F213E1F4BDD964B48 -:400C4000BDDC61BD8B860D8B8A850F8A7090E0703E427C3EB5C471B566AACC6648D8904803050603F601F7F60E121C0E61A3C261355F6A3557F9AE57B9D069B986911786BC -:400C8000C15899C11D273A1D9EB9279EE138D9E1F813EBF898B32B981133221169BBD269D970A9D98E89078E94A733949BB62D9B1E223C1E87921587E920C9E9CE4987CE5D -:400CC00055FFAA5528785028DF7AA5DF8C8F038CA1F859A1898009890D171A0DBFDA65BFE631D7E642C6844268B8D06841C3824199B029992D775A2D0F111E0FB0CB7BB0E2 -:400D000054FCA854BBD66DBB163A2C166363A5C67C7C84F8777799EE7B7B8DF6F2F20DFF6B6BBDD66F6FB1DEC5C5549130305060010103026767A9CE2B2B7D56FEFE19E7D3 -:400D4000D7D762B5ABABE64D76769AECCACA458F82829D1FC9C940897D7D87FAFAFA15EF5959EBB24747C98EF0F00BFBADADEC41D4D467B3A2A2FD5FAFAFEA459C9CBF2313 -:400D8000A4A4F753727296E4C0C05B9BB7B7C275FDFD1CE19393AE3D26266A4C36365A6C3F3F417EF7F702F5CCCC4F8334345C68A5A5F451E5E534D1F1F108F9717193E29C -:400DC000D8D873AB3131536215153F2A04040C08C7C7529523236546C3C35E9D181828309696A13705050F0A9A9AB52F0707090E1212362480809B1BE2E23DDFEBEB26CDAF -:400E00002727694EB2B2CD7F75759FEA09091B1283839E1D2C2C74581A1A2E341B1B2D366E6EB2DC5A5AEEB4A0A0FB5B5252F6A43B3B4D76D6D661B7B3B3CE7D29297B52D6 -:400E4000E3E33EDD2F2F715E848497135353F5A6D1D168B900000000EDED2CC120206040FCFC1FE3B1B1C8795B5BEDB66A6ABED4CBCB468DBEBED96739394B724A4ADE9451 -:400E80004C4CD4985858E8B0CFCF4A85D0D06BBBEFEF2AC5AAAAE54FFBFB16ED4343C5864D4DD79A33335566858594114545CF8AF9F910E9020206047F7F81FE5050F0A030 -:400EC0003C3C44789F9FBA25A8A8E34B5151F3A2A3A3FE5D4040C0808F8F8A059292AD3F9D9DBC2138384870F5F504F1BCBCDF63B6B6C177DADA75AF212163421010302023 -:400F0000FFFF1AE5F3F30EFDD2D26DBFCDCD4C810C0C141813133526ECEC2FC35F5FE1BE9797A2354444CC881717392EC4C45793A7A7F2557E7E82FC3D3D477A6464ACC832 -:400F40005D5DE7BA19192B32737395E66060A0C0818198194F4FD19EDCDC7FA3222266442A2A7E549090AB3B8888830B4646CA8CEEEE29C7B8B8D36B14143C28DEDE79A7F0 -:400F80005E5EE2BC0B0B1D16DBDB76ADE0E03BDB323256643A3A4E740A0A1E144949DB9206060A0C24246C485C5CE4B8C2C25D9FD3D36EBDACACEF436262A6C49191A839C8 -:400FC0009595A431E4E437D379798BF2E7E732D5C8C8438B3737596E6D6DB7DA8D8D8C01D5D564B14E4ED29CA9A9E0496C6CB4D85656FAACF4F407F3EAEA25CF6565AFCA50 -:401000007A7A8EF4AEAEE94708081810BABAD56F787888F025256F4A2E2E725C1C1C2438A6A6F157B4B4C773C6C65197E8E823CBDDDD7CA174749CE81F1F213E4B4BDD9644 -:40104000BDBDDC618B8B860D8A8A850F707090E03E3E427CB5B5C4716666AACC4848D89003030506F6F601F70E0E121C6161A3C235355F6A5757F9AEB9B9D06986869117B8 -:40108000C1C158991D1D273A9E9EB927E1E138D9F8F813EB9898B32B111133226969BBD2D9D970A98E8E89079494A7339B9BB62D1E1E223C87879215E9E920C9CECE498759 -:4010C0005555FFAA28287850DFDF7AA58C8C8F03A1A1F859898980090D0D171ABFBFDA65E6E631D74242C6846868B8D04141C3829999B0292D2D775A0F0F111EB0B0CB7BDE -:401100005454FCA8BBBBD66D16163A2C52096AD53036A538BF40A39E81F3D7FB7CE339829B2FFF87348E4344C4DEE9CB547B9432A6C2233DEE4C950B42FAC34E082EA166EB -:4011400028D924B2765BA2496D8BD12572F8F66486689816D4A45CCC5D65B6926C704850FDEDB9DA5E154657A78D9D8490D8AB008CBCD30AF7E45805B8B34506D02C1E8FBF -:40118000CA3F0F02C1AFBD0301138A6B3A9111414F67DCEA97F2CFCEF0B4E67396AC7422E7AD3585E2F937E81C75DF6E47F11A711D29C5896FB7620EAA18BE1BFC563E4BBF -:4011C000C6D279209ADBC0FE78CD5AF41FDDA8338807C731B11210592780EC5F60517FA919B54A0D2DE57A9F93C99CEFA0E03B4DAE2AF5B0C8EBBB3C83539961172B047EA9 -:40120000BA77D626E169146355210C7D51F4A7507E4165531A17A4C33A275E963BAB6BCB1F9D45F1ACFA58AB4BE303932030FA55AD766DF688CC7691F5024C254FE5D7FCB7 -:40124000C52ACBD726354480B562A38FDEB15A4925BA1B6745EA0E985DFEC0E1C32F7502814CF0128D4697A36BD3F9C6038F5FE715929C95BF6D7AEB955259DAD4BE832D32 -:40128000587421D349E069298EC9C84475C2896AF48E797899583E6B27B971DDBEE14FB6F088AD17C920AC667DCE3AB463DF4A18E51A31829751336062537F45B16477E021 -:4012C000BB6BAE84FE81A01CF9082B94704868588F45FD1994DE6C87527BF8B7AB73D323724B02E2E31F8F576655AB2AB2EB28072FB5C20386C57B9AD33708A5302887F2CE -:4013000023BFA5B202036ABAED16825C8ACF1C2BA779B492F307F2F04E69E2A165DAF4CD0605BED5D134621FC4A6FE8A342E539DA2F355A0058AE132A4F6EB750B83EC390D -:401340004060EFAA5E719F06BD6E10513E218AF996DD063DDD3E05AE4DE6BD4691548DB571C45D050406D46F605015FF1998FB24D6BDE997894043CC67D99E77B0E842BD22 -:4013800007898B88E7195B3879C8EEDBA17C0A477C420FE9F8841EC90000000009808683322BED481E1170AC6C5A724EFD0EFFFB0F8538563DAED51E362D39270A0FD96453 -:4013C000685CA6219B5B54D124362E3A0C0A67B19357E70FB4EE96D21B9B919E80C0C54F61DC20A25A774B691C121A16E293BA0AC0A02AE53C22E043121B171D0E090D0B99 -:40140000F28BC7AD2DB6A8B9141EA9C857F11985AF75074CEE99DDBBA37F60FDF701269F5C72F5BC44663BC55BFB7E348B432976CB23C6DCB6EDFC68B8E4F163D731DCCA49 -:40144000426385101397224084C61120854A247DD2BB3DF8AEF93211C729A16D1D9E2F4BDCB230F30D8652EC77C1E3D02BB3166CA970B999119448FA47E96422A8FC8CC493 -:40148000A0F03F1A567D2CD8223390EF87494EC7D938D1C18CCAA2FE98D40B36A6F581CFA57ADE28DAB78E263FADBFA42C3A9DE45078920D6A5FCC9B547E4662F68D13C279 -:4014C00090D8B8E82E39F75E82C3AFF59F5D80BE69D0937C6FD52DA9CF2512B3C8AC993B10187DA7E89C636EDB3BBB7BCD2678096E5918F4EC9AB701834F9AA8E6956E65CE -:40150000AAFFE67E21BCCF08EF15E8E6BAE79BD94A6F36CEEA9F09D429B07CD631A4B2AF2A3F2331C6A5943035A266C0744EBC37FC82CAA6E090D0B033A7D815F104984A65 -:4015400041ECDAF77FCD500E1791F62F764DD68D43EFB04DCCAA4D54E49604DF9ED1B5E34C6A881BC12C1FB84665517F9D5EEA04018C355DFA877473FB0B412EB3671D5A18 -:4015800092DBD252E91056336DD647139AD7618C37A10C7A59F8148EEB133C89CEA927EEB761C935E11CE5ED7A47B13C9CD2DF5955F2733F1814CE7973C737BF53F7CDEAA7 -:4015C0005FFDAA5BDF3D6F147844DB86CAAFF381B968C43E3824342CC2A3405F161DC372BCE2250C283C498BFF0D954139A80171080CB3DED8B4E49C6456C1907BCB846173 -:40160000D532B670486C5C74D0B857425051F4A7537E4165C31A17A4963A275ECB3BAB6BF11F9D45ABACFA58934BE303552030FAF6AD766D9188CC7625F5024CFC4FE5D7CE -:40164000D7C52ACB802635448FB562A349DEB15A6725BA1B9845EA0EE15DFEC002C32F7512814CF0A38D4697C66BD3F9E7038F5F9515929CEBBF6D7ADA9552592DD4BE832E -:40168000D35874212949E069448EC9C86A75C28978F48E796B99583EDD27B971B6BEE14F17F088AD66C920ACB47DCE3A1863DF4A82E51A31609751334562537FE0B164771D -:4016C00084BB6BAE1CFE81A094F9082B58704868198F45FD8794DE6CB7527BF823AB73D3E2724B0257E31F8F2A6655AB07B2EB28032FB5C29A86C57BA5D33708F2302887CA -:40170000B223BFA5BA02036A5CED16822B8ACF1C92A779B4F0F307F2A14E69E2CD65DAF4D50605BE1FD134628AC4A6FE9D342E53A0A2F35532058AE175A4F6EB390B83EC09 -:40174000AA4060EF065E719F51BD6E10F93E218A3D96DD06AEDD3E05464DE6BDB591548D0571C45D6F0406D4FF605015241998FB97D6BDE9CC8940437767D99EBDB0E8421E -:401780008807898B38E7195BDB79C8EE47A17C0AE97C420FC9F8841E000000008309808648322BEDAC1E11704E6C5A72FBFD0EFF560F85381E3DAED527362D39640A0FD94F -:4017C00021685CA6D19B5B543A24362EB10C0A670F9357E7D2B4EE969E1B9B914F80C0C5A261DC20695A774B161C121A0AE293BAE5C0A02A433C22E01D121B170B0E090D95 -:40180000ADF28BC7B92DB6A8C8141EA98557F1194CAF7507BBEE99DDFDA37F609FF70126BC5C72F5C544663B345BFB7E768B4329DCCB23C668B6EDFC63B8E4F1CAD731DC45 -:4018400010426385401397222084C6117D854A24F8D2BB3D11AEF9326DC729A14B1D9E2FF3DCB230EC0D8652D077C1E36C2BB31699A970B9FA1194482247E964C4A8FC8C8F -:401880001AA0F03FD8567D2CEF223390C787494EC1D938D1FE8CCAA23698D40BCFA6F58128A57ADE26DAB78EA43FADBFE42C3A9D0D5078929B6A5FCC62547E46C2F68D1375 -:4018C000E890D8B85E2E39F7F582C3AFBE9F5D807C69D093A96FD52DB3CF25123BC8AC99A710187D6EE89C637BDB3BBB09CD2678F46E591801EC9AB7A8834F9A65E6956ECA -:401900007EAAFFE60821BCCFE6EF15E8D9BAE79BCE4A6F36D4EA9F09D629B07CAF31A4B2312A3F2330C6A594C035A26637744EBCA6FC82CAB0E090D01533A7D84AF1049861 -:40194000F741ECDA0E7FCD502F1791F68D764DD64D43EFB054CCAA4DDFE49604E39ED1B51B4C6A88B8C12C1F7F466551049D5EEA5D018C3573FA87742EFB0B415AB3671D14 -:401980005292DBD233E91056136DD6478C9AD7617A37A10C8E59F81489EB133CEECEA92735B761C9EDE11CE53C7A47B1599CD2DF3F55F273791814CEBF73C737EA53F7CDA3 -:4019C0005B5FFDAA14DF3D6F867844DB81CAAFF33EB968C42C3824345FC2A34072161DC30CBCE2258B283C4941FF0D957139A801DE080CB39CD8B4E4906456C1617BCB846F -:401A000070D532B674486C5C42D0B857A75051F465537E41A4C31A175E963A276BCB3BAB45F11F9D58ABACFA03934BE3FA5520306DF6AD76769188CC4C25F502D7FC4FE5CA -:401A4000CBD7C52A44802635A38FB5625A49DEB11B6725BA0E9845EAC0E15DFE7502C32FF012814C97A38D46F9C66BD35FE7038F9C9515927AEBBF6D59DA9552832DD4BE2A -:401A800021D35874692949E0C8448EC9896A75C27978F48E3E6B995871DD27B94FB6BEE1AD17F088AC66C9203AB47DCE4A1863DF3182E51A336097517F45625377E0B16419 -:401AC000AE84BB6BA01CFE812B94F90868587048FD198F456C8794DEF8B7527BD323AB7302E2724B8F57E31FAB2A66552807B2EBC2032FB57B9A86C508A5D33787F23028C6 -:401B0000A5B223BF6ABA0203825CED161C2B8ACFB492A779F2F0F307E2A14E69F4CD65DABED50605621FD134FE8AC4A6539D342E55A0A2F3E132058AEB75A4F6EC390B8305 -:401B4000EFAA40609F065E711051BD6E8AF93E21063D96DD05AEDD3EBD464DE68DB591545D0571C4D46F040615FF6050FB241998E997D6BD43CC89409E7767D942BDB0E81A -:401B80008B8807895B38E719EEDB79C80A47A17C0FE97C421EC9F8840000000086830980ED48322B70AC1E11724E6C5AFFFBFD0E38560F85D51E3DAE3927362DD9640A0F4B -:401BC000A621685C54D19B5B2E3A243667B10C0AE70F935796D2B4EE919E1B9BC54F80C020A261DC4B695A771A161C12BA0AE2932AE5C0A0E0433C22171D121B0D0B0E0991 -:401C0000C7ADF28BA8B92DB6A9C8141E198557F1074CAF75DDBBEE9960FDA37F269FF701F5BC5C723BC544667E345BFB29768B43C6DCCB23FC68B6EDF163B8E4DCCAD73141 -:401C40008510426322401397112084C6247D854A3DF8D2BB3211AEF9A16DC7292F4B1D9E30F3DCB252EC0D86E3D077C1166C2BB3B999A97048FA1194642247E98CC4A8FC8B -:401C80003F1AA0F02CD8567D90EF22334EC78749D1C1D938A2FE8CCA0B3698D481CFA6F5DE28A57A8E26DAB7BFA43FAD9DE42C3A920D5078CC9B6A5F4662547E13C2F68D71 -:401CC000B8E890D8F75E2E39AFF582C380BE9F5D937C69D02DA96FD512B3CF25993BC8AC7DA71018636EE89CBB7BDB3B7809CD2618F46E59B701EC9A9AA8834F6E65E695C6 -:401D0000E67EAAFFCF0821BCE8E6EF159BD9BAE736CE4A6F09D4EA9F7CD629B0B2AF31A423312A3F9430C6A566C035A2BC37744ECAA6FC82D0B0E090D81533A7984AF1045D -:401D4000DAF741EC500E7FCDF62F1791D68D764DB04D43EF4D54CCAA04DFE496B5E39ED1881B4C6A1FB8C12C517F4665EA049D5E355D018C7473FA87412EFB0B1D5AB36710 -:401D8000D25292DB5633E91047136DD6618C9AD70C7A37A1148E59F83C89EB1327EECEA9C935B761E5EDE11CB13C7A47DF599CD2733F55F2CE79181437BF73C7CDEA53F79F -:401DC000AA5B5FFD6F14DF3DDB867844F381CAAFC43EB968342C3824405FC2A3C372161D250CBCE2498B283C9541FF0D017139A8B3DE080CE49CD8B4C190645684617BCB6B -:401E0000B670D5325C74486C5742D0B8F4A750514165537E17A4C31A275E963AAB6BCB3B9D45F11FFA58ABACE303934B30FA5520766DF6ADCC769188024C25F5E5D7FC4FC6 -:401E40002ACBD7C53544802662A38FB5B15A49DEBA1B6725EA0E9845FEC0E15D2F7502C34CF012814697A38DD3F9C66B8F5FE703929C95156D7AEBBF5259DA95BE832DD426 -:401E80007421D358E0692949C9C8448EC2896A758E7978F4583E6B99B971DD27E14FB6BE88AD17F020AC66C9CE3AB47DDF4A18631A3182E551336097537F45626477E0B115 -:401EC0006BAE84BB81A01CFE082B94F94868587045FD198FDE6C87947BF8B75273D323AB4B02E2721F8F57E355AB2A66EB2807B2B5C2032FC57B9A863708A5D32887F230C2 -:401F0000BFA5B223036ABA0216825CEDCF1C2B8A79B492A707F2F0F369E2A14EDAF4CD6505BED50634621FD1A6FE8AC42E539D34F355A0A28AE13205F6EB75A483EC390B01 -:401F400060EFAA40719F065E6E1051BD218AF93EDD063D963E05AEDDE6BD464D548DB591C45D057106D46F045015FF6098FB2419BDE997D64043CC89D99E7767E842BDB016 -:401F8000898B8807195B38E7C8EEDB797C0A47A1420FE97C841EC9F800000000808683092BED48321170AC1E5A724E6C0EFFFBFD8538560FAED51E3D2D3927360FD9640A47 -:401FC0005CA621685B54D19B362E3A240A67B10C57E70F93EE96D2B49B919E1BC0C54F80DC20A261774B695A121A161C93BA0AE2A02AE5C022E0433C1B171D12090D0B0E8D -:402000008BC7ADF2B6A8B92D1EA9C814F119855775074CAF99DDBBEE7F60FDA301269FF772F5BC5C663BC544FB7E345B4329768B23C6DCCBEDFC68B6E4F163B831DCCAD73D -:402040006385104297224013C61120844A247D85BB3DF8D2F93211AE29A16DC79E2F4B1DB230F3DC8652EC0DC1E3D077B3166C2B70B999A99448FA11E9642247FC8CC4A887 -:40208000F03F1AA07D2CD8563390EF22494EC78738D1C1D9CAA2FE8CD40B3698F581CFA67ADE28A5B78E26DAADBFA43F3A9DE42C78920D505FCC9B6A7E4662548D13C2F66D -:4020C000D8B8E89039F75E2EC3AFF5825D80BE9FD0937C69D52DA96F2512B3CFAC993BC8187DA7109C636EE83BBB7BDB267809CD5918F46E9AB701EC4F9AA883956E65E6C2 -:40210000FFE67EAABCCF082115E8E6EFE79BD9BA6F36CE4A9F09D4EAB07CD629A4B2AF313F23312AA59430C6A266C0354EBC377482CAA6FC90D0B0E0A7D8153304984AF159 -:40214000ECDAF741CD500E7F91F62F174DD68D76EFB04D43AA4D54CC9604DFE4D1B5E39E6A881B4C2C1FB8C165517F465EEA049D8C355D01877473FA0B412EFB671D5AB30C -:40218000DBD25292105633E9D647136DD7618C9AA10C7A37F8148E59133C89EBA927EECE61C935B71CE5EDE147B13C7AD2DF599CF2733F5514CE7918C737BF73F7CDEA539B -:4021C000FDAA5B5F3D6F14DF44DB8678AFF381CA68C43EB924342C38A3405FC21DC37216E2250CBC3C498B280D9541FFA80171390CB3DE08B4E49CD856C19064CB84617B67 -:4022000032B670D56C5C7448B85742D001000000020000000400000008000000100000002000000040000000800000001B000000360000007F7F7F7F7F7F7F7F7F7F7F7F88 -:402240007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3E7F7F7F3F3435363738393A3B3C3D7F7F7F407F7F7F000102030405060708090A5D -:402280000B0C0D0E0F101112131415161718197F7F7F7F7F7F1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132337F7F7F7F7F0200000081380110AD380110F0 -:4022C000E3380110000000002F390110113901104D3901107B3901104145532D3132382D454342004145532D3139322D454342004145532D3235362D454342004145532DB1 -:402300003132382D434243004145532D3139322D434243004145532D3235362D434243004145532D3132382D435452004145532D3139322D435452004145532D3235362D9F -:40234000435452004145532D3132382D47434D004145532D3139322D47434D004145532D3235362D47434D004145532D3132382D43434D004145532D3139322D43434D003F -:402380004145532D3235362D43434D0043484143484132300000000043484143484132302D504F4C59313330350000000201000080000000D82204100000000000000000BB -:4023C00010000000B422041003010000C0000000E4220410000000000000000010000000B42204100401000000010000F0220410000000000000000010000000B4220410E5 -:402400000502000080000000FC220410100000000000000010000000B422041006020000C000000008230410100000000000000010000000B42204100702000000010000BE -:4024400014230410100000000000000010000000B42204100B0500008000000020230410100000000000000010000000B42204100C050000C00000002C23041010000000D2 -:402480000000000010000000B42204100D0500000001000038230410100000000000000010000000B4220410020000000000000000000000000000000000000097390110B3 -:4024C00097390110F9370110233801100E06000080000000442304100C0000000100000010000000A82404100F060000C0000000502304100C0000000100000010000000C9 -:40250000A824041010060000000100005C2304100C0000000100000010000000A82404100200000000000000000000000000000000000000B5390110B53901103F3801108C -:40254000653801102B08000080000000682304100C0000000100000010000000202504102C080000C0000000742304100C0000000100000010000000202504102D0800009B -:4025800000010000802304100C000000010000001000000020250410090000000000000000000000000000000D3A0110D5390110D5390110413A01106B3A011048070000BD -:4025C000000100008C2304100C0000000000000001000000982504100900000000000000000000000000000000000000893A0110893A0110C13A0110EB3A0110490A0000F3 -:4026000000010000982304100C0000000000000001000000D825041002000000AC23041003000000C823041004000000E42304100500000000240410060000001C2404100F -:4026400007000000382404100B000000542404100C000000702404100D0000008C2404100E000000CC2404100F000000E824041010000000042504102B0000004425041091 -:402680002C000000602504102D0000007C25041048000000BC25041049000000FC2504100000000000000000736563703338347231000000736563703235367231000000E0 -:4026C000202045435020746573742023312028636F6E7374616E74206F705F636F756E742C206261736520706F696E742047293A200000006661696C656420282575290AA0 -:40270000000000007061737365640A00202045435020746573742023322028636F6E7374616E74206F705F636F756E742C206F7468657220706F696E74293A20000000002E -:40274000556E6578706563746564206572726F722C2072657475726E20636F6465203D20253038580A0000000A00000030303030303030303030303030303030303030301D -:402780003030303030303030303030303030303030303030303030303030303100000000464646464646464646464646464646464646464646464646393944454638333666 -:4027C0003134364243394231423444323238333000000000354541364633383941333842384243383145373637373533423135414135353639453137383245333041424553 -:4028000037443235000000003430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030300000000037464646A9 -:402840004646464646464646464646464646464646464646464646464646464646464646464646464646464646464646000000003535353535353535353535353535353500 -:402880003535353535353535353535353535353535353535353535353535353535353535000000006C270410A0270410D4270410082804103C280410702804100400180063 -:4028C00080010000A82604100300170000010000B4260410000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000001000000FFFFFFFF7B -:402900004B60D2273E3CCE3BF6B053CCB0061D65BC86987655BDEBB3E7933AAAD835C65A96C298D84539A1F4A033EB2D817D0377F240A463E5E6BCF847422CE1F2D1176B17 -:40294000F551BF376840B6CBCE5E316B5733CE2B169E0F7C4AEBE78E9B7F1AFEE242E34F512563FCC2CAB9F3849E17A7ADFAE6BCFFFFFFFFFFFFFFFF00000000FFFFFFFF0C -:40298000FFFFFFFF0000000000000000FFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF2AECD3EDC8852A9DD12E8A8D3956C6FC -:4029C0005A8713508F081403124181FE6E9C1D18192DF8E36B058E98E4E73EE2A72F31B3B70A7672385E543A6C2955BF5DF20255382A5482E041F759989BA78B623B1D6E26 -:402A000074AD20F31EC7B18E37058BBE22CA87AA5F0EEA907C1D437A9D817E1DCEB1600AC0B8F0B51331DAE97C149A28BD1DF4F829DC9292BF989E5D6F2C26964ADE17363A -:402A40007329C5CC6A19ECEC7AA7B048B20D1A58DF2D37F4814D63C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303144423432000031344445463944452A -:402A8000413246373943443635383132363331413543463544334544000000003938414100000000383333354443313633424231323442363531323943393646444539335A -:402AC00033443844373233413730414144433837334436443534413742423044000000000000000000000000201C0000000000004038000000000000602400000000000025 -:402B00008070000000000000A06C000000000000C048000000000000E05400000000000000E100000000000020FD00000000000040D900000000000060C500000000000021 -:402B40008091000000000000A08D000000000000C0A9000000000000E0B500000000000053484132323400005348413235360000534841333834000053484135313200003D -:402B800005000000602B04101C00000040000000DBC30110F3C3011011C401102DC401104BC4011071C401108DC40110A7C4011006000000682B0410200000004000000066 -:402BC000C3C40110F3C3011011C40110DBC401104BC4011071C401108DC40110A7C4011007000000702B04103000000080000000F9C4011011C501102FC501104BC501105B -:402C000069C501108FC50110ABC50110C5C5011008000000782B04104000000080000000E1C5011011C501102FC50110F9C5011069C501108FC50110ABC50110C5C5011023 -:402C40005504030069642D61742D636F6D6D6F6E4E616D6500000000436F6D6D6F6E204E616D6500434E00005504060069642D61742D636F756E7472794E616D6500000067 -:402C8000436F756E74727900430000005504070069642D61742D6C6F63616C69747900004C6F63616C697479000000004C0000005504080069642D61742D73746174650015 -:402CC00053746174650000005354000055040A0069642D61742D6F7267616E697A6174696F6E4E616D6500004F7267616E697A6174696F6E000000004F00000055040B008F -:402D000069642D61742D6F7267616E697A6174696F6E616C556E69744E616D65000000004F726720556E6974000000004F5500002A864886F70D010901000000656D6169DF -:402D40006C4164647265737300000000452D6D61696C206164647265737300005504050069642D61742D73657269616C4E756D626572000053657269616C206E756D62652C -:402D80007200000073657269616C4E756D626572000000005504100069642D61742D706F7374616C4164647265737300506F7374616C20616464726573730000706F7374BB -:402DC000616C416464726573730000005504110069642D61742D706F7374616C436F646500000000506F7374616C20636F646500706F7374616C436F646500005504040033 -:402E000069642D61742D7375724E616D650000005375726E616D6500534E000055042A0069642D61742D676976656E4E616D6500476976656E206E616D650000474E0000D7 -:402E400055042B0069642D61742D696E697469616C730000496E697469616C7300000000696E697469616C730000000055042C0069642D61742D67656E65726174696F6E2E -:402E80005175616C696669657200000047656E65726174696F6E207175616C69666965720000000067656E65726174696F6E5175616C69666965720055040C0069642D61F4 -:402EC000742D7469746C65005469746C650000007469746C6500000055042E0069642D61742D646E5175616C696669657200000044697374696E67756973686564204E61D1 -:402F00006D65207175616C696669657200000000646E5175616C6966696572005504410069642D61742D70736575646F6E796D0050736575646F6E796D000000707365756E -:402F4000646F6E796D0000000992268993F22C640119000069642D646F6D61696E436F6D706F6E656E740000446F6D61696E20636F6D706F6E656E740000000044430000BA -:402F800055042D0069642D61742D756E697175654964656E7469666965720000556E69717565204964656E746966696572000000756E697175654964656E746966696572C1 -:402FC00000000000551D130069642D63652D6261736963436F6E73747261696E74730000426173696320436F6E73747261696E7473000000551D0F0069642D63652D6B65E9 -:4030000079557361676500004B6579205573616765000000551D250069642D63652D6578744B65795573616765000000457874656E646564204B6579205573616765000060 -:40304000551D110069642D63652D7375626A656374416C744E616D65000000005375626A65637420416C74204E616D65000000006086480186F842010100000069642D6E41 -:40308000657473636170652D6365727474797065000000004E6574736361706520436572746966696361746520547970650000002B060105050703010000000069642D6B6A -:4030C000702D7365727665724175746800000000544C5320576562205365727665722041757468656E7469636174696F6E0000002B060105050703020000000069642D6BB5 -:40310000702D636C69656E744175746800000000544C532057656220436C69656E742041757468656E7469636174696F6E0000002B060105050703030000000069642D6BA3 -:40314000702D636F64655369676E696E67000000436F6465205369676E696E67000000002B060105050703040000000069642D6B702D656D61696C50726F74656374696FD1 -:403180006E000000452D6D61696C2050726F74656374696F6E0000002B060105050703080000000069642D6B702D74696D655374616D70696E67000054696D65205374612C -:4031C0006D70696E670000002B060105050703090000000069642D6B702D4F4353505369676E696E670000004F435350205369676E696E67000000002A864886F70D0101B7 -:403200000E00000073686132323457697468525341456E6372797074696F6E005253412077697468205348412D323234000000002A864886F70D01010B000000736861327F -:40324000353657697468525341456E6372797074696F6E005253412077697468205348412D323536000000002A864886F70D01010C00000073686133383457697468525302 -:4032800041456E6372797074696F6E005253412077697468205348412D333834000000002A864886F70D01010D00000073686135313257697468525341456E63727970744C -:4032C000696F6E005253412077697468205348412D353132000000002A8648CE3D0403010000000065636473612D776974682D534841323234000000454344534120776910 -:403300007468205348413232340000002A8648CE3D0403020000000065636473612D776974682D5348413235360000004543445341207769746820534841323536000000AD -:403340002A8648CE3D0403030000000065636473612D776974682D53484133383400000045434453412077697468205348413338340000002A8648CE3D04030400000000CA -:4033800065636473612D776974682D53484135313200000045434453412077697468205348413531320000002A864886F70D01010A0000005253415353412D505353000035 -:4033C0002A864886F70D010101000000727361456E6372797074696F6E000000525341002A8648CE3D02010069642D65635075626C69634B6579000047656E6572696320C4 -:403400004543206B657900002B8104010C00000069642D65634448004543206B657920666F722045434448002A8648CE3D030107000000007365637032353672310000000B -:403440002B810400220000007365637033383472310000002B0E03020700000064657343424300004445532D434243002A864886F70D0307000000006465732D656465331D -:403480002D636263000000004445532D454445332D4342430000000060864801650304020400000069642D7368613232340000005348412D3232340060864801650304020B -:4034C0000100000069642D7368613235360000005348412D3235360060864801650304020200000069642D7368613338340000005348412D33383400608648016503040299 -:403500000300000069642D7368613531320000005348412D353132002A864886F70D020800000000686D61635348413232340000484D41432D5348412D3232340000000099 -:403540002A864886F70D020900000000686D61635348413235360000484D41432D5348412D323536000000002A864886F70D020A00000000686D616353484133383400001E -:40358000484D41432D5348412D333834000000002A864886F70D020B00000000686D61635348413531320000484D41432D5348412D3531320000000025642E25640000005A -:4035C0002E256400C033041009000000CC330410DC33041001000000E033041007000000E8330410F83304100200000008340410050000001034041018340410030000001F -:403600000000000000000000000000000000000000000000283404100800000034340410343404100300000040340410050000004834041048340410040000000000000066 -:40364000000000000000000000000000000000009834041009000000A4340410B034041005000000B834041009000000C4340410D034041006000000D8340410090000001C -:40368000E4340410F034041007000000F834041009000000043504101035041008000000000000000000000000000000000000000000000050726F632D547970653A2034B7 -:4036C0002C454E4352595054454400007273612E4E0000007273612E450000005253410065636B65792E51004543000045435F444800000045434453410000005253412D91 -:40370000616C740001000000DC360410A9CB01107FCB0110C5CB01103DCC011089CC0110D5CC011025CD011041CD01106BCD011089CD011002000000E836041005CE011084 -:40374000D1CD011013CE011071CE01100000000000000000D7CE0110F3CE011019CF011035CF011003000000EC36041005CE01105DCF011000000000000000000000000068 -:4037800000000000D7CE0110F3CE011019CF011035CF011004000000F436041005CE011087CF0110A5CF0110E9CF01100000000000000000D7CE011025D001104BD00110B0 -:4037C00035CF01102D2D2D2D2D454E44205253412050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E205253412050524956415445204B45592D2DE7 -:403800002D2D2D002D2D2D2D2D454E442045432050524956415445204B45592D2D2D2D2D000000002D2D2D2D2D424547494E2045432050524956415445204B45592D2D2DC3 -:403840002D2D00002D2D2D2D2D454E442050524956415445204B45592D2D2D2D2D0000002D2D2D2D2D424547494E2050524956415445204B45592D2D2D2D2D002D2D2D2DF2 -:403880002D454E4420525341205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E20525341205055424C4943204B45592D2D2D2D2D00002D2D2D2D6C -:4038C0002D454E44205055424C4943204B45592D2D2D2D2D000000002D2D2D2D2D424547494E205055424C4943204B45592D2D2D2D2D0000020305070B0D1113171D1F2527 -:40390000292B2F353B3D4347494F53596165676B6D717F83898B95979DA3A7ADB3B5BFC1C5C7D3DFE3E5E9EFF1FB0000982F8A4291443771CFFBC0B5A5DBB5E95BC2563972 -:40394000F111F159A4823F92D55E1CAB98AA07D8015B8312BE853124C37D0C55745DBE72FEB1DE80A706DC9B74F19BC1C1699BE48647BEEFC69DC10FCCA10C246F2CE92D28 -:40398000AA84744ADCA9B05CDA88F97652513E986DC631A8C82703B0C77F59BFF30BE0C64791A7D55163CA0667292914850AB72738211B2EFC6D2C4D130D385354730A6519 -:4039C000BB0A6A762EC9C281852C7292A1E8BFA24B661AA8708B4BC2A3516CC719E892D1240699D685350EF470A06A1016C1A419086C371E4C774827B5BCB034B30C1C396C -:403A00004AAAD84E4FCA9C5BF36F2E68EE828F746F63A5781478C8840802C78CFAFFBE90EB6C50A4F7A3F9BEF27871C60000000022AE28D7982F8A42CD65EF239144377126 -:403A40002F3B4DECCFFBC0B5BCDB8981A5DBB5E938B548F35BC2563919D005B6F111F1599B4F19AFA4823F9218816DDAD55E1CAB420203A398AA07D8BE6F7045015B831280 -:403A80008CB2E44EBE853124E2B4FFD5C37D0C556F897BF2745DBE72B196163BFEB1DE803512C725A706DC9B942669CF74F19BC1D24AF19EC1699BE4E3254F388647BEEF81 -:403AC000B5D58C8BC69DC10F659CAC77CCA10C2475022B596F2CE92D83E4A66EAA84744AD4FB41BDDCA9B05CB5531183DA88F976ABDF66EE52513E981032B42D6DC631A8CD -:403B00003F21FB98C82703B0E40EEFBEC77F59BFC28FA83DF30BE0C625A70A934791A7D56F8203E05163CA06706E0E0A67292914FC2FD246850AB72726C9265C38211B2E7E -:403B4000ED2AC45AFC6D2C4DDFB3959D130D3853DE63AF8B54730A65A8B2773CBB0A6A76E6AEED472EC9C2813B358214852C72926403F14CA1E8BFA2013042BC4B661AA86F -:403B80009197F8D0708B4BC230BE5406A3516CC71852EFD619E892D110A96555240699D62A20715785350EF4B8D1BB3270A06A10C8D0D2B816C1A41953AB4151086C371E22 -:403BC00099EB8EDF4C774827A8489BE1B5BCB034635AC9C5B30C1C39CB8A41E34AAAD84E73E363774FCA9C5BA3B8B2D6F36F2E68FCB2EF5DEE828F74602F17436F63A5788F -:403C000072ABF0A11478C884EC39641A0802C78C281E6323FAFFBE90E9BD82DEEB6C50A41579C6B2F7A3F9BE2B5372E3F27871C69C6126EACE3E27CA07C2C021C7B886D145 -:403C40001EEBE0CDD67DDAEA78D16EEE7F4F7DF5BA6F1772AA67F006A698C8A2C57D630AAE0DF9BE04983F111B471C13350B711B847D0423F577DB289324C7407BABCA3250 -:403C8000BCBEC9150ABE9E3C4C0D109CC4671D43B6423ECBBED4C54C2A7E65FC9C297F59ECFAD63AAB6FCB5F1758474A8C19446C2F686F6D652F6F7265636F6830312F6327 -:403CC0007970726573732F6D6265642D6F732F66656174757265732F73746F726167652F626C6F636B6465766963652F4275666665726564426C6F636B4465766963652E31 -:403D0000637070005F77726974655F6361636865000000005F77726974655F6361636865202626205F726561645F62756600000069735F76616C69645F6572617365286120 -:403D40006464722C2073697A652900000000000000000000AD6F0210D56F0210F36F0210D77002100972021075720210AD7502106178021025790210E5790210F779021041 -:403D8000097A0210437A0210897A0210C17A02106B7600002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F706C6174666F726D2F53696E6712 -:403DC0006C65746F6E5074722E6800005F707472203D3D202854202A29265F64617461000000000000000000000000000000000011D1021011D1021011D1021011D1021088 -:403E000011D1021011D1021011D1021011D1021011D1021011D1021011D1021011D1021011D10210202A2F3F3A3B227C3C3E5C006B7673746F726500202A2F3F3A3B227C74 -:403E40003C3E5C005444425300000000556E6465726C79696E67204244206D757374206861766520666C61736820617474726962757465730000000054444253544F5245CF -:403E80003A20556E61626C6520746F2072656164207265636F726420617420696E69740054444253544F52453A20556E61626C652072657365742061726561206174206998 -:403EC0006E69740054444253544F52453A20556E61626C6520746F207772697465206D6173746572207265636F726420617420696E69740054444253544F52453A20556E79 -:403F000061626C6520746F207265736574206172656120617420696E6974000054444253544F52453A20556E61626C6520746F206275696C642052414D207461626C652092 -:403F4000617420696E69740054444253544F52453A20556E61626C6520746F20636865636B207768657468657220657261736520756E697420697320657261736564206127 -:403F80007420696E6974000054444253544F52453A20556E61626C6520746F20706572666F726D20474320617420696E6974000054444253544F52453A20556E61626C65F8 -:403FC00020746F2073796E6320424420617420696E697400000000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F647269766572732F4DD2 -:404000006265644352432E680000000063726320213D204E554C4C004000000000000000000000004D880210898802102D9D0210D1A10210A5A2021021950210CD95021097 -:404040008D960210A59502106D8F0210519202103193021055A3021055A4021091A5021065A6021011A902102F686F6D652F6F7265636F6830312F637970726573732F6DE4 -:404080006265642D6F732F68616C2F6D6265645F637269746963616C5F73656374696F6E5F6170692E630000216172655F696E74657272757074735F656E61626C65642809 -:4040C000290000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F54415247455444 -:404100005F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E68002F686F6D652F6F7265636F6830312F6386 -:404140007970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6770696F5F6F626A6563742E6852 -:40418000000000006F626A2D3E70696E20213D204E430000636F756C64206E6F742070696E6F75740000000070696E6D6170206D69732D6D617463680000000070696E6DC0 -:4041C0006170206E6F7420666F756E6420666F72207065726970686572616C0070696E6D6170206E6F7420666F756E6420666F722066756E6374696F6E00000044656570F1 -:40420000536C6565704C6F636B206F766572666C6F7720283E2055534852545F4D4158290000000044656570536C6565704C6F636B20756E646572666C6F7720283C2030F4 -:40424000290000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F68616C2F6D6265645F7469636B65725F6170692E630000000030000000B9 -:404280006D617463685F7469636B20213D2071756575652D3E7469636B5F6C6173745F7265616400016B0310FD6B0310816C03108D6C0310256C0310A56C0310C16B0310F3 -:4042C000B96C0310A4420410E86700080000000000000000000000000000000011D1021011D1021011D1021011D10210A5BE0210B1BE0210635E0010815E0010BDBE021022 -:40430000DD5A0010FF5A00101B5B0010375B00105B5B0010675B00107B5B00102F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F7461726765EF -:4043400074732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F637947 -:404380005F6770696F2E68002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F544138 -:4043C000524745545F50534F43362F6770696F5F6F626A6563742E68000000006F626A2D3E70696E20213D204E4300002E2E2E0A000000002F686F6D652F6F7265636F6840 -:4044000030312F637970726573732F6D6265642D6F732F706C6174666F726D2F6D6265645F637269746963616C2E6300637269746963616C5F73656374696F6E5F7265653D -:404440006E7472616E63795F636F756E746572203C2055494E5433325F4D415800000000466174616C2052756E2D74696D65206572726F72000000003C756E6E616D6564F1 -:404480003E0000000A0A2B2B204D6265644F53204572726F7220496E666F202B2B0A4572726F72205374617475733A203078255820436F64653A202564204D6F64756C6593 -:4044C0003A2025640A4572726F72204D6573736167653A20000000004B65726E656C204572726F723A203078256C582C200000005468726561643A203078256C582C200035 -:404500004D757465783A203078256C582C20000053656D6170686F72653A203078256C582C2000004D656D6F7279506F6F6C3A203078256C582C20004576656E74466C61F7 -:4045400067733A203078256C582C200054696D65723A203078256C582C2000004D65737361676551756575653A203078256C582C20000000417373657274696F6E20666152 -:40458000696C65643A2000000A4C6F636174696F6E3A203078256C58000000000A46696C653A20002B2564000A4572726F722056616C75653A203078256C58000A437572ED -:4045C00072656E74205468726561643A202573202049643A203078256C5820456E7472793A203078256C5820537461636B53697A653A203078256C5820537461636B4D653F -:404600006D3A203078256C582053503A203078256C5820000A466F72206D6F726520696E666F2C2076697369743A2068747470733A2F2F61726D6D6265642E6769746875BD -:40464000622E696F2F6D6265646F732D6572726F722F3F6572726F723D307825303858000A2D2D204D6265644F53204572726F7220496E666F202D2D0A00000052C602104E -:4046800062C6021072C6021082C6021092C60210B2C60210A2C60210C2C60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210DCC60210C0 -:4046C000DCC60210DCC60210D2C6021052616D2065786563757465206E65766572206C6F636B206F766572666C6F7720283E2055534852545F4D41582900000052616D20EE -:4047000065786563757465206E65766572206C6F636B20756E646572666C6F7720283C2030290000526F6D207772697465206E65766572206C6F636B206F766572666C6FEB -:404740007720283E2055534852545F4D41582900526F6D207772697465206E65766572206C6F636B20756E646572666C6F7720283C203029000000004572726F72202D202C -:4047800077726974696E6720746F20612066696C6520696E20616E20495352206F7220637269746963616C2073656374696F6E0D0A0000000D0000004572726F72202D20A1 -:4047C00072656164696E672066726F6D20612066696C6520696E20616E20495352206F7220637269746963616C2073656374696F6E0D0A00457863657074696F6E0000008F -:404800002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F706C6174666F726D2F6D6265645F72657461726765742E63707000000030203D3D2F -:4048400020282A67756172645F6F626A6563742026204358415F47554152445F4D41534B290000004358415F47554152445F494E49545F494E5F50524F4752455353203DAD -:404880003D20282A67756172645F6F626A6563742026204358415F47554152445F4D41534B2900004F70657261746F72206E6577206F7574206F66206D656D6F72790D0AA5 -:4048C000000000004F70657261746F72206E65775B5D206F7574206F66206D656D6F72790D0A00002F686F6D652F6F7265636F6830312F637970726573732F6D6265642DF9 -:404900006F732F706C6174666F726D2F53696E676C65746F6E5074722E6800005F707472203D3D202854202A29265F6461746100000000000000000085D30210A5D30210E2 -:4049400021CA0210DDC9021039C9021065C90210A5BE021059C90210635E0010815E00104BC90210DD5A0010FF5A00101B5B0010375B00105B5B001055CA02107B5B0010EA -:4049800044657072656361746564206265686176696F723A206D696C6C692D7365632064656C61792073686F756C64206E6F74206265207573656420696E20696E7465727D -:4049C000727570742E0A0000776169745F757320626C6F636B73206465657020736C6565702C20776169745F6D73207265636F6D6D656E64656420666F72206C6F6E6720E9 -:404A000064656C6179730A0061706C69636174696F6E5F756E6E616D65645F6D75746578000000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642DD9 -:404A40006F732F72746F732F4D757465782E6370700000005F6964004D75746578206C6F636B206661696C65640000004D7574657820756E6C6F636B206661696C656400D9 -:404A80006D616C6C6F635F6D7574657800000000656E765F6D7574657800000073696E676C65746F6E5F6D75746578006D61696E00000000507265206D61696E20746872AD -:404AC000656164206E6F742063726561746564004661696C656420746F2073746172742052544F5300000000434D5349532D52544F53206572726F723A20537461636B2077 -:404B00006F766572666C6F7700000000434D5349532D52544F53206572726F723A20495352205175657565206F766572666C6F7700000000434D5349532D52544F53206549 -:404B400072726F723A20557365722054696D65722043616C6C6261636B205175657565206F766572666C6F7700000000434D5349532D52544F53206572726F723A20535431 -:404B80004420432F432B2B206C696272617279206C69627370616365206E6F7420617661696C61626C650000434D5349532D52544F53206572726F723A2053544420432FC7 -:404BC000432B2B206C696272617279206D7574657820696E697469616C697A6174696F6E206661696C656400434D5349532D52544F53206572726F723A20556E6B6E6F770D -:404C00006E000000556E7370656369666965642052544F53206572726F7200004F7065726174696F6E206E6F7420636F6D706C657465642077697468696E2074686520743E -:404C4000696D656F757420706572696F640000005265736F75726365206E6F7420617661696C61626C650000506172616D65746572206572726F720053797374656D20698B -:404C800073206F7574206F66206D656D6F7279004E6F7420616C6C6F77656420696E2049535220636F6E746578740000556E6B6E6F776E004AD80210FAD702100AD80210FD -:404CC0001AD802102AD802103AD80210BAD80210B6D80210B2D80210AED80210AAD80210A6D802105254582056352E342E3000007274785F69646C65000000007274785F5B -:404D000074696D657200000003000000E803000005000000A4690008100000000000000000000000000000000000000000000000000000000000000000000000000000003A -:404D40000000000000000000000000000000000000000000000000000000000000100000A84D0410CC4D0410F04D0410040000000000000000000000000000000000000098 -:404D800000000000000000000000000000000000000000000000000000000000000000000000000000000000F04C041000000000E469000844000000706A00080002000026 -:404DC000010000000100000000000000FC4C041000000000286A000844000000706C0008000300002800000001000000000000000000000000000000706F0008340000004C -:404E0000A46F0008500000000000000004040310A003031004040310B403031004040310C8030310DC030310F00303102F686F6D652F6F7265636F6830312F637970726526 -:404E400073732F6D6265642D6F732F72746F732F546869735468726561642E63707000002128666C6167732026206F73466C6167734572726F72290028666C616773203D9F -:404E80003D206F73466C6167734572726F7254696D656F7574202626206D696C6C6973656320213D206F7357616974466F726576657229207C7C2028666C616773203D3DD9 -:404EC000206F73466C6167734572726F725265736F75726365202626206D696C6C69736563203D3D20302900737461747573203D3D206F734F4B0000020000000000614003 -:404F00001200000000010000000068401207000000050000000066401205000000060000000064401203000004060000000067401206000000070000000065401204000091 -:404F4000000800000000654012040000000900000000634012020000000A00000000624012010000000B00000000664012050000000C00000000674012060000000D00004F -:404F80000000674012060000FFFF0000FFFFFFFF00000000030000000000614012001500010100000000684012071500010500000000664012051500010600000000644012 -:404FC00012031500050600000000674012061500010700000000654012041500010800000000654012041500010900000000634012021500010A000000006240120115004C -:40500000010B00000000664012051500010C00000000674012061500010D00000000674012061500FFFF0000FFFFFFFF00000000841A03108A1A0310901A0310961A0310ED -:405040009E1A03100300000001000000010000000000000005036000040000000100000000000000010000000604600008000000C8710008051F03100800000001000000FF -:40508000020000000200000008080003090000000100000000000000030000000909000308000000A8710008911E03100A0000000100000004000000040000000A0A000C99 -:4050C0000B0000000100000000000000050000000B0B000C1000000068710008A51E03102F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F741D -:405100006172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F73797335 -:40514000636C6B2F63795F737973636C6B2E680000127A0000E1F50500000000000000000000010000001000000000502F686F6D652F6F7265636F6830312F63797072655A -:4051800073732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F70653B -:4051C000726970686572616C2F6970632F63795F6970635F6472762E680000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F7461726765CE -:4052000074732F5441524745545F437970726573732F5441524745545F50534F43362F5441524745545F4655545552455F53455155414E415F4D305F5053412F73706D5FEF -:40524000696E69745F6170692E6300002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F43797072657366 -:40528000732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E680000002F686F6DCE -:4052C000652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6471 -:4053000065766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E68002F686F6D652F6F7265636F6830312F637970726573732F6D8F -:405340006265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F70657269706848 -:405380006572616C2F6770696F2F63795F6770696F2E63002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F544152474500 -:4053C000545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E3F -:40540000680000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F544152474554B1 -:405440005F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E630000002F686F6D652F6F7265636F6866 -:4054800030312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F6472B2 -:4054C00069766572732F7065726970686572616C2F6970632F63795F6970635F6472762E680000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642DC2 -:405500006F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C3A -:405540002F6970632F63795F6970635F706970652E6300002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745BB -:40558000545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6970632F63795F6970635F6472762E7D -:4055C000680000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F544152474554F0 -:405600005F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F636F6D6D6F6E2E68000000002F686F6D652F6F7209 -:4056400065636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963BB -:40568000652F647269766572732F7065726970686572616C2F7363622F63795F7363625F756172742E6800002F686F6D652F6F7265636F6830312F637970726573732F6D86 -:4056C0006265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706572697068C5 -:405700006572616C2F7363622F63795F7363625F756172742E6300002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F546E -:4057400041524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F737973616E616C6F672F63F4 -:40578000795F737973616E616C6F672E630000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F43797F -:4057C00070726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F737973696E742F63795F737973696E742E630016 -:4058000090460310A6460310BC460310D2460310E8460310FE460310144703102A4703102F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F741D -:405840006172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F737973EE -:40588000706D2F63795F737973706D2E630000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F4379A4 -:4058C00070726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E68002F686F6D93 -:40590000652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6727 -:4059400070696F5F6170692E630000006F626A006F626A2D3E706F72740000006F626A2D3E70696E20213D204E43000043595F50494E286F626A2D3E70696E29203C20381F -:40598000000000004750494F2070696E207265736572766174696F6E20636F6E666C6963742E00003E54031062540310685403106E540310745403105C5403107A5403104E -:4059C0002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F03 -:405A000043362F6465766963652F647269766572732F7065726970686572616C2F6770696F2F63795F6770696F2E6800565803107A58031080580310865803108C580310BF -:405A40007458031092580310547279696E6720746F2072657365727665206E6F6E206578697374696E6720706F72742F70696E2100000000547279696E6720746F206672C4 -:405A800065652077726F6E6720706F72742F70696E2E00002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F544152474585 -:405AC000545F437970726573732F5441524745545F50534F43362F70736F63365F7574696C732E63000000006469765F74797065203C2043595F4E554D5F44495649444530 -:405B0000525F5459504553006469765F6E756D203C3D20705F616C6C6F632D3E6D61785F696E646578000000547279696E6720746F2072656C656173652077726F6E672084 -:405B4000636C6F636B20646976696465722E0000705F616C6C6F632D3E63757272656E745F696E646578203C20705F616C6C6F632D3E6D61785F696E6465780054727969FF -:405B80006E6720746F2072656C656173652077726F6E67205343422E00000000547279696E6720746F2072656C656173652077726F6E6720544350574D2E00006368616E58 -:405BC0006E656C5F6964000063686E203C204E554D5F4E5649435F4348414E4E454C53004E564943206368616E6E656C2063726F73732D636865636B206661696C65642018 -:405C00006F6E2072656C656173652E00000000FC063F0BFD000000000000000000000000FEFF000001000000FEFF00002F686F6D652F6F7265636F6830312F6379707265DA -:405C400073732F6D6265642D6F732F746172676574732F5441524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F706570 -:405C8000726970686572616C2F6770696F2F63795F6770696F2E68002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F545E -:405CC00041524745545F437970726573732F5441524745545F50534F43362F6465766963652F647269766572732F7065726970686572616C2F7363622F63795F7363625F99 -:405D0000636F6D6D6F6E2E68000000002F686F6D652F6F7265636F6830312F637970726573732F6D6265642D6F732F746172676574732F5441524745545F4379707265735A -:405D4000732F5441524745545F50534F43362F73657269616C5F6170692E630073657269616C5F6964203C204E554D5F53455249414C5F504F525453000000006F626A00AE -:405D800053657269616C3A2063616E6E6F742061737369676E20636C6F636B20646976696465722E0000000053657269616C2054582F52582070696E20726573657276611C -:405DC00074696F6E20636F6E666C6963742E000053657269616C205254532070696E207265736572766174696F6E20636F6E666C6963742E0000000053657269616C204334 -:405E000054532070696E207265736572766174696F6E20636F6E666C6963742E0000000053657269616C2070696E6F7574206D69736D617463682E205265717565737465B1 -:405E4000642070696E7320527820616E642054782063616E2774206265207573656420666F72207468652073616D652053657269616C20636F6D6D756E69636174696F6E72 -:405E80002E00000040420F002000000000005A0003000000FFFFFFFF00000000000000000000000000000000000000000000000000000000020000000000000000000000A8 -:405EC0000000000000000000000000000000000000000000000000000300000001000000504D2063616C6C6261636B20726567697374726174696F6E206661696C656421D3 -:405F0000000000004D6963726F7365636F6E64207469636B6572204E564943206368616E6E656C207265736572766174696F6E20636F6E666C6963742E0000001006000870 -:405F400043000000504F5349580000002E000000908E0310048F0310048F0310748E0310048F0310048F0310048F0310048F0310048F0310048F03107C8E03105E89031090 -:405F8000048F03101889031068890310048F0310B48903109E8B03109E8B03109E8B03109E8B03109E8B03109E8B03109E8B03109E8B03109E8B0310048F0310048F031025 -:405FC000048F0310048F0310048F0310048F0310048F0310048F0310048F0310048F0310BC890310048B0310048F0310048B0310048F0310048F0310048F0310048F031097 -:40600000CE8B0310048F0310048F0310D68B0310048F0310048F0310048F0310048F0310048F0310788C0310048F0310048F0310AA8C0310048F0310048F0310048F031058 -:40604000048F0310048F0310048F0310048F0310048F0310048F0310048F0310A48D0310D88D0310048B0310048B0310048B0310EA8D0310D88D0310048F0310048F0310A6 -:40608000F28D0310048F03100C8D0310D28E0310488E0310428D0310048F03104A8D0310048F0310A08E0310048F0310048F0310028E0310494E4600696E66004E414E0061 -:4060C0006E616E0030313233343536373839414243444546000000003031323334353637383961626364656600000000286E756C6C29000030000000202020202020202023 -:40610000202020202020202030303030303030303030303030303030002020202020202020202828282828202020202020202020202020202020202020881010101010104F -:406140001010101010101010100404040404040404040410101010101010414141414141010101010101010101010101010101010101010110101010101042424242424271 -:406180000202020202020202020202020202020202020202101010102000000000000000000000000000000000000000000000000000000000000000000000000000000057 -:4061C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009F -:4062000000000000000000000000000000000000000000000000000000000000496E66696E697479000000004E614E00000000000080E03779C34143176E05B5B5B893463B -:40624000F5F93FE9034F384D321D30F94877825A3CBF737FDD4F1575000000000000F03F000000000000244000000000000059400000000000408F40000000000088C340B5 -:4062800000000000006AF8400000000080842E4100000000D01263410000000084D797410000000065CDCD41000000205FA00242000000E876483742000000A2941A6D424F -:4062C000000040E59C30A2420000901EC4BCD64200003426F56B0C430080E03779C3414300A0D8855734764300C84E676DC1AB43003D9160E458E143408CB5781DAF15449D -:4063000050EFE2D6E41A4B4492D54D06CFF08044F64AE1C7022DB544B49DD9794378EA4405000000190000007D00000000C60310E2C503109CC50310BAC403109CC5031059 -:40634000D4C503109CC50310BAC40310E2C50310E2C50310D4C50310BAC40310B2C40310B2C40310B2C4031018C8031060CE031020CD031020CD03101CCD031038CE0310D7 -:4063800038CE03102ACE03101CCD031038CE03102ACE031038CE03101CCD031040CE031040CE031040CE031044D00310000000000000001000000008C0000000D8630410D3 -:4063C000C0000008A8130000A8140008A86F0000509DFB7F0100000000000000DCDC031000000000C854000844000000C81400080040000018000000000000000000000068 -:40640000000F000010000000000000000100000001000000010000000000000000000000010F00002000000000000000010000000100000001000000000000000000000007 -:40644000020F000040000000000000000100000001000000010000000000000000000000030F00008000000000000000010000000100000001000000000000000000000033 -:40648000040F000000010000000000000100000001000000010000000000000000000000050F000000020000000000000100000001000000010000000000000000000000AC -:4064C000060F000000040000000000000100000001000000010000000000000000000000070F0000000800000000000001000000010000000100000000000000000000005F -:40650000080F000000100000000000000100000001000000010000000000000000000000090F000000200000000000000100000001000000010000000000000000000000F6 -:406540000A0F00000040000000000000010000000100000001000000000000000000000060E00310000000008059000844000000805500080004000018000000000000004E -:4065800000000000001A010010000000000000000100000000000000010000000000000000000000011A010020000000000000000100000000000000010000000000000070 -:4065C00000000000021A010040000000000000000100000000000000010000000000000000000000031A01008000000000000000010000000000000001000000000000009C -:40660000000000002300000000000000F07F000000000000000000000B00000088DD03100400000000000000000000000A00000000000000F0000000000000000000000047 -:406640000400000000000000000000000000000000000000C8E8031000000000705B000824000000805A0008F0000000DCE8031000000000C45D000824000000345C0008CE -:40668000900100000000000000000000000000000A000000E0590008000000000A000000945B00080000000000000000245E00083C5E0008010000006D7B0310443E04103F -:4066C000AFBC0210FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029 -:406700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059 -:406740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019 -:4067800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9 -:4067C0000000000050840008F1D90210E44C0410C08CFB02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054 -:406800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058 -:4068400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080F0FA0200E1F50580F0FA0200127A00D9 -:4068800080F0FA0250C30000320000000000A86102FF0000FF0000000000000000000000000000000700000002000000FF0000000F00000000000000FFFF00000300000006 -:4068C00000000000FFFF00000000000000000000FFFF000001000000000000000100000000000000000000000000000000000000000000000000000000000000000000009A -:406900000000384000000000BD6A03100100000007000000E40500080000000000000000100600080000000000000000FC08000864090008CC090008000000000000000030 -:406940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017 -:4069800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7 -:4069C0000000000000000000000000000000000001000000000000000E33CDAB34126DE6ECDE05000B0000000000000000000000000000000000000000000000000000006A -:406A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056 -:406A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016 -:406A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6 -:406AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096 -:406B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055 -:406B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015 -:406B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D5 -:406BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095 -:406C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054 -:406C40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014 -:406C800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4 -:406CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094 -:406D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053 -:406D4000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000008D -:406D8000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000004D -:406DC000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000000D -:406E0000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000D19E031051790310000000001861041023 -:406E40004C5F0410D4600410D4600410D4600410D4600410D4600410D4600410D4600410D4600410D4600410FFFFFFFFFFFFFFFFFFFFFFFFFFFF000001004153434949006F -:406E80000000000000000000000000000000000000000000000000000000415343494900000000000000000000000000000000000000000000000000000000000000000069 -:406EC00000000000A40B0008A40B0008AC0B0008AC0B0008B40B0008B40B0008BC0B0008BC0B0008C40B0008C40B0008CC0B0008CC0B0008D40B0008D40B0008DC0B000851 -:406F0000DC0B0008E40B0008E40B0008EC0B0008EC0B0008F40B0008F40B0008FC0B0008FC0B0008040C0008040C00080C0C00080C0C0008140C0008140C00081C0C00085A -:406F40001C0C0008240C0008240C00082C0C00082C0C0008340C0008340C00083C0C00083C0C0008440C0008440C00084C0C00084C0C0008540C0008540C00085C0C000811 -:406F80005C0C0008640C0008640C00086C0C00086C0C0008740C0008740C00087C0C00087C0C0008840C0008840C00088C0C00088C0C0008940C0008940C00089C0C0008D1 -:406FC0009C0C0008A40C0008A40C0008AC0C0008AC0C0008B40C0008B40C0008BC0C0008BC0C0008C40C0008C40C0008CC0C0008CC0C0008D40C0008D40C0008DC0C000891 -:40700000DC0C0008E40C0008E40C0008EC0C0008EC0C0008F40C0008F40C0008FC0C0008FC0C0008040D0008040D00080C0D00080C0D0008140D0008140D00081C0D000849 -:407040001C0D0008240D0008240D00082C0D00082C0D0008340D0008340D00083C0D00083C0D0008440D0008440D00084C0D00084C0D0008540D0008540D00085C0D000800 -:407080005C0D0008640D0008640D00086C0D00086C0D0008740D0008740D00087C0D00087C0D0008840D0008840D00088C0D00088C0D0008940D0008940D00089C0D0008C0 -:4070C0009C0D0008A40D0008A40D0008AC0D0008AC0D0008B40D0008B40D0008BC0D0008BC0D0008C40D0008C40D0008CC0D0008CC0D0008D40D0008D40D0008DC0D000880 -:40710000DC0D0008E40D0008E40D0008EC0D0008EC0D0008F40D0008F40D0008FC0D0008FC0D0008040E0008040E00080C0E00080C0E0008140E0008140E00081C0E000838 -:407140001C0E0008240E0008240E00082C0E00082C0E0008340E0008340E00083C0E00083C0E0008440E0008440E00084C0E00084C0E0008540E0008540E00085C0E0008EF -:407180005C0E0008640E0008640E00086C0E00086C0E0008740E0008740E00087C0E00087C0E0008840E0008840E00088C0E00088C0E0008940E0008940E00089C0E0008AF -:4071C0009C0E0008A40E0008A40E0008AC0E0008AC0E0008B40E0008B40E0008BC0E0008BC0E0008C40E0008C40E0008CC0E0008CC0E0008D40E0008D40E0008DC0E00086F -:40720000DC0E0008E40E0008E40E0008EC0E0008EC0E0008F40E0008F40E0008FC0E0008FC0E0008040F0008040F00080C0F00080C0F0008140F0008140F00081C0F000827 -:407240001C0F0008240F0008240F00082C0F00082C0F0008340F0008340F00083C0F00083C0F0008440F0008440F00084C0F00084C0F0008540F0008540F00085C0F0008DE -:407280005C0F0008640F0008640F00086C0F00086C0F0008740F0008740F00087C0F00087C0F0008840F0008840F00088C0F00088C0F0008940F0008940F00089C0F00089E -:4072C0009C0F0008FFFFFFFF00000200E9000010096F0210C10000100000000000B585B00190019B0393039B5B78FF2B37D100F01FFA03000293042000F02AFA0300180045 -:4073000000F0EEF903001A00164B1A60164B00221A60154B1B685B015B4201229A40134B1A60104B1B685A680F4B1B689B00D2180F4B1A600E4B1B680D4A126811680B4A7F -:4073400012680A431A60C046094B1B681A68074B1B681340F8D1029B180000F001FAC04605B000BD0072000804720008087200080C72000800B589B001900091444B07932B -:40738000002000F0E5F9030005930023069300F0BFF9020013236B44033A51424A411A7013236B441B7801225340DBB2002B02D00023079331E0062000F0CAF9030018009A -:4073C00000F09EF903001A0001235340DBB2002B23D0002000F07CF902002E4B9A421CD02D4A00230021012000F0AAF9031E14D102E0069B01330693002000F069F9020086 -:40740000244B9A4203D0069B244A9342F1D9069B224A934201D800230793079B002B33D100F086F903000393002000F091F91C4B1A00012100F09CF9031E13D1019B002BA1 -:4074400006D1009B180000F02FF8164B07930BE0C046059B1B69002BFBDB00F061F90300079301E00A4B079313236B441B78002B06D0C0460121002000F03AF9031EF9D1D4 -:40748000039B180000F06CF9079B180009B000BD050052000101880078050008EF490200F07100080100500084B00190019B1B041B0CDB000393039B002B1DD0104B3E22AE -:4074C0001A60104B104A1A60104AA323DB000621D1500E49039B1B021B0A0D4A8B500B4A0B4BD358DB0F012213400393C046074A074BD358002BFADAC04604B07047C04621 -:4075000004012640080126401E1F0000000026401C05000010B582B002006B4607331A70C046414B1B68002BFBDA3F4B3E4AD26802210A43DA603C4BDB68012213402CD0F8 -:40754000394B394AD2681204110C384A1269120A1004FF2212041040344C9022A258120A120602430A43DA60304B304A126930490A40902109010A431A612C492B4A902364 -:40758000D3582B4A134090221201134390228B50264B1B69254A9023D358234B00225A60214B5B68234B234A126904210A431A616B4607331B78012B01D030BF00E020BF09 -:4075C000C046194B1B68002BFBDA174BDB68012213401DD0154B154A126915491140124AD268120C1002FF22120202400A431A610E480E4A9023D3580D4A1A400A4BDB68D3 -:407600001B0E1902FF231B020B40134390228350054B054AD26802218A43DA60024B00225A60C04602B010BDE000234000002140FF00FFFF00ED00E082B002006B46073363 -:407640001A701A4B194A126904210A431A616B4607331B78012B01D030BF00E020BFC046134B1B68002BFBDA124A86235B00D358002B15D1104B114A1A60114B06221A6076 -:40768000104B3E221A60104B44221A60C0460E4B1B68002BFBDA074A86235B000B49D150034B00225A60C04602B0704700ED00E0E000234000002540080126401E1F0000F4 -:4076C00018052640040126401C052640AAAAAAAA01B40248844601BC604700BFDD38031001B40248844601BC604700BFE528031001B40248844601BC604700BFF537031022 -:4077000001B40248844601BC604700BFF328031001B40248844601BC604700BF8D1D031001B40248844601BC604700BF452C031001B40248844601BC604700BFE3470310ED -:4077400001B40248844601BC604700BFB533031001B40248844601BC604700BFB128031001B40248844601BC604700BFEB47031001B40248844601BC604700BF05290310EC -:4077800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9 -:4077C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089 -:0200000490303A -:0200000028B81E -:0200000490501A -:0C0000000005E20721002101000049B8C2 -:00000001FF diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/psa_release_1.0.hex b/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/psa_release_1.0.hex deleted file mode 100644 index 3284454df47..00000000000 --- a/targets/TARGET_Cypress/TARGET_PSOC6/TARGET_FUTURE_SEQUANA_PSA/prebuilt/psa_release_1.0.hex +++ /dev/null @@ -1,2608 +0,0 @@ -:020000041000EA -:4000000000000108C19001100D0000009901001000000000000000000000000000000000000000000000000000000000257101100000000000000000A9710110B571011095 -:4000400019910110459401101991011019910110199101101991011019910110199101101991011019910110199101101991011019910110199101101991011019910110A1 -:400080001991011019910110199101101991011019910110199101101991011019910110199101101991011019910110199101101991011019910110199101101991011090 -:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD9012000800000000EC770210084B10B5002B03D00749084800E000BF07480368002B00D165 -:4001000010BD064B002BFBD09847F9E70000000094120008EC770210900F000800000000164B002B00D1144B9D46402292029A1A924600218B460F461348144A121A1CF0C9 -:400140001FF80F4B002B00D098470E4B002B00D098470020002104000D000D48002802D00C4816F0DFFC1BF009FC2000290016F00BFF16F00FFEC046000008000000010898 -:4001800000000000E96E011090120008B0810008256B0110000000002C4B05E02C4B03E02C4B01E02C4BFFE7EFF308802B4972460A4201D0EFF309809C46294B1968026889 -:4001C0000A60043142680A60043182680A600431C2680A600431F0C147460F6004314F460F60043157460F6004315F460F60043102690A60083142690A60043182690A6073 -:400200000431C2690A60043103462033154E324200D0043375460D4E354200D148330C46103C2360EFF309820A600431EFF308820A60043172460A600431EFF314820A60FB -:400240006046074900F05EF8FEE700001000000020000000300000004000000004000000A01F02100002000030B5002585B01A4CAB002900E2581948013516F01DFA0D2D45 -:40028000F5D1A36C16480293636C0193236C0093E36BA26B616B16F00FFA124B1248196816F00AFAE36C1B0712D5104816F004FA236D0F48DB0700D40E4816F0FDF9E36C87 -:4002C0000D485B0700D40D4816F0F6F905B030BD0B4816F0F1F9EFE748700008342002104220021000ED00E0912002109F200210AE200210BB200210DE200210EA2002107A -:40030000CE20021013B50400154816F0D5F9302C17D0402C1AD0202C1DD1124816F0CCF9114C124816F0C8F9FFF79EFF104816F0C3F900230F4A0093D26B0F49200016F0D3 -:40034000CFFA0E4816F0B8F90D4CEAE70D4816F0B3F90D4CE5E70D4816F0AEF90C4CE0E7A41F0210CD1F02103E01FF80FA1F0210052002104870000824200210DC1F02101A -:400380003F01FF80E51F02104001FF80F01F02103D01FF80C36810B50400002B01D09B689847200010BD000010B50400064B036002F0ACFD20002830FFF7ECFF200002F088 -:4003C00065FE200010BDC046D032021010B50400FFF7EAFF200016F0F5FC200010BD000070B596B02C2200210BA81BF0C9FE80200BA9800101F090FE0B9E022E12D0032E48 -:4004000000D1D0E0012E00D0D7E0FC21300049001AF066FF0924011E34D00C9802F0E4F800242FE008AD0C22002128001BF0A8FE0E9B0B240C2B25D12A0000210C9801F0C9 -:40044000B9FF0E9B0593984204D05D4A5D495E4816F02CFA28782938052800D9ADE01FF0BFFC0317314D5187002307A90D98079305F00AFA041E05D10100042307AA0C9868 -:4004800001F0B8FF21000C9802F000F816B070BD129E012031001AF023FF051E01D10924F0E7010032000D9805F0F2F9041E05D1010033002A000C9801F09CFF28001BF05A -:4004C00093FADFE70F9B06AA01210C9801F072FF042801D03D4AB9E7109B07AA02210C9801F068FF042801D0394AAFE768880D9B079A069905F03AFB0400C3E70D9805F028 -:400500007BF9F9E70F9901201AF0EAFE041EC6D00F9B020001210C9801F04CFF0F9B0593984201D02B4A91E7109901201AF0D8FE061E03D120001BF057FAB0E7109B02000A -:4005400002210C9801F036FF109B0593984201D0214A7BE7AB68698803930F9B02900093019605936A6823000D9805F029FBC3E70F9901201AF0B4FE041E90D002000F9B2B -:4005800001210C9801F016FF0F9A03000592904201D0124A5AE76A6869880D980092220005F046FBA8E70D9805F026F90D98041E00D167E71BF018FA32E7022462E7C046C1 -:4005C0005704000092210210B221021081040000870400009D040000AA040000C2040000F0B5A3B08020000601F07EFD1022089010421DD01C32002117A81BF0C1FD17A907 -:40060000102001F089FD179B022B06D0032B02D00221012B09D1002107E005F0F5FC011E03D1A94A136801331360189801F02EFF2024089B234200D198E02C22002117A8AE -:400640001BF09EFD17A9200001F066FD179E022E12D0032E00D1DCE0012E00D0E2E0B421300049001AF03CFE173C011E7AD0189801F0BAFF002475E00EAD0822002128000B -:400680001BF07EFD1A9B0B24082B6BD12A000021189801F08FFE1A9B0993984204D072228A498B4816F002F928781438052800D9B8E01FF095FB030A102A7FA869886A6854 -:4006C000199804F09FFA04004CE069886A68199804F09DFAF7E71B9901201AF001FE051E00D194E002001B9B0121189801F062FE1B9B02000993984201D08E22D0E72900FF -:40070000199804F089FA040029E000241B9B0BAA012118980B9401F04DFE1B9B0993984201D09E22BCE70B9901200C941AF0D8FD0924051E16D001000CAB0B9A199804F06C -:4007400099FA041E0BD101000C9B2A00189801F051FE04230CAA0121189801F04BFE28001BF042F92100189801F090FE4024089B234200D1D3E02C22002117A81BF000FD59 -:4007800017A9200001F0C8FC179D022D4CD0032D00D118E1012D00D01EE1E02128001AF09FFD373C011E00D1B5E0189801F01CFF0024B0E000230CAA0C9301211B9B189877 -:4007C00001F0F8FD1B9B0993984203D11C990C9B994201D0B82263E701201AF081FD051E15D01C9B02000221189801F0E3FD1C9B0993984201D0C12252E70C9A290019983F -:4008000004F061FA7FE7199804F0DCF85BE70924A8E7199804F0D6F81998041EA2D01BF0E3F827E702249DE70EAE0822002130001BF0A6FC1A9B0B24082B6CD132000021AB -:40084000189801F0B7FD1A9B0993984202D00222FF3237E030780F38042800D9B1E01FF0BFFA03092383AC007168199803F072FC040050E01B9901201AF032FD051E00D1EE -:40088000AAE002001B9B0121189801F093FD1B9B02000993984201D01622D9E72900199803F098FC040033E000241B9B0BAA012118980B9401F07EFD1B9B099398420BD0C1 -:4008C000922252000349ECE6AC120008F6200210B2210210082102100B9901200C941AF0FFFC0924051E16D001000CAB0B9A199803F07AFC041E0BD101000C9B2A0018982F -:4009000001F078FD04230CAA0121189801F072FD28001BF069F82100189801F0B7FD8024089B6400234200D1A5E02C22002117A81BF026FC17A9200001F0EEFB179D022DDA -:400940004CD0032D00D145E1012D00D04CE14C2128001AF0C5FC0926011E00D187E0189801F042FE002682E000230CAA0C9301211B9B189801F01EFD1B9B0993984203D1AE -:400980001C990C9B994201D09F229AE701201AF0A7FC051E20D01C9B02000221189801F009FD1C9B0993984201D0482250E70C9A2900199803F0E6FF74E7199803F07CFB1C -:4009C00056E72C00A7E7199803F076FB1998041EA1D01BF009F8EBE609249CE70CAC0822002120001BF0CCFB1A9B0B26082B3ED122000021189801F0DDFC1A9B0993984215 -:400A000002D0C64AC6494CE620781A38062800D9EAE01FF0E5F9040B11677DBADB0061886268199804F0EEFC060020E061886268199804F0ECFCF7E700211E9C10220EA829 -:400A40000B911BF09DFB0BAB22000EA9199804F001FD061E0BD101000B9B0EAA189801F0C9FC04230BAA0121189801F0C3FC3100189801F00BFD8024089B234217D02C2227 -:400A8000002117A81BF07CFB200017A901F044FB179C022C00D1A9E0032C00D18CE1012C00D189E102242100189801F0EFFC8024089BA400234200D1EEE12C22002117A8C3 -:400AC0001BF05EFB17A9200001F026FB179E022E00D173E1032E03D00225012E00D0D7E10025D5E11B9C102200210EA81BF048FB23000EAA0121189801F05CFC844201D03E -:400B0000884A7FE722000EA9199804F085FC8BE700231B9E012031001E9F0E931AF0E0FB041E12D0020033000121189801F042FC864201D07C4A65E7390001201AF0D0FB87 -:400B4000051E04D120001AF04FFF09268FE70EAB01933200030000972100199804F0A4FC061E0BD101000E9B2A00189801F042FC04230EAA0121189801F03CFC20001AF02A -:400B800033FF28001AF030FF71E700231E9D012029000E931AF0A4FB0926041E00D166E701000EAB2A00199804F0ACFC061E0BD101000E9B2200189801F01CFC04230EAAD4 -:400BC0000121189801F016FC2000DBE7199804F04BFB29E7199804F047FB1998061E00D145E71AF001FFBDE6022640E71A9B0993102B01D00B2456E70EAD1022002128008F -:400C00001BF0BEFA10232A000021189801F0D2FB1A9B0993984202D08022FF3228E028782338032800D93EE71FF0DAF80242828200231E9901200C931AF052FB051E3DD0BF -:400C40001B9901201AF04CFB041E04D128001AF0CBFE093427E702001B9B0121189801F0A9FB1B9A03000992904203D0CC2252002E4916E51E9A0EA90CAE48880992019221 -:400C80000296220000950F9904F04EF8041E05D101000C9B2A00189801F0ACFB189804233200012101F0A6FB28001AF09DFEFAE61B9901201AF014FB071E01D10924F2E69D -:400CC0001B9B02000121189801F074FB1B9B0993984201D0B822A0E71C9901201AF000FB061EEBD002001C9B0221189801F062FB1C9A03000992904201D0E122B7E71B9ACB -:400D000068880192009709926968320004F010F9040038001AF068FE3000C6E79E02000047210210C2020000D70200001B21021000231B9901200C931AF0D2FA061EBDD052 -:400D40001B9B02000121189801F034FB1B9B0993984201D0E02260E7AB681E990120F4181AF0BEFA071E03D130001AF03DFEA5E71E9B0CAA29786888049203930297EB68B8 -:400D800000940193AB683200252911D1696804F08BF9041E05D101000C9B3A00189801F029FB04230CAA0121189801F023FBB0E7696804F0EDF9ECE7002474E61A9F0B2574 -:400DC000242F65D10EAC3A00002120001BF0D8F93B0022000021189801F0ECFA1A9B0993984203D08C229200BD495AE423783500213B012B4CD800231B9901200C931AF0B5 -:400E00006FFA061E16D01B9B02000121189801F0D1FA1B9B0993984201D0B24AE4E7E3681E990120F5181AF05BFA071E04D130001AF0DAFD09252BE023781E9A9C46238981 -:400E40000CA9099363466088069105920497212B3CD1236902950393E3680096019313AA099B616804F0DEFB051E0BD101000C9B3A00189801F0BEFA04230CAA0121189860 -:400E800001F0B8FA30001AF0AFFD38001AF0ACFD2900189801F0FAFA8024089BE400234200D1BDE02C22002117A81BF069F917A9200001F031F9179B022B13D0032B00D1AB -:400EC00039E1012B00D136E10224A5E0236902950393E3680096019313AA099B616804F00FFCC1E71A9E0B240C2E00D094E00EAD3200002128001BF043F933002A000021BA -:400F0000189801F057FA1A9B0993984203D0764A7649FFF7C6FB2B7A062B00D1D0E03DD8032B00D1AFE014D8022BCDD11B9C012021001AF0D5F9061E00D1FAE00200230015 -:400F40000121189801F036FA844200D193E0684ADEE7042B00D19AE0052BB5D11E9F012039001AF0BDF90924061E55D028880CAB3A00310003F06AF8041E05D101000C9BB9 -:400F80003200189801F036FA04230CAA0121189801F030FA30001AF027FD3DE00D2B2AD009D80B2B57D00C2B8ED128880CA91E9E04F006FB16E00E2B0FD0282B00D083E732 -:400FC0001B9E0CAA3300012118981C9C01F0F2F9864200D18EE0EF2217E028880CA91E9E04F0FDFA041E17D1330000210CAA189801F000FA10E01B9C0CAA230001211898CD -:4010000001F0D8F9844202D0D322920080E728880C9904F0EFFA04002100189801F036FA8024089B2401234200D1A0E02C22002117A81BF0A5F817A9200001F06DF8179B60 -:40104000022B00D179E0032B03D00224012B00D089E0002487E01B9C0CAA23000121189801F0A8F9844201D0D622CEE728880CA904F090FACFE7288823003200696802F069 -:401080007BFF040086E7288802F0A3FFC3E728880CAA0BA902F0BAFF041EBDD11E9B0993032B05D904230BAA0021189801F0A2F91F9B0993032BAFD904230CAA012196E7C0 -:4010C0001E9F012039001AF00BF90924061EA3D028880CAB3A00310002F0CEFF4CE7C0463421021043020000350300005F21021071030000544B0F9A00269A4211D1B44231 -:401100000FD0210001201AF0EBF8061E11D0020023000221189801F04DF9844201D04B4AF6E62888009433000C9A696804F05EFEA7E7092470E700246EE71E9E012031008E -:401140001AF0CEF80924051E0DD0310004F008FE041E05D1010033002A00189801F04AF928001AF041FC2100189801F08FF98024089B640123421FD02C22002117A81AF01C -:40118000FFFF17A9200000F0C7FF179B022B06D0032B02D00224012B0AD1002408E000242B4A1368013B1360A34201D104F006FF2100189801F06AF9089B9B0401D5FFF707 -:4011C0000FF98024089BE401234201D1FFF70AFA2C22002117A81AF0D3FF17A9200000F09BFF179B022B06D0032B02D00224012B21D100241FE080231A9DDB0008249D42BA -:4012000019D8290001201AF06BF8061E19D002002B000021189801F0CDF8854203D00D4A0D49FFF73EFA2900300004F0ADFD040030001AF0D9FB2100189801F027F9FFF7EF -:40124000D1F90924F7E7C04600000170CB030000AC120008010400007C21021010B5041E04D1D4221249134815F020FB124816F067FF0B212062114A002803D1D9220C4937 -:401280000F48F1E74B01D31A6933FF3301391C600029F7D122610B480B4A17F0B5FD6060002803D1E32202490848DDE710BDC046D2210210F021021088220210C4000008CA -:4012C0000B220210E10500102402000846220210F0B500233F270D4D0E003E40AE5D5C1CE4B2C65489090FD13F2602332331DBB20155140034402C5D591CC4549209CBB2D1 -:40130000002AF6D1C254F0BD2300E5E7AA22021070B50C4C2378BFF35B8F0B4DDB070CD4200015F009FC002807D0200015F01BFC064A0749280015F0F3FB2800054913F0C5 -:40134000F3FA70BD1053000818530008C00000081D490110EA220210F0B589B007000E00029203930E9DFFF7D3FF041E02D1134815F09CFA0223012D1DD80E22002104A858 -:401380001AF0FEFE3A00310004A8FFF7A1FF236800955D69039A029B04A92000A8470023984208D0064A0333904204D0054A023B904200D00433180009B0F0BDB1230210D4 -:4013C0000B01FF801201FF80F0B58DB003900F0016001D00FFF79CFF041E02D11F4815F065FA0E22002108A81AF0CAFE039A390008A8FFF76DFF236806AADB6908A92000BD -:40140000984700280BD0164A0723904223D0052321E0134A072390421DD0023B1BE0069A0923B24217D3711908238D4213D88A4211D3236805AA0092019605909E69129A60 -:401440002B0008A92000B0470028E2D1059BAB429B415B42DB0018000DB0F0BD072302100701FF80F0B587B007000E001400FFF74FFF051E02D1134815F018FA0E22002176 -:4014800002A81AF07DFE3A00310002A8FFF720FF2B686A46DB6902A928009847002805D0094A072390420AD0052308E00123019A60601A4200D06360009B2360002318009D -:4014C00007B0F0BD3D2302100701FF807FB506000D00FFF71DFF041E02D1104815F0E6F90E22002168461AF04BFE320029006846FFF7EEFE236869461B6A200098470023E7 -:40150000984208D0064A0733904204D0054A063B904200D00433180004B070BD782302100701FF801201FF8070B58AB003900293002A02D1062400291FD103AB049304236E -:401540000692079102AA01210D4805930892099300F0A8FB0524061E0FDD00230322009304A900F00BFC802305001B06984200D12500300000F064FC2C0020000AB070BDB3 -:40158000011A010070B58AB003900291002B02D10624002A21D103A902A80691089004218D2007910991400203390493059200F079FB0524061E10DD01230222009306A9E9 -:4015C00004AB00F0DBFB802305001B06984200D12500300000F034FC2C0020000AB070BDF0B58BB0039002910625002926D0023504AC2A00002120001AF0C2FD03AB0693A8 -:40160000042301210F4809950793089400F04AFB033D071E12DD012208AB009206A900F0ADFB029B060006CC06C380231B06984200D12E00380000F003FC350028000BB0E4 -:40164000F0BDC046021A010070B586B003AB04930423039001210D48059300F023FB0524061E0FDD00230122009304A900F086FB802305001B06984200D12500300000F03A -:40168000DFFB2C00200006B070BDC046031A010013B50021C36804000191042B02D08020000616BD01AA406800F084FE0428F6D1606800F089FF0199FFF708FFF1E730B58D -:4016C000050085B00021082202A81AF059FD0021EB680191042B03D08020000605B030BDEA69082AF8D101AA686800F063FE0428F2D1686800F068FF02AA0199FFF7B2FEEF -:40170000041E05D10100EB6902AA686800F072FE2000E3E77FB50021C368040002910391042B03D08020000604B070BD0369042BF8D102AA406800F03DFE03000428F1D18E -:4017400003AA0121606800F035FE0428EAD1E0691AF040F906000520002EE5D0606800F033FF0096E369039A0299FFF72DFE051E05D10100E3693200606800F03BFEE26955 -:40178000002130001AF0FCFC30001AF02DF92800CAE7F0B50026C36887B00400049607690596042B05D080231B060393039807B0F0BD4369042BF6D104AA3100406800F051 -:4017C000F9FD03000428EED105AA0221606800F0F1FD0428E7D138001AF0FCF80523051E0393E3D0236902000121606800F0E2FD2369984203D028001AF0F6F8D6E76068BA -:4018000000F0E2FE059B3A00009304992B00FFF7A3FD04003A00310028001AF0B1FC28001AF0E2F80394C1E7036810B50400022B05D0032B01D0012B07D1002101E088476A -:401840000100606800F022FE10BD98220149024815F02CF8E72302100224021070B58CB02C22002101A880261AF08AFC20253606300000F039FC040012F006FF031E04D072 -:40188000AC221649164815F011F82C4207D001A9280000F041FC134901A8FFF7C5FF1020044206D001A900F037FC0F4901A8FFF7BBFF4020044206D001A900F02DFC0B492F -:4018C00001A8FFF7B1FF80200442D1D001A900F023FC074901A8FFF7A7FFC9E7F7230210252402109317001015170010BF1600109116001010B5041E04D1782210491148F3 -:4019000014F0D4FF104816F01BFC2062002811D00E4B0F4A9C629C649C669C60236100210C4817F071FA6060002807D1872204490948E5E77D2202490848E1E710BDC0460F -:4019400056240210F0210210D824021048020008C80200085D180010982402105F240210F0B587B006000291039200F0EDFA00282BD0036800240093164B002205A9300017 -:40198000059314F0EBFE0121300014F007FF2500019073689C4215D200230593019B25041D43B3682701D8192A0005A914F0D6FE00280DD0B368DF19029BFB60009B7B60A6 -:4019C000039BBB60280007B0F0BD01235B42D1E70134DEE7FFFF000037B5426805000B0C934205D3009215496D22154814F05EFF1C0183681B59994205D00B0071220F4973 -:401A0000104814F053FF00F09FFA00280DD00268AB681B1959688A420AD099688A4207D07B220649084814F041FF01225242EFE700221A605A609A6037BDC046F62402102B -:401A40002E2502107A250210B525021037B50500002904D189221749174814F027FF42680B0C934205D3009212498F22134814F01DFF1C0183681B59994205D00B0093226E -:401A80000C490F4814F012FF00F05EFA00280CD00268AB681C1963689A4209D0A3689A4206D09D2203490748D7E701225242F0E7E0683EBD12250210F12502102E2502106B -:401AC0007A2502102E26021070B5041E04D14E220649074814F0EAFE064D2800FFF7BEFB0548FFF707FF2560022070BD7C2602108C260210EC02000814030008F0B500211F -:401B000006000D4B5D681B681033A94201D1002010E000225F68BA4202D101312833F4E71868540100190468A64201D00132F2E70028F2D0F0BDC0466C03000870B50D006A -:401B40000121040083684942186A16F00FFBE369002B0BD1A561A368E5616168586817F07DF9A368186A16F017FB70BD1D61F2E7F0B585B005000E00FFF7C0FF041E05D1C4 -:401B80002B0074223C493D4814F090FE0369002B0ED13268C1688A4210D90293E3687A2201932368344900933548336814F07EFE012B03D13268C1688A42EED100F0C4F99C -:401BC000071E07D1237D002B1FD1236838222D492D48D9E78269002A0BD00023C1698B420CD13B684622009323682649274814F05DFE03683D2223492548C5E79800105801 -:401C00002568A84201D00133E9E73A000C21300000F0B2F9002804D1812217491D4814F045FE1D4B0021186A15F006FE051E0BD11A4BB0687360002F03D016F017FC05B047 -:401C4000F0BD00F047FDFAE7A36801001A681448FFF786FE022370606B75013B2B7500232F606C60EE60AB602B61AB7529002000FFF764FFE3E7C046C8260210E12702107E -:401C8000FE270210A826021057280210C42802108E280210022902106C0300080100008074030008F0B510248DB004AD0F0022000021060028001AF063FA002108AA012060 -:401CC000089109910A950B940197029116F092FB0390002804D1B72209490A4814F0E6FD01A93000FFF744FF01210398494216F097FB039816F0F0FB02980DB0F0BDC04638 -:401D0000DA260210A927021070B50C0001001848FFF79CFE182105000268200000F02CF9002804D1CE221349134814F0BFFDAB7D012B0CD180231B0623612B686069002B4C -:401D400002D100F0C7FC70BD16F090FBFBE7280004221530032100F0CFF802232B75EC600FCC00F0AFF829006868FFF7E7FEEAE774030008E626021018270210F0B51024E0 -:401D800091B00F00160000212200050002A801931AF0F6F9002102AB0893019B06AA0C93169B01200691079109940A970B960D930E9116F01FFB0F90002805D183220A4916 -:401DC00052000A4814F072FD0AA92800FFF79CFF01210F98494216F023FB0F9816F07CFB0E9811B0F0BDC046F5260210A927021070B50D0001000F48FFF728FE08210400C8 -:401E00000268280000F0B8F8002805D18F220A4952000A4814F04AFD20000321153000F083F80323E560237521006068FFF786FE70BDC04674030008FE2602107B27021089 -:401E400070B504008AB0002825D0102502AE2A00002130001AF094F9002106AA01200691079108960995009416F0C4FA0190002805D1A12209495200094814F017FD694628 -:401E80002000FFF7B5FF01210198494216F0C8FA019816F021FB0AB070BDC0460E2702104527021010B5FFF729FE041E01D1002010BD00F049F8002802D1237D002BF6D05D -:401EC000E068F5E71FB5002801D1002906D1002A01D1002B02D1CC18042C08D9029301920091030027220249024814F0DFFC1FBD32290210B329021030B50F2585B06D4452 -:401F000029700C00290014F015FC002806D12B78302200940249034814F0C8FC05B030BD412902106B29021007B503788B4205D0009138220249034814F0B8FC07BDC04638 -:401F4000562902106B29021070B516F073FF0022084B5C681B68A24202D10021080070BD190028331D00243D2D68A842F6D00132F1E7C0466C03000810B5031E1DD001230E -:401F800000291AD009184C1E0023A04215D89A4215D1144A904210D9134B984203D8134A0123914209D9124B124AC0180023904203D8114A8A425B41DBB2180010BD0F4A7E -:401FC0009042FAD9074B984203D80D4A01239142F3D9F0230B4A1B06C01800239042ECD8094AE7E7FFFF0008FF760408007704080000F8EFFF7F070000800F10FFFFFF07C7 -:4020000000000108FFFF07000000081010B517F093FB0E4A18210A2015F0F8FB0C4C2062002803D10B490C4814F040FC0B4A28210A2015F0EBFB6062002802D105490848A1 -:40204000F2E72000FFF740FD606010BD540300086C030008052A0210122A02103C0300083E2A021010B5024B186800F0C9FBFAE794030008F7B50C000100184817000193F7 -:40208000FFF7E4FC0600006805211530FFF74CFF032C05D99E2212495200124814F006FC731DDB7F00259C4215D2E4003619B568019B9D4200D91D00002D0CD0002F04D0B5 -:4020C0002A007168380019F0C9FF73685B197360B3685B1BB3602800FEBDC04680030008D62A0210102E021010B50400FFF72CFFC368806803430820184380231B069C42D0 -:4021000001D1012464422200022116F001FF831C00D1002010BD0000F0B593B003910500FFF712FF2C21060002000398FFF724FF002804D1FC228E498E4814F0B7FB2C22FD -:40214000002103981AF01CF8B268002D04D06C1E2C4001D12A4207D1009284222B0052008349854814F0A2FB16F0C2FE28420AD02300726993420BD189222B007C497F4854 -:40218000520014F093FB0E227949FF327C48D4E731695C010C1961688D4201D00133E9E7002CE9D00121A3684942186A15F0DEFFA569002D03D1B32272497348BDE70022EF -:4021C0002B69A3612A61934203D1E361606816F079FEA368186A15F0DFFF28002B7D1530022B09D0032B21D00221012B1FD097225F4952006548C4E705220421FFF77CFEDB -:402200002822002108A819F0BBFF00222B7D0692022B00D080E02A681821E868FFF7ACFE002807D15B225A495A4886E71900FFF77BFEE5E7EB685F681C689A68DB683900A7 -:40224000200004930592FFF73DFEFBB20693002F2AD1049B002B5FD0049B2A68D9000598FFF78AFE00284DD0FF0012ABDF193C000027059E243C73689C46002B46D02300D1 -:40228000320003CA03C3039ABB00D31862466146DA6120682A68FFF76FFE002836D13B0094223B493C486CE7F9002A682000FFF763FE0026002807D16B22354937483CE7BF -:4022C00001360834B742C4D063689C46002BF7D0200008AAF300D31807931A1D0AC80AC263460398B2008218D360079B2A6861465868FFF741FE0028E2D133007C22244974 -:4023000027483EE783222249264816E7049B013708360834BB42AED10121234B4942586A15F08AFA011E03D19D2219491F4804E70D2306AA9B186A46127E0895DA77020032 -:4023400008AB51CB51C251CB51C251CB51C21B68174813600022FFF703FB2B7D039A1360AB6804931300049A58609A6013B0F0BDCE2A0210002B02101C2B0210822B02101E -:40238000662B0210B02A0210D02B0210F02B02109C2A0210202C0210A72C0210452C0210642C0210872C02106C030008CB2C021080030008F8B514000F001D000600FFF75B -:4023C000C3FD290002002000FFF7D6FD002805D1AD2206495200064814F068FA2B00390030002200FFF746FEF8BDC046E32A0210F42C0210F7B507000C0016001D1E3AD0D1 -:40240000FFF7A2FD290002003000FFF7B5FD002805D1702218491948FF3214F047FA39001748FFF713FB0700006805211530FFF77BFD7B1DD97F0C19032C04D9BC220E4902 -:4024400052001048E9E7E4003C19A3689D4207D97E220093FF322B0007490B4814F026FA2A003100606819F0F9FD63685B196360A3685D1BA560F7BDEC2A0210F42C0210CF -:4024800080030008B82D0210D32D0210F7B507000D0001004348FFF7D9FA0600046839004048FFF799FA28220021300019F068FE3D4F3100786A15F0DFF920002368153041 -:4024C0000193237D022B36D0032B4DD0012B60D1364B002D08D09D4206D0A0222B0034493448FF3214F0E2F9E668B26800929D4217D10221FFF718FD71682F48FFF76CFA01 -:4025000018220021200019F03BFE2100386A15F0B3F97560019B0098002B3FD100F0DAF8F7BD03220221FFF7E7FC002CF2D00023E3602375EEE7214BEB187E2B05D8E022D7 -:402540002B0052001A491E48CCE703220521FFF7D3FC80231B069D4201D10123A375E3681D615B690093E0E7E56819006A6800920122FFF7C1FC29680F48FFF72DFA1822DB -:402580000021200019F0FCFD2100386A15F074F9C0E7EA220649FF320A48A3E715F066FFBEE7C046800300086C03000801000080F62A0210132D021074030008FFFFFF7F7D -:4025C0004D2D0210842D0210010010B50548FFF73DFA03681B68002B01D0186810BD01204042FBE78003000810B50C0001000348FFF72CFA03689C6010BDC0468003000807 -:40260000054B10B51B68586915F030FF034B1B68186915F02BFF10BD980300089403000810B517F0C3F810BD10B517F0BFF810BDF0B53C2695B01D4C1D4D1E4B32000021FE -:4026400005A802930394049519F09AFD1A4B320005A92000059319F001FD320005A9280019F0FCFC02A90C22144819F0F7FC144815F066FD134A06000021012015F0BAFEE4 -:40268000114A07000021012015F0B4FE01900F483B0032002900006800F062F80C4B019A2100186800F06AF815B0F0BD0C77040848770408779A333D0C4A286300770408F9 -:4026C0004C2E02103C2E02105C2E021098030008940300081FB504000C22002101A819F04FFD0021034822000B000068029400F051F81FBD9803000830B585B0019001389C -:402700000C00029115000392032806D81DF068FB02070B0F1000FFF72BFA05B030BD1000FFF7F2FAF9E71000FFF762FBF5E7002208212000FFF720FC002804D16C2206497F -:40274000064814F0B3F82800FFF7ACFB20606068FFF7C0FFE1E7C0462A2E0210202C021010B5054C026104600C1D44600C3104348460C160436110BDFFD948A2044B0261FB -:4027800003600B1D43600C3104338360C160704742658BA6F0B585B00191012101AC050049420069FA276260A360032615F0DEFC7F00AA6869681368086801338C463340FC -:4027C000834218D00C2310684343E868C31883CC83C3136801333340136063461B68126801333340934201D1FFF71AFF286915F0D3FC05B0F0BD3900686915F011FED8E703 -:40280000FA21F0B54900050085B0006915F008FEAB686A689C4610681B68984201D105B0F0BD0C211368E8684B4301ACC3182000C2CBC2C00321136801330B40136063469A -:402840001B68126802330B40934201D1FFF7ECFE07CCFFF751FFDBE70020704700207047012000217047C16980697047F0B5431C87B00593DB7F0500002B00D143622E0007 -:4028800024360121300013F089FF00230490019301280AD12F1D380000F0D2F90190002806D00499300013F092FF019807B0F0BD29696A69AB69EC695B18544138000293C3 -:4028C000039400F093F90400380000F08BF9039B2418002B02D1029BA34206D90121300013F075FF194B0193DFE76B69380002932C6900F077F9019B029A934201D1A042FE -:40290000ECD82C696B691C4304D1380000F06AF96C612861AC69EB691C4312D1380000F065F90600380000F05DF927003200230006002869696992197B41121A8B41AA6151 -:40294000EB610123059AD377AFE7C0465FF0FFFF421C0300002010B5D27F824202D0181D00F038F9002110BD10B5431CDB7F002B03D0043000F03EF910BD01204042FBE77B -:4029800070B5451C0400E87F002801D1606270BD20000121243013F01AFF030000208342F5D1E877201D00F071F9F0E710B50400044B08330360FFF7E3FF201D00F009F953 -:4029C000200010BD842E021010B50400FFF7EEFF200014F0F7F9200010BD421C0300002010B5D27F824203D0181D196900F0F6F8002110BD411C0300002010B5C97F814278 -:402A000004D01969181D891800F0E8F8002110BDF7B51F00431CDB7F04000D001600002B33D003689B6A984702000B00300039001DF0D4FB1A4328D1236820009B6A98474D -:402A400002000B00089809991DF0C8FB1A431CD1089A099B92197B4100920193236820009B6B9847019B8B420FD802D1009B83420BD82269636992197B411100201D0A000E -:402A8000089B290000F04AF9FEBD0148FCE7C0465FF0FFFFD3B51F00431CDB7F04001600002B39D00368196B3B00884702000B00300039001DF092FB1A432DD1069A079B89 -:402AC00092197B41009201930098019901225242D31712184B4121682000096B884702000B00009801991DF079FB1A4314D1236820009B6B9847019B8B420DD802D1009B86 -:402B0000834209D822696369B6185F41201D069A310000F089F9D6BD0048FCE75FF0FFFFF7B51F00431CDB7F04000D001600002B33D003685B6A984702000B003000390041 -:402B40001DF04CFB1A4328D1236820005B6A984702000B00089809991DF040FB1A431CD1089A099B92197B4100920193236820009B6B9847019B8B420FD802D1009B834295 -:402B80000BD82269636992197B411100201D0A00089B290000F09EF8FEBD0148FCE7C0465FF0FFFF094B70B50833040008C015000E0000F00DF80023621C2661A561636106 -:402BC000E3612000D377636270BDC046842E02107047704710B517F079FF10BD10B517F069FF10BD10B517F074FF10BD10B517F073FF10BD10B517F072FF10BD036870B53A -:402C00000400002B17D10D4E3068002803D00121494215F0ABFA2368002B07D125000835002D02D0280014F025F925603068002801D015F0B1FA206870BDC046F070000816 -:402C400070B50500104E3000FFF7D8FF14F01AF913F058FE13F08CFE280017F015FF040013F0A2FE13F06AFE280017F02FFF14F095F868603000FFF7C1FF14F019F9601E4D -:402C80008441604270BDC046385C000870B506000F4D2800FFF7B2FF14F0F4F813F032FE13F066FE300017F0F1FE441EA041444213F07AFE13F042FE7068002801D014F07C -:402CC00085F82800FFF79AFF14F0F2F8200070BD385C0008F7B50F00160005000E4C01932000FFF78BFF14F0CDF813F00BFE13F03FFE3A003100019B280013F067F90500B9 -:402D000013F052FE13F01AFE2000FFF777FF14F0CFF82800FEBDC046385C0008F0B585B00C0005000092019317F0D0FE0700280017F0D2FE0600280017F0CBFE3900029094 -:402D400000981DF0E7F8002901D1002C02D1012464424DE0019A009B9B18029AB618B342F5D83048FFF74AFF14F08CF82600019B002B54D00099280017F09CFE0400010011 -:402D800000981DF0C7F8019B601A984200D9180003231E4201D187422DD93C00874200D9040022003100686819F058F9BC4205D26B683A1B1819FF2119F0E2F96B680297AA -:402DC000039313F09FFD13F0D3FD029B039A0099280017F065FE002815D0012413F0E4FD13F0ACFD64420F48FFF708FF14F060F8200005B0F0BD39001DF006F87843039634 -:402E000002900400DDE713F0CFFD13F097FD019B36191B1B0193009B1B190093A7E7019CE1E7C046385C0008F7B50D001400060017F052FE0700300017F04BFE38182F19DD -:402E4000B84202D201204042FEBDB8421ED8194F3800FFF7D3FE14F015F8002C23D013F051FD13F085FD2900300017F011FE019013F09AFD13F062FD019B002B11D12900FB -:402E8000300017F017FE241A2D18E6E73900300017F010FE010038001DF03CF80029D1D1D5E7012464423800FFF7A8FE14F000F82000C9E7385C000810B503681B6998475D -:402EC00010BD10B503689B69984710BD10B503689B6A984710BD0020814200D11938704701207047704710B58268C3680400416A006A12184B41200000F0B8F8636B002B97 -:402F000003D020001B682830984710BD7FB5050013F0E8FB280000F0B1F86B6B002B04D02B0038331B78002B1DD12E006C46283610220021684619F023F9A6420DD03000C7 -:402F4000FDF728FA002E08D0039B002B03D05B68694630009847E3686B632000FDF71AFA13F0CAFB7FBD13F0D5F8DEE710B50400034B08330360FDF717FA200010BDC04691 -:402F8000DC32021010B50400FFF7F0FF200013F019FF200010BD1FB50100436B04002831002B02D05B6868469847636B20000393FFF7ACFF039B68461B6898476846FDF779 -:402FC000E9F91FBD10B5040013F08CFB2368002B04D0237F002B01D013F09CF80023236013F08AFB200010BD10B5040013F07AFBA06913F0C1FA00220023A060E1602261D5 -:40300000636113F079FB10BD002310B50022036000238260C36002614361040013F0C0FA0123A06123772000FFF7DEFF200010BD10B503689B68984710BD0000094B10B594 -:4030400008330022036000238260C360002303614361040013F0A4FA0349A06113F008FA200010BDF03202103130001007B5010000900831806913F03CFA07BD010010B582 -:403080000831806913F05EFA10BD000010B50400034B08330360FFF7F1FF200010BDC046F032021010B5036801221B690021984710BD002210B5036811001B69984710BDCD -:4030C00070B50B4C2378BFF35B8F0A4DDB070CD4200013F031FD002807D0200013F043FD054A0649280013F01BFD280070BDC0461053000818530008C00000081D490110F8 -:4031000000234118884200D1704703700130F9E7030000B57F3304DAFF234042DB0118404042020004236C321FD003006C3300DDC2E0994A0923904217D05FDC974A013BA4 -:40314000904212D02FDC964A013390420DD015DC944A0733904208D009DC934A033B904203D0924A0133904236D1180000BD904A07239042F9D08F4A0A33F4E78E4A0D231F -:403180009042F2D008DC8D4A053B9042EDD08C4B984221D10223E8E78A4A0C239042E4D0894A033BDFE7894A09239042DDD015DC874A053B9042D8D007DC864B9842E9D0B9 -:4031C000854B984208D10823CFE7844B9842E1D0834B984200D1CBE10123C6E7814A0D239042C2D004DC804B9842ECD07F4BF0E77F4A0D239042B8D07E4BC9E77E4A0C2317 -:403200009042B2D02ADC7D4A01339042ADD012DC7B4B984200D1A9E106DC7A4A04239042A3D0794A0C339EE7784B984200D19DE1774A082397E7774A0923904200D194E707 -:4032400007DC754A0833904200D18EE7734A093B89E7734B9842B6D0724BB2E7724A0823904200D181E710DC704B984292D004DC6F4B9842A7D06F4BA3E76F4B984202D00A -:403280006E4B9842A8D103236FE76D4B984200D180E705DC6B4B984200D17BE76A4B77E76A4A0D23904200D15FE702007A3200D15BE7674A033356E702000D23273200D1F7 -:4032C00053E70300273300DDD2E00300383300D160E70300383333DC0300603300D172E70300603317DC0300663300D16BE70300663308DC020009236A3200D135E76830CE -:4033000000D160E768E70300643300D15BE7623000D158E760E703003C3307DC03003D3302DA403000D057E70F231EE702000F233A3200D119E7393000D04DE70D2314E72E -:403340000300323300D125E70300323316DC03003533F3D00300353306DC03003733EDD0363000D116E737E702000F23343200D1FBE6023B333000D1F7E62DE703002D33A6 -:40338000DCD003002D3365DC02000D23313200D1EBE62F30D2D01FE780BBFFFF00AFFFFF809EFFFF009DFFFF009CFFFF809CFFFF809DFFFF009EFFFF80ADFFFF009FFFFFAF -:4033C000809FFFFF00AEFFFF80AEFFFF80B2FFFF00B1FFFF80AFFFFF80B0FFFF80B1FFFF00B2FFFF80B4FFFF80B3FFFF00B4FFFF80BAFFFF00BBFFFF00C2FFFF80BEFFFFBD -:4034000000BDFFFF00BCFFFF80BCFFFF80BDFFFF00BEFFFF80C0FFFF00BFFFFF80BFFFFF00C1FFFF80C1FFFF00C5FFFF80C3FFFF80C2FFFF00C3FFFF00C4FFFF80C4FFFFA7 -:4034400080C6FFFF80C5FFFF00C6FFFF80C7FFFF00C7FFFF02000D23293200D185E60200053B293200DD80E62B3000D166E7B3E602001023123200D177E60300123335DC3C -:4034800002000D23193200D16FE60300193313DC030022330CDC0300243300DB7AE60300263300D176E60D23253000D15DE693E6203000D16EE68FE60300163300D169E665 -:4034C0000300163308DC0300183300D162E60D23173000D149E67FE602000823143200D143E60533133000D13FE675E6020008230C3200D139E603000C331ADC0200102358 -:403500000F3200D131E603000F3309DC02000D23113200D129E6043B103000D125E65BE6020008230E3200D11FE60D3000D11CE652E60823821D00D117E6831D09DC02009D -:4035400008230A3200D110E6043B083000D10CE642E60C23821C00D107E60023984200D103E60833021D00D036E6FEE50E23FCE51023FAE5F7B5802417006404DBB2384A4E -:4035800023439A18050001911024022A2DD9354A04349A18012A28D9334A0834934224D0324A0434934220D0314A103493421CD0304A1034934218D02F4A243C934214D0D9 -:4035C0002E4A0434934210D02D4A043C93420CD02C4A0434934208D02B4A1034934204D02A4A9B185C425C41A4013900012017F077FE2860002801D10920FEBD099B0B9AB5 -:403600006F609E1801993A0018F028FD099B0820B342F2D8A619B442EFD83100012017F05FFEA8600028E7D00B9BEE60002B04D000191A000A9918F011FD099B002B07D0DB -:403640000B9B099AE018AB680899181818F006FD2B0000205133503518702C70CDE7C046FFFFFFFEFCFFFFFE08000001090000010A0000010B0000010C0000010D000001B0 -:40368000100000011100000112000001EDFFFFFEF0B5C9B004900F00150005930826802A28D81620002102AB07ACC0182170627018F066FD2378AE1CA35562786319281D50 -:4036C000DA7039002A00201818F0C8FC519B72000393509B210002934F9B049801934E9B0093059BFFF746FF8221060049002000FFF706FD300049B0F0BD000070B51500F8 -:40370000FE22D20504000240C020C004824201D12B4A1440FA228020D2052240C00482422CD1284A944218D00AD8274A944205D0264A94422BD0264A94420CD102220DE02C -:40374000244A944216D013D3234A944214D023480622844202D0002024E0052220480918002003291ED808001CF03AFB271D15250322F3E70422F1E70822EFE7194A9442D4 -:4037800007D0194A002094420CD10622E6E70722E4E70122E2E70520002B00D01870290006F0D0FA70BD0320402DF5D00130802DF2D14035F0E70720EEE70220ECE7C04630 -:4037C000FFC0FFFF0100C0040101600401008004000160040300C0040100000602000006FFFFFFBF0200C0020300C002CC235B00C358084A10B5934203D0074A934204D0BE -:4038000010BD083005F027FFFAE708300AF057FFF6E7C04601100006021000061A4B70B5140098421ED004D8184B984221D002231DE0A223DB05984203D0A423DB05984288 -:40384000F5D1072508230D4011D10731C9086160012017F045FD2B002060002807D16560093304E00029ECD10B0051601160180070BD40230A009A43802AE2D0802208236D -:4038800052009142F3D1DCE70100005001000040C021036802008020C90510B51940C005814202D15069C00010BD094909481940814203D110690DF0C1F8F4E70649002043 -:4038C0000B4006498B42EFD11369986DECE7C046FFFFFFEF000001600000FFEF0000036070B5002503680400AB4209D0C0228021D2051A40C9058A4204D1206918F074F80A -:40390000280070BD0B4A0C491A408A4203D100690EF0A8F8F1E7094A0E251340084A9342EED1006908F0CDF8206918F05DF80025E6E7C046FFFFFFEF000001600000FFEFB1 -:4039400000000360F0B51400C0220D00802185B000930368D20506000A9F1A40C9058A4219D14269A24203D90426300005B0F0BD002C09D00169280018F070FB70690021D9 -:40398000221A281818F0FCFB73690193019A009B1A600026E9E73C491A0C12048A4219D1002F17D1FFF774FFC71DFF08BC42DBD330693A0029007C3004F0EEFAFFF7A8FBCB -:4039C000061ED2D1E21BE819310018F0D9FB009B1F60CAE72D4A2E491A408A4206D02D4A13402D4A934225D00226BEE702A80BF060FA2A4B029333690393002F07D1E02224 -:403A00003368D2051340C022D205934217D12200290002A80CF048F9061E16DA002C04D022000021280018F0ABFB3000FFF770FB06009AE702A80BF03CFA194BDAE72200B2 -:403A4000290002A80CF096F9E6E743009C420ED3241A2C1902002100280018F0FFFA32000021200018F08CFB009B1E6091E78442FAD9241A02002919280018F031FBA8197F -:403A800022000021EEE7C04600000370FFFFFFEF000001600000FFEF00000360F867021098670210F7B5040000680E00FFF7F0FE6B46216802000700073309683000FFF737 -:403AC0001DFE02256060002818D0334B334A3340934204D0324A93423CD002250EE0CC23304A5B00E25010220433E25423680E3A1B6893432C4A934202D008252800FEBD3D -:403B000025000835280005F07FFD6B462268D97912693B00280005F07DFDFFF7F9FA051E35D1FE23C021DB053340C90400228B4201D1B204920ECE204000205C904225D3F1 -:403B400000228B4201D1B604B20E9E23FF33E2540025D3E7CC23154A5B00E25010220433E25423680E3A1B6893430F4A9342C4D12500083528000AF017FB6B462268D97976 -:403B800012693B0028000AF016FBCAE708252000FFF72CFEB2E7C046FFC0FFFF010000060200000601100006010000400210000610B5FF230C0001000C4A9943914212D147 -:403BC0000340802040041843094BC01803280AD8084B8000C0580AF0E0FF0121020020000CF026FF10BD0020F5E7C04600000312F8FFFFFE20330210F7B5FF2306001D4F64 -:403C00009E431D4B0500009101920340BB4204D01A4B1B4A0340934221D1EBB2002B1ED0802252041343174A9B18032B17D8164A9B009C5820000AF0B0FF019B1870BE4219 -:403C40000FD1B54209D00223002C10D020000AF09FFF009A0823904209D1002307E00024E8E70A4B9E42F8D10223002CF5D11800FEBDC0460000021000FFFEFF00FFFCFF47 -:403C800000000410F8FFFFFE2033021000000310C023F0B517008022060000688BB0DB0502910340D205934214D16C4B02249F420DD83200F9001032FFF7B0FD041E06D1A7 -:403CC000002F04D03A000299306918F0C7F920000BB0F0BD624A030C1B04934247D10023123880B203930C2802D85E4A125C03923361AC21012017F0F3FA0924051EE6D0D2 -:403D0000039909F01FFFFFF703FA041E28D12B007C333A0002991800039304F007F9FFF7F7F9041E1CD10399280008F0DBFBFFF7EFF9041E14D1A0224B4B92009B180193D4 -:403D40004A4B290000932B00039A28338831280008F0B8FFFFF7DCF9041E01D13561B6E7280007F0AEFE280017F03EFEAFE702003F4B404D1A400393AA4205D03E4B022408 -:403D800018403E4B9842A2D105A80BF092F8E0223368D205134093420CD100233A000093029905A80BF07AFD041E09D0FFF7B0F904008CE73A00029905A80BF04DFEF3E7CD -:403DC0003768039B3B40AB422FD105A80BF0ACF8012841D1069D28000CF030FE8023C0005B01984204D9022405A80BF068F86EE707A803F0D9FE230022000194009407A912 -:403E000028000CF053FDFFF783F9041E05D107A804F062F8430700D0023407A803F0CCFE002CE1D13561002451E7134B134A3B409342D8D105A80BF077F802280CD1069AA9 -:403E40001378013BDBB20C2B01D80D49CC5CBFB2A74201D13261E6E70824C5E7FFFFFF1F0000037011330210685C000871A90010FFFFFFEF000001600000FFEF0000036083 -:403E8000043302107FB51E4E07243368002B13D0421E93B201341F2B0ED818235343F02292009D1875190D60F321F218890051180968012903D00024200004B070BDF02162 -:403EC000890052181268002AF5D102920392F12292009A1803AB0093B21802AB290002F090F9041E05D1039A02992800FFF7D0FE04000399029802F07BF9062CDCD1DAE72D -:403F0000685C0008002313B50C000B6001A90193FFF7B8FF002804D1019B1A68002A01D1236016BD0520FCE773B51E0000230D000B6001A914000193FFF7A4FF002816D118 -:403F4000019B1A68002A13D0E021C9050A40C021C9058A4201D1012294435A682240944208D1002E02D09A68964203D12B6076BD0620FCE70320FAE7F0B587B0039105A94C -:403F8000050016001F00FFF7BDFF041E0BD10598039B310003603A00FFF77AFE0599041E04D000230B60200007B0F0BDCB68012BF9D100970A1D33000968280002F0F0F86D -:403FC000041EF0D00598FFF78BFC0022059B1A60E9E773B501A90600FFF754FF041E13D1019B0500DB68012B03D1300002F084F905000198FFF774FC182104000198FFF73F -:404000007FF8002C00D12C00200076BD73B50D001400002901D000230B60002C01D00023236001A9FFF72EFF061E0BD101980368002B09D0002D00D02B60002C02D0FFF7C8 -:4040400027FC2060300076BD0626FBE77FB51C0000230D0016002360012203A9FFF764FF002807D1206000902300320029000398FFF768FC04B070BDF0B51600002285B075 -:404080000D001C001A6003A91300FFF74DFF002810D1C022039FD2053B68206013400830934207D1012332000093290023003800FFF748FC05B0F0BD03680C4A10B504000A -:4040C000934206D80A4A93420AD2002B0BD007200BE0084A9342FAD808300EF077FD02E008300DF0BAFF0020206010BD09000001080000010B00000110B504008021E03077 -:40410000FEF7FEFF2000FFF7D7FF10BD036870B505000E481818032815D82B0008331BF05FFE02020E0E18000EF07EFC041E02D02800FFF7C1FF2000FEF7EAFF70BD18000E -:404140000FF0BEFBF2E7024CF2E7C046F8FFFFFE00AFFFFF002370B503601D4B0500C8180E00032825D82C0008341BF039FE0210151D20000DF06BFF012120000DF07AFF85 -:40418000041E20D12E602000FEF7C2FF1AE020000DF05DFF0021F0E720000EF011FD012120000EF01FFDEBE720000EF009FD0021F6E7FE23DB051E40802302205B049E423E -:4041C00000D0063070BD2800FFF776FFDBE7C046F8FFFFFE002310B59A4202D0FFF796FF0300180010BD0000F7B580241F00037864041600324A23439A180500019110246D -:40420000022A2DD92F4A04349A18012A28D92E4A0834934224D02D4A0434934220D02C4A103493421CD02B4A1034934218D02A4A243C934214D0294A0434934210D0284A7C -:40424000043C93420CD0274A0434934208D0264A1034934204D0254A9B185C425C41A4013E60002E04D032002121019817F088FFB4421FD82B681E4A9818032818D82B007F -:40428000019908331BF0ACFD0202101018000EF0D4FBFEF73DFF061E0DD13C602800FFF70BFF06003000FEBD18000FF012FBF0E71048EEE704262800FFF7FEFEF2E7C04639 -:4042C000FFFFFFFEFCFFFFFE08000001090000010A0000010B0000010C0000010D000001100000011100000112000001EDFFFFFEF8FFFFFE00AFFFFFF0B5A5B001936B4687 -:40430000039280221B79520413434D4A029199180600102202292DD94A4904325918012928D9494908328B4224D0484904328B4220D0474910328B421CD0464910328B4223 -:4043400018D04549243A8B4214D0444904328B4210D04349043A8B420CD0424904328B4208D0414910328B4204D0404A9B185A4253419A01019B32495B180A2B49D83C4995 -:404380000224CF5C802F41D80224BA423ED8039804ADB8423FD901993000FFF7DBFE041E30D1039A02993000FFF714FF041E29D103AB802229003000FFF716FF041E21D13D -:4043C00000233621039883422DD13A1A3621281817F0D6FE00206A21039A904228D13300E0333A1A5C21181817F0CAFE01993000FFF7B0FE041E05D13A0029003000FFF707 -:40440000E9FE040003992800FEF77AFE200025B0F0BD0027B8E70028D7D002000299280017F01CFECCE7EA5C4A40EA540133CAE704002B5CE0344B4033550130CDE7C04600 -:40444000FFFFFFFEFCFFFFFE08000001090000010A0000010B0000010C0000010D000001100000011100000112000001EDFFFFFE30330210F0B5002607681E4B95B0FB1875 -:4044800005000091019203960A2B01D81A4AD65C03AB402204A92800FFF7A6FE041E25D139002800FFF756FE041E1BD129003200E0312800FFF78EFE041E13D1039A04A9E0 -:4044C0002800FFF787FE041E0CD103AB402204A92800FFF789FE041E04D1019A04A9009817F0BCFD039904A8FEF70AFE200015B0F0BDC046FFFFFFFE303302107FB5037924 -:4045000004000D0007201100DA071ED506221340022B1AD0627903388A4216D8236812498B4214D120006946083005F0E1FF061E04D162796946280017F090FD684610216A -:40454000FEF7DEFD3000FEF7E3FD04B070BD074907200B40A02189048B42F6D1200029000830FFF787FFF0E70200C0020000C07F8023F0B55B04CFB21F43434BDBB0FB1854 -:4045800005001024022B2DD9404B0434FB18012B28D93F4B08349F4224D03E4B04349F4220D03D4B10349F421CD03C4B10349F4218D03B4B243C9F4214D03A4B04349F42E9 -:4045C00010D0394B043C9F420CD0384B04349F4208D0374B10349F4204D0364BFC186242624194012E00513633780720FF2B45D0013333702B000021B022503319705200E1 -:4046000002A817F0BDFD3278AB68012A38D11B190093EB681B1B01933B006A68296802A8FFF76AFE061E23D1019A009902A8FFF7D1FD061E1CD12200A96802A8FFF71AFFDD -:40464000061E15D13B006A68296802A8FFF754FE061E0DD1EA68A96802A8FFF7BBFD061E06D129002200103102A8FFF703FF060002A8FFF741FD002E00D030005BB0F0BDF0 -:4046800000930194C8E7C046FFFFFFFEFCFFFFFE08000001090000010A0000010B0000010C0000010D000001100000011100000112000001EDFFFFFEF0B589B00591A04969 -:4046C000170005000F9A03608B421DD1002A02D0082009B0F0BD119B002BF9D13900012016F0FEFDA860002801D10920F1E73E003A00059917F0B2FCEF60129BB34200D9B9 -:40470000A5E06B600020E4E7FF241900A1438C468C498C4537D12340802464041C438A4BE3180793022B00D897E0884BE318012B00D8FDE0864B9C4200D1FBE0854B9C4232 -:4047400000D1F9E0844B9C4200D1F7E0834B9C4217D0834B9C4200D1ECE0824B9C4200D1EAE0814B9C4200D1E4E0804B9C4200D1E2E07F4B9C4200D1E0E07E4B02209C429B -:40478000A7D140236AE07C495E0A760202208E429FD1234080246C48640423431818102602282DD9694804361818012828D968480836834224D067480436834220D0664876 -:4047C000103683421CD065481036834218D06448243E834214D063480436834210D06248043E83420CD061480436834208D060481036834204D061481E1870424641B6017E -:404800005F4C02201C19012C00D962E7FD304643280008308C450ED11199019203910E9A1099009202913A000599FEF7A3FE002800D162E74DE71199019203910E9A109914 -:40484000009202913A000599FEF722FFEFE7129B013300D03CE76E6054E71023FF265E432B00103306930E9923000698FFF744FD002800D02DE73A0005990698FFF7AAFCB5 -:40488000002800D025E7290071314022FF310698FFF7F0FD002800D01BE7079A1023022A2DD92A4A0433A218012A28D9284A0833944224D0274A0433944220D0264A1033ED -:4048C00094421CD0254A1033944218D0244A243B944214D0234A0433944210D0224A043B94420CD0214A0433944208D0204A1033944204D0214BE418634263419B01F8223A -:404900005200AB54F2230022FF33EA54119BEB60934200D1F1E61900012016F0E1FCA860002800D1E1E6119A109917F097FBE4E6142393E71C2391E720238FE730238DE787 -:404940000100003100010030FFFFFFFEFCFFFFFE08000001090000010A0000010B0000010C0000010D0000011000000111000001120000011300000100020030EDFFFFFE37 -:40498000F7FFFFFEF0B593B002AC0D00160001AB40222100FFF728FC002808D1019FB7420DD1020003009F4203D1002A07D113B0F0BDE95CE65C013371400A43F3E710209B -:4049C000F5E700000021036810B504008B420BD00E4A93420AD1083005F0D0F9E02200212379216013402371080010BD084A1340A0229204934203D10830FFF77DFBEDE7C4 -:404A0000B422520017F0BCFB0721EDE70200C0020000C07FF0B585B00600019117001C008025002B3FD12D01FA2208211020664B3B400093336033791340F83A93438B4342 -:404A400083433371009B1800604B98422DD1701805F08EF9002C03D010233279134333712A003B0003A90198FFF75EFA051E14D10398FEF70DFF009BBC041A00534BA40E5A -:404A800001909A424BD10399020009682B000098FEF734FE011E21D102253000FFF792FF280005B0F0BDED00BEE7A020484B80043B40834202D10023B360CBE7FE23DB0596 -:404AC0001F4080230D009B049F4200D11500B42200215200300017F053FBE1E73500037D083573712800039F05F042FB002804D1019A3969280005F067FCFEF709FB050021 -:404B0000002C05D0032CC7D97379A3424ED37471002DC2D10123327913433371C0E7A0222B4B92043B40934249D1FBB28027294A7F043B439918102202292DD926490432E5 -:404B40005918012928D9254908328B4224D0244904328B4220D0234910328B421CD0224910328B4218D02149243A8B4214D0204904328B4210D01F49043A8B420CD01E498C -:404B800004328B4208D01D4910328B4204D01C4A9A185042504182017271002A00D17BE7A2220399D2050868904201D0082574E730004A6908300969FFF79EFB9FE7022538 -:404BC000002C9FD168E7C046FFC0FFFF0200C0020000C07FFFFFFFFEFCFFFFFE08000001090000010A0000010B0000010C0000010D00000110000001110000011200000196 -:404C0000EDFFFFFE10B50123FFF704FF10BD10B50023FFF7FFFE10BD70B504000079C30704D407252000FFF7CDFE12E006230340022BF6D00823034323710C4823688342E9 -:404C400009D12000083005F0E9FBFEF761FA051EE8D1280070BD06480340A02080048342DFD120000830FFF7B5FAF0E70200C0020000C07FF7B51F0005000191161E3A6057 -:404C800003D02121019817F07BFA2B790724DB0615D5320001992800FFF730FC041E0ED12800FFF78FFE041E03D16B793B602000FEBD32002121019817F062FAF7E72800A8 -:404CC000FFF780FEF3E71023F0B5047993B0060001911C4026D14779974204D010253000FFF770FE0FE0402202A9FFF707FC230005009F420ED8002CF0D1002DEFD13000BF -:404D0000FFF760FE050002A84021FEF7F9F9280013B0F0BD019A02A9D25CC95C01334A401443E6E70725DAE7F0B58FB005920493159A169B0C001A6080220B00D20007A901 -:404D4000FFF7F2F8051E67D1079AE0211368C90518000835084088425ED169498B4264D10BAF166904993A002000FEF745FF051E52D130000BF062FE159B83424BD3FF23D4 -:404D80009C43604B9C422DD12A00290030000BF04FFEA021149B5C4A0393059B89000293049B521801933B7858490093300001230CF0AAFC041E04D130000BF03FFE169BCE -:404DC00018602000FEF7A4F9051E25D12121169B1868159B1A1A149B181817F0D1F928000FB0F0BD4A4B9C421DD13A78300001210BF01EFEA021149B434A0393059B89009D -:404E00000293049B52180193009501233F4930000CF044FBCEE70425159B002BDFD01A0021211498D9E70825F6E73A4902250B4039498B42F0D1394B3949234006358B42E4 -:404E4000EAD1166908A8B36DDD1D02F0ADFE0BA802F0AAFE159BED086F00BB424DD3E30338D5E4B2002C33D080235B041C432D4BE418032C2CD82C4BA400E05809F08DFE7C -:404E80003300049A02900192059A7C33009208A90BAA300006F023F8041E0DD12A00149908A803F079F8041E06D1149B2A0059190BA803F071F8040008A802F07DFE0BA863 -:404EC00002F07AFE002C00D07BE7169B1F6078E70020D3E7A02133000B4A8900521803920A4A7C330292049A08A90192059A300000920BAA05F0E6FFCEE70C4CDCE7C04671 -:404F00000000017000000210685C000871A90010000003100000FFEF0000036000FFFEFF00000610F8FFFFFE2033021000B1FFFFF0B591B00792802206930D000B00120195 -:404F400009A9FEF7F1FF041E52D1099A4B4913684B481940814250D10DAF166906993A002800FEF749FE041E42D130000BF066FD179B83423BD3FF239D43424B9D421DD1B7 -:404F80002200210030000BF053FDA021169B3E4A0393079B89000293069B521801933B783A490093300023000CF03AFD384B102498421DD0FEF7ACF8040019E0354B9D4282 -:404FC00019D13A78300001210BF032FDA021169B2D4A0393079B89000293069B5218019300942300294930000CF09AFCDEE70424200011B0F0BD0824FAE7274902240B4067 -:4050000026498B42F4D1264B06341D40254B9D42EED117690AAEBB6D30000733DB080DAD059302F0C1FD280002F0BEFD059B179A5B0008349A42DBD1059A1699300002F0F5 -:4050400075FF041E11D1169B059A2800991802F06DFF041E09D13B00019588330096069A0799380005F047FF0400300002F0A4FD280002F0A1FD20009CE7C046FFFFFFEF4C -:405080000000016000000210685C000871A9001000BFFFFF000003100000FFEF0000036000FFFEFF00000610F0B51E0000238BB01700149A0D0013600A00FF339A432E4B5C -:4050C00007929A4205D0119B002B02D008200BB0F0BD80222B00520009A9FEF725FF0028F5D1099AC0211368C905180008408842ECD1224902200B4021498B42E7D114695D -:4051000020000BF09BFC139B9842DFD81D4B9D4217D1A021129B1C4A890002935218019700960023194920000BF0FAFF051E04D120000BF083FC149B18602800FDF7E8FF70 -:40514000C5E7079B1A000C4B9A42BFD121002800FEF72EFDA021129B0B4A0493119B89000193109B52180093039702960023074920000BF0CFFED9E700000312FFFFFFEF82 -:405180000000016000000212685C000871A90010F0B58BB0079300231700149A2D4E13600A00FF339A430D000692B24205D0119B002B02D008200BB0F0BD80222B00920015 -:4051C00009A9FEF7B1FE0028F5D1099BE0211A68C905100008408842ECD11F4902208A42E9D11C6920000BF029FC079B9842E1D11A4B9D4212D1A021139B194A0393129B58 -:4052000089000293149B5218009301970123154920000CF01FF9FDF77BFFCCE7069BB342C8D121002800FEF7C3FCA021139B0C4A0593129B89000493149B52180293119B85 -:4052400003970193109B07490093200001230BF087FFE0E7000003120000017000000212685C000871A9001010B5036804000020834213D0FE22D205134080220730D20461 -:4052800093420BD12000083004F078FDF82200202379206013406071A071237110BD0000F0B587B004000291160003938025012B10D0AD00FE238022DB053340D204934252 -:4052C0000AD04C220021200016F05AFF0825280007B0F0BD6D00EDE701220227237926609343033293433B43237100236371A371230008331800019304F03AFD2A003300CE -:4053000005A90298FEF710FE051EE0D10598FEF7BFFA05990290020009682B003000FEF7EDF9011E5FD0019804F022FF071E07D02000FFF799FF3800FDF7EAFE0500C6E7BE -:405340000599039B029A0969019804F02FFD071EEED1264B9E4239D0254B9E4241D001222379902113432371FF23DB053340C9048B4212D0059B1F491B6810228B420CD0DA -:405380001D49083A8B4208D01C4908328B4204D01B4A9B185A425341DAB2A271730200D495E7059B13491B6810228B420CD01249083A8B4208D0114908328B4204D0104A89 -:4053C0009B185A425341DAB2627180E70421019804F0ACFE071EABD10123227913432371C8E72900F3E73D0071E7C046000160040101600401000040020000400300004080 -:40540000FCFFFFBF10B50123FFF74AFF10BD10B50023FFF745FF10BD70B503790400062007250340022B11D16379013593420DD11A00601904F0DEFCFDF76AFE051E05D10B -:405440000423227913432371280070BD2000FFF70BFFF9E7F8B50E0006211F00037905000B400724022B11D14379033C93420DD81A00A0230B489B003100C01805F078FA34 -:40548000002808D0FDF744FE041E02D02800FFF7EBFE2000F8BD6A7931003A602800FFF7BBFFF1E7685C0008F0B585B00393FF2316000268DB051340902204000F00D204DC -:4054C0003000934206D0A579E36A2900F0181AF09BFC68430A9B042598420CD820000B9B320000933900039B083004F0B9FCFDF70FFE051E02D02000FFF7B6FE280005B07D -:40550000F0BD0000F0B51E00037987B0040001911700DA0738D506221340022B34D01023C356012B06D11A4B02689A4202D1C36A002B2BD12000320002A9083004F08CFD2E -:4055400000280CD0FDF7E4FD0500002302A833601021FDF7D5FD2000FFF786FE11E03268002A06D00425BA42EFD802A9019816F075FD102102A8FDF7C3FD2000FFF774FE12 -:405580000500280007B0F0BD0725DEE70825DCE70001600413B50C1E01D1082016BD01A9FEF7B0FC0028F9D1044B22681A42F4D1019B043306CC06C3F0E7C046FEE0FFFFF7 -:4055C00013B508220C1E08D001A9FEF75BFC021E03D1019B043303CB03C4100016BD13B50C0001A9FEF74EFC002802D1019BDB68236016BD13B50C00012903D9084A08233E -:40560000914209D101A9FEF77DFC031E04D1044A944203D0019AD460180016BD0223FBE7FFFFFF7FF0B51E000023F3B009927E9A0AAD136080220B000F0052002900FEF7E9 -:4056400073FC041E3ED139002800FEF72BFA041E38D19E27FF37EB5D7B9A7D999A188A4248D87B997C9A24485218CC214900695881422AD105937C9B069204937A9B00969A -:405680000393799B7B9A0293789B012101930CA8099B08F0CFFFFDF73BFD041E07D07D9B002B04D01A0000217C9816F069FD0AAD2800FEF79BF8002C04D1EB5D7B9A9B1840 -:4056C0007E9A1360200073B0F0BD0C4802248142F8D105937C9B049203937A9B099A0293799B7B990193789B0CA80093330003F0D1FFD0E70424DAE7021000060110000626 -:40570000F0B51E000023F1B007927C9A08AD136080220B000F0092002900FEF705FC041E40D139002800FEF7BDF9041E3AD1CC235B00EB582E4A934237D19E23FF33EB5C16 -:40574000799A08349A4220D3D11A7B9A043C8A421BD37A9A03930592789A0AA853180293779B04920193769B079A0093330008F07CFFFDF7CDFC041E07D07B9B002B04D01A -:405780001A0000217A9816F0FBFC08AD2800FEF72DF8002C06D19E23FF33EB5C799AD31A7C9A1360200071B0F0BD124A02249342F8D19E23FF33EB5C799A06349342E4D8BC -:4057C000D11A7B9A043C8A42DFD30593789B079A5B1804937A9B0AA80393789B0293779B0193769B0093330003F096FFC1E7C0460210000601100006036870B50400002BEF -:4058000001D100251AE01D4A934209D180680028F7D0E168FDF774FCA06816F0E5F8F0E7FF2219009143164A91420FD1806816F0DBF820001030FEF75FFC0500FC22002145 -:405840005200200016F09CFC280070BD0D4A5B0A5B0207259342F1D18068002805D0E168FDF74EFCA06816F0BFF820690028C8D06169FDF745FC2069CFE7C04601000031F7 -:405880000001003000020030436800200B607047F0B587B0039141680400009291420BD20023122543602000FFF7A6FF009A2121039816F065FC19E0009B0768002B04D1A0 -:4058C000002902D11225002F10D0009BC91A984B61609F420DD1E368009A591A009B0398C91AA368591816F0B9FB0025280007B0F0BDFF2339008F4A9943914200D0A5E0F5 -:405900001F4080235B041F438B4B1026FB18022B2DD98A4B0436FB18012B28D9884B08369F4224D0874B04369F4220D0864B10369F421CD0854B10369F4218D0844B243E4C -:405940009F4214D0834B04369F4210D0824B043E9F420CD0814B04369F4208D0804B10369F4204D07F4BFE18724272419601009B0193039B0593019B002BB6D0F8235B0042 -:40598000E15C019B751AEDB29D4201D96B461D79230008330293A933FF3359182A000598049316F05BFB059B5B190593019B5B1B0193F8235B00E35CED18F8235B00E554F9 -:4059C000019B002B00D190E7F223FF33E35CFF2B00D1AAE0F2220133FF32A35400232100013AA354029B71310833029332003B00FF310298FEF780FC051E00D053E7F223AE -:405A0000FF33E35C012B19D1E268A1680298FEF7E1FB051E00D046E72100F2310122FF310298FEF773FB051E00D03CE7402204990298FEF71FFD051E9DD034E73200049933 -:405A40000298FEF7C7FB051EDED02CE746497A0A520207258A4200D048E7220080260832760404923B40344A33439A181026022A2DD9324A04369A18012A28D9304A0836AC -:405A8000934224D02F4A0436934220D02E4A103693421CD02D4A1036934218D02C4A243E934214D02B4A0436934210D02A4A043E93420CD0294A0436934208D0284A10363E -:405AC000934204D0274A9B185E425E41B601009B0193039B0293019B002B00D105E7230058331B78F51AEDB2002D06D139000498FEF73EFD051EEED0D5E6019A954201D91D -:405B00006A461579210018312A00C918029816F0A5FA029B5B190293019B5B1B0193230058331A78AD181D70D5E70725BBE6C0460100003100010030FFFFFFFEFCFFFFFEB0 -:405B400008000001090000010A0000010B0000010C0000010D000001100000011100000112000001EDFFFFFE00020030F7B50193C023DB050F000B4080210090C905082506 -:405B80008B421BD1530719D10732D4082100012015F0A6FB0135061E10D0010022000198FFF776FE051E06D12300320039000098FEF7E2F90500300015F016FF2800FEBD69 -:405BC000F0B505001F002B6889B0080016000724002B07D1FE23DB051340C0229205934203D00824200009B0F0BD80223300520107A9FEF799F9041EF4D1A4230799DB0510 -:405C00000A689A42EDD1119B00970493109B280003930F9B02930E9B01934A6933000969FEF74AFD041EDDD02800FFF7E5FDD9E7F0B51F00EBB0FC2307928822709DDB05C8 -:405C400006002B40080092050824934272D180222B00520108A9FEF767F9041E6AD1394B3949089A09902B408B4200D067E0136836491B0C1B0408348B4258D11DA8146909 -:405C800004F0A8FE0AA809F014F93A0007990AA809F0E2FE071E26D10AA809F045F90238C0B2012849D80B9923780A789A4244D101221DA804F0D8FE071E14D102002100A1 -:405CC0001DA804F0D1FE071E0DD1A022204B92009B1801931F4B0CAA009309A942231DA804F0E8FE07000AA809F0E9F81DA804F097FE3800FDF70CFA041E12D1164B03909E -:405D00001D40C0239B051D4301235B4204930290019000902B00099A0CA93000FEF7CCFC040009990CA8FDF7EBF9002C02D03000FFF762FD20006BB0F0BD084FD3E70224D4 -:405D4000F5E7C0460000F0FE0000202200000370685C000871A90010FFFF0F0180B3FFFF084B0A00196810B504000720002907D0A02189005818210004F0FAFDFDF7C8F920 -:405D800010BDC046685C0008F0B5164B85B01E6801900D00002E23D10B00F022403B9200082493420ED8AE2002A94042FBF718FC073C092806D80C4F3B56072805D01C0053 -:405DC00000280DD0200005B0F0BDAE203300019A29004042FBF7A8FB0928F3D83C56F1E70324EFE7685C00083B330210F0B589B005900C0017001D1E06D10E9B002B03D042 -:405E00000826300009B0F0BD06A90598FEF77AF8061EF6D1C023DB05234004938023049ADB059A4214D1069A390010322000FDF7F5FC002847D1069B59691869FFF790FF98 -:405E4000051E44D0069B2E00186915F0CDFDD8E7514A230C1B04934201D00226D1E72300123B9BB203900C2B02D84C4AD35C0393039805F09BFD002DEFD1039B002BECD048 -:405E80000028EAD083889F42BAD1AC21012015F027FA051E00D17DE005F0C6FDA022404B92009B1829003F4A039807F026F8039000280AD0280005F004FE280015F094FD06 -:405EC0000398FDF725F906009BE7069B1D61069DEB682C60012B00D093E78023049ADB059A4217D1FC1DE4082100012015F0F8F90926071E00D184E7002301000793009353 -:405F0000220007AB2800FDF71DFD061E30D000232B6037E0244B9C4206D109247F080137FF087C433B34DFE7204B9C4202D1FC082934D9E71E4B9C4204D10324FF087C431D -:405F40005A34D1E71B4B9C4204D10324FF087C434A34C9E7104A240C23049342C2D0164A00249342C0D1FC1DE40812346400BBE7079B2A1D009329683B00059800F010F976 -:405F8000061EC4D138000799FDF7BAF8380015F02BFD36E7092634E70000037011330210685C000871A90010000001700000016000000270000002600000036013B5012429 -:405FC00001A92000FDF75EFF002806D10198FDF787FC18210198FDF793F80134A4B2212CEED1A023074C9B00E01804F0E1FB2000083007F083FFD8212000C900FDF780F8F7 -:4060000013BDC046685C00087FB50020144B154C0393236883421ED1D8212600C90020000836FDF76DF8300007F03EFFA0239B00E518280004F0B5FB032328000093320098 -:4060400003AB094904F026FC051E06D1012323602800FDF75DF804B070BDFFF7AFFFF7E750534100685C000873DF0010F7B5089C0E00150001900822174920001F0015F0B1 -:40608000EDFF0023200023726372A372E3722B0A257363732B0C2D0EE573A3733B6801991A0A237462741A0C1B0EA274E3747B681C301A0A237562751A0C1B0EE375330A2A -:4060C0006376330CA376330EA27526763200E37615F0C4FFF7BDC04645330210F7B504000D0017001E001B2902D80C231800FEBD08222A4915F08CFF0028F6D1637A227A3D -:406100001B021A43A37A1B041343E27A12061A430192EAD1637E217E1B020B43A17E1C3D09040B43E17E090619433160A942DCD8F023DB019942D8D8012015F0D1F80923E7 -:4061400038600028D2D0627B237B12021A432100A37B1C311B041A43E37B1B061343089A1360627C237C12021A43A37C1B041A43E37C1B061343099A1360627D237D1202D7 -:406180001A43A37D1B041A43E37D1B061343099A5360326815F062FF019BA7E745330210F0B587B00593F02304920C9A06000391DB010A259A4218D817001C37390001200D -:4061C00015F08EF8013D041E0FD00090049B039A0C990598FFF74AFF3A002100300000F05FF80500200015F0FFFB280007B0F0BD10B5041E01D009F009FF200015F0F4FB39 -:4062000010BDF0B587B003930023029105A906001700059300F086F8041E1AD10599012015F05EF80934051E13D00100059A300000F012F8041E09D1029B01970093039A03 -:406240000C9B05992800FFF749FF0400280015F0CBFB200007B0F0BDF7B50F00694605001600FBF7BDF9092802D901210800FEBD064C21560029F9D13B0032002800FBF797 -:4062800081F90928F1D82156F0E7C0464D33021007B56946FBF7A4F90738431E98410EBDF7B505000F001600FFF7F2FF052401281CD000233A0031002800FBF735F907343A -:4062C000092813D80B4F3B56002B0FD169462800FBF786F909280BD83C56002C03D1009B9E4203D00C342800FBF7AEF92000FEBD0124F8E74D33021013B569460400FBF771 -:406300006FF907280CD02000FBF79EF9002801D00C2016BD69462000FBF762F90728F7D10020F6E713B50C006946FBF759F90123092805D8034B1B56002B01D1009A226068 -:40634000180016BD4D3302100300AE2010B50A0040420021FBF716F9404210BD0200AE2010B500234042FBF7DFF8404210BD8C2210B55200002115F003FF10BD10B5002814 -:4063800003D08C21490009F041FE10BDF0B5C02A09D080235B009A4241D0F63B802A03D0202040423AE00C230360030008331D005209920043608A188A4232D102680C2AA4 -:4063C0003CD00E2A69D000200A2A27D1FF25564E564C8200D9681F68925901307A400F0A2F40E75D7A400F0EE75D3F047A400F002F40E75D3F067A400F0C2F40E75D3F0296 -:406400007A405F681A617A409F685A617A409A614A40DA6110330A28DBD10020F0BD0E23C2E74C788E782402360434430E783443CE7804313606344310C5BDE70020FF2519 -:40644000394E3A4C820059691F68925901307A400F0A2F40E75D7A400F0EE75D3F047A400F002F40E75D3F067A400F0C2F40E75D3F027A405F689A617A409F68DA617A4088 -:40648000DF681A627A401F695A627A409A624A40DA6218330828D5D1BFE70025FF242349D869214EAA00070A925927401E68CF5D72407A40070ECF5D5E683F047A4007003E -:4064C0002740CF5D01353F067A40070C2740CF5D3F027A401A6272409E685A627240DE689A62724017002740CF5D1E69DA627E40170ECF5D3F067740160A2640120C8E5D96 -:4065000022408A5C36027E40120472405E691A6372409E695A6372409A634240DA632033072DBDD179E7C0465844021057330210F0B50500C9B002A80C001600FFF717FF6D -:406540002B0008336B603200210002A8FFF71EFF019000281FD1029A039B11012A60013A0092FF225B1819689446A9605968103BE960996929612900D869183168611D4DCF -:40658000009A002A0DDC1A680A605A684A609A688A60DB68CB6002A8FFF7F0FE019849B0F0BD002066461A58134C1640AE5D170EB600EF5D3659114CBF003F5964467E40DF -:4065C000170A2740EF5D0E4CBF003F596446120C2240AA5C7E400B4F9200D25956400E5004301028DED1009A1031013A0092103BC6E7C04657330210804502108051021006 -:4066000080490210804D0210F0B589B04E7802920A78360216438A78436812041643CA781C68120632434E7954400A79360216438A79039412041643CA795C6812063243DA -:40664000544004944C7A0A7A240214438A7A0E7B12041443CA7A0068120622439C68401062404C7B0138240226438C7BC97B24043443090621431C000790DD481034019471 -:406680001D69DC688446FF23DA4F61400798002800DDDEE00398D64FD74C18400E0E8000B6002058F659140C704045400498D14E000A1840800080591C404540CF48A4003D -:4066C00024586C400594039C049D240EA400A4461D40C94CAD0065596446E4596540019C64686540140A1C40A400A45965400C0C1C40A40024586C400694049C1500240EE1 -:40670000A400A4461D40BC4CAD0065596446E459120E6540019C9200A46865400C0A1C40A400A45919406540039C8900240C1C40A40024586540B04C6158D759019A7940AC -:40674000D268019C5140039AA469120A1A4092009759049A4F40120C1A409200125805995740A74A1940505C019909694840390E515C090648400699090A1940515C090261 -:406780004840290C1940515C0904484006991940565C019949694E400599090E515C090671402E0A1E40965D360271403E0C1E40965D360471402E001E40965D2D0E744075 -:4067C000A446069C260E6446965D360666403C0A1C40145D1F4024027440A446059C260C64461E40965DD75D36046640019CE4696740545D24066740059C250A1D40545D51 -:4068000024026740069C250C2B40D45C029B029A1870030A5370030C000ED070002093700B0A53710B0C93712404330A7C405372330C9372230A11711672090E360E1473D5 -:406840005373230C240ED171D6729373D47309B0F0BD0398684C18408000205864460D0EAD002D59019C68402468160C6040049C1E40250A1D40AD00ED59B60068405F4D03 -:406880007659704005902000039C1840260E5A4C800020586446B6003659019C7040160A1E406468B600F659604070400E0C1E40B6007659049C704006901000260E184081 -:4068C0004D4C800020586446B6003659019C70400E0AA4681E40B600F6596040039C70401940260C444C890061586446120E920012591E40B60076595140019A3E4CD2685E -:4069000070405140039A120A1A409200D2595140049A120C1A40920052595140059A0E0E1A409200A2586446B6003659019C724024696240069C260A1E40B600F6597240DC -:40694000060C1E40B6007659724003922200059C1A40260E284C9200A2586446B6003659019C7240060A1E406469B600F659624072400E0C1E40B6007659069C72400492D1 -:406980000200260E1A401C4C9200A2586446B6003659019C72400E0AA4691E40B600F6596240059C72401940260C134C890061586446000E800000591E4041400198B600AD -:4069C000C0697659414005987240000A18408000C05941400698000C18408000405941400798013807900198056A203001904DE6584002105838021058340210583C02109C -:406A000057330210F0B54D780F782D023D438F784E793F043D43CF7836023F062F430D7943682E438D7987B02D0400921A682E43CD797A4001922D065A6835436A404C7A4E -:406A400002920A7A240214438A7A9E6812041443CA7A0D7B1206224356404A7BDC68120215438A7BC97B12042A43090611431F691A00DA4B00689C46FF2340100138103289 -:406A8000614005900598002800DDDAE0029C0198250E6446184080002458D148AD002858D04D60400C0A1C40A40064597840370C60401F40CC4CBF003F59644678400390A8 -:406AC0000298370E184080002058C54CBF003F59546878406040019C270A1F40BF007F59C14C78400F0C1F40BF003F5964467840049030001840800020580F0EB84CBF003B -:406B00003F59946878406040029C1940270A1F40BF007F59019C7840270C1F40B24CBF003F598900784005900198360A070E60464158AB48BF003F581E40D068B6007940BE -:406B4000775941404F40029910690D0C1D40AD002959039C4F40A5491C400D5D45400498040E0C5D0598240665403C0A1C400C5D24026540040C1C400C5D50692404654061 -:406B8000049C1C400E5D46400598040E0C5D039824067440060A1E408E5D9069360274403E0C1E408E5D36047440059E1E408E5D70403E0E8E5D1F40360646400498CF5DDC -:406BC000000A1840085C0002704084460398060C60461E408E5DD26936045740039A4640120E05988A5C000A184012067A400F5C04983F02000C034000207A40CF5C009B7A -:406C000000991D702B0A4B702B0C8B70230A4B71230C3F048B71330A7A404B72330C8B72130A2D0E0C710E72240E360E0A734B73130C120ECD70CC71CE728B73CA7307B0D4 -:406C4000F0BD65466746019C02981C40A4002D59000E634C80000059624C454010684540080A1840800000595F4C4540300C1840800000594540029803951840800038588D -:406C8000350E574FAD00ED59564F684055686840019D2D0A1D40AD00ED59674668400D0C1D40AD002D596840049030001840800038580D0E4A4FAD00ED594A4F684095686A -:406CC00019406840029D89002D0A1D40AD00ED596840019D2D0C1D40AD002D596840019D2F0E654669583E4DBF007D5967466940D5686940350A1D403A4EAD00AD59039E12 -:406D00006940029D1E402D0C1D40AD002D59B6006940049DBF592D0E314EAD00AD59314E6F4015696F400D0A1D40AD00AD59060E6F40050C1D40AD002D59B6006F4001977C -:406D40006746049D1D40AD007D59254FF659254F754056697540039E360A1E40B600F659674675400E0C1E40B60036597540029505001D40AD007D590E0E194FB600F65968 -:406D800019407540966989007540049E154F360A1E40B600F65967467540039E7958360C1E40B60036590E4F6E40039D000A2D0EAD00ED5918406940D56980006940094D85 -:406DC000176A455904986940000C1840800000592032414005980138059053E6804502108051021080490210804D02108044021010B50C0011001A00012C02D1FFF704FC3F -:406E000010BDFFF7FFFDFBE7F0B589B00290039116000193130745D115001400002921D00E9B741B1A190F9B1C19002D24D1280020E01022390004A815F010F93A002B0072 -:406E400000210298FFF7D4FF00220199AB5C895C4B40AB540132102AF7D104A9019815F0FDF8103C0E9B351B5F190F9B5D19002CDFD1200009B0F0BD00270199D35DC95D91 -:406E80004B40E3550137102FF7D12300220003990298FFF7ADFF3A002100019815F0DEF8103DBDE722204042E4E7F0B5146885B0039017001E000F2C2DD80B9B0C9D019323 -:406EC0006B180293029B9D4203D100203C6005B0F0BD002C0DD0019A0A9B12781B5D013453402B700F231C40019B013501330193E8E70A9A31000398FFF786FB3200711EBF -:406F00000F3213780133DBB21370002BE3D1013A9142F6D1DFE721204042D8E7036870B50400CD1A002D02DC602040420DE0187846B2002E0ADB581C20601B7813602368B0 -:406F40000020C91A13688B42EED870BD7F263040013803282ED818F043FF0209121E012DE2D05878023310602360E8E7022DDBDD58789D780002284310600333F4E7032D3E -:406F8000D2DD58789D7800042D022843DD78043328431060E8E7042DC6DD58789D7800062D0428431D792843DD7805332D0228431060D9E76420B8E770B504680D1B002DAD -:406FC00007DD25789D4207D101340460FFF7A6FF70BD60204042FBE76220FBE737B50223150001AA0400FFF7E7FF00280DD1019B013B032B13D823681B787F2B0FD82860D1 -:40700000019B5A1E0192002B00D13EBD22682B6811781B020B4301322B602260F0E764204042F2E737B50223150001AA0400FFF7C3FF002808D1019A2168280000F076FF6C -:407040002368019A9B1823603EBD70B5032304001500FFF7B1FF00280CD12B685A1E2A60012B05D923685A1C22601B78002B01D06820404270BDF0B585B017001E0003AA06 -:40708000302304000191FFF797FF051E1ED12168019B5B1A002B32DD3A000B78200008C2039BCB18019301990623FFF785FF051E0CD12368BB6022687B68D318019A236060 -:4070C0009A4206D10C21300008F0A0FF280005B0F0BD32001978013302C2200023600199FFF71CFF051EF1D12368B36022687368D318019A23609A42E8D0662500E06025E1 -:407100006D42E3E710B503687F2A07D8591A00295DDD013B036001201A7010BDFF2A0CD8591A012953DD013B03601A7081220368013B03601A700220EFE7264CA24211D8C0 -:40714000591A022943DD013B03601A700368120A013B03601A7082220368013B03601A700320DAE71C4C591AA24215D803292EDD013B03601A700368110A013B03601970A2 -:407180000368120C013B03601A7083220368013B03601A700420C0E7042918DD013B03601A700368110A013B036019700368110C013B036019700368120E013B03601A70BC -:4071C00084220368013B03601A700520A5E76C204042A2E7FFFF0000FFFFFF000368591A002904DD013B036001201A7070476C204042FBE770B51C00036815008B420BD3CD -:40720000591AA14208D31B1B036022002900180014F024FF200070BD6C204042FBE7F8B5050010000E00170000F07AFE29680400B14202D26C204042F8BD8B1B9842F9D8FE -:40724000091A02002960380000F0A6FE0028F3D13B68012B0AD12B681A787F2A06D99A1B002AE7DD013B2B6001341870220031002800FFF747FF0028DEDB04190222310020 -:407280002800FFF7ABFF0028D6DB0019D4E770B5002204000D00FFF735FF002808DB0600052229002000FFF799FF002800DB801970BD70B505000E00FFF79CFF002810DB23 -:4072C0000400020031002800FFF71CFF002808DB0419062231002800FFF780FF002800DB001970BDF8B51F00069B05000E001400002B04D1FFF7CBFF00281ADB06903B0075 -:40730000220031002800FFF7D4FF002811DB069B3100C41822002800FFF7F4FE002808DB0419302231002800FFF758FF002800DB0019F8BD036870B50E000500591A0029E5 -:4073400002DC6C20404270BD013B03601A70002A1DDD036801241A787F2A07D99A1B002AEFDD0022013B036024191A70220031002800FFF7C7FE0028E5DB04190222310039 -:407380002800FFF72BFF0028DDDB0019DBE70124ECE70000F0B5002485B0019025002000434E039102920A9A290095421CD25F5C202F15D00A9A521A012A05D90D2F03D19B -:4073C0005F187F780A2F20D05F5C0A2F1DD08D4204D13D2F0ED10134022C0ED92C2038E00A9A01318A42E2D1002810D1029B186005B0F0BD7DB2002DF0DBF55D7F2DEDD0C1 -:407400003F2D01D8002CE9D101304D1CCBE70726062506406E43C00868430736019AF608041BA619002A11D0039A96420ED85A18002103240D0001980392039A93420AD1B7 -:40744000019BC01A029B18600020D1E72A20029B1E604042CCE71F783E000A3EF6B2162E05D8144AF24016000122B24315D0104A8901D65D01353700403F7A427A41A41A4E -:407480003F2216403143042D07D10025AC4204D00E0C0670012C02D101300133CDE70E0A4670022C01D10230F7E781700330F4E780550210090040001300303B10B5DCB22A -:4074C000092C00D9FF2303601300413B052B01D80A3303601300613B052B01D8573A0260036800208B4201D30620404210BD0023F0B516001D00854204D1A9005118002BA1 -:4075000012D1F0BD34689C42BF41E41A3460AB00CB587F429C469C429B415B42DB196746E41B10C60135E6E70A68D01A9A429B4101C15B42E3E7F0B5CE46474680B587B07F -:40754000019300238446009003910292059363460F2B22D80F23009A1A40944600926346072B00D9F9E10723009A1A4094466346002B01D000F0EAFA0299059A0B689B186C -:4075800008C1059883429241524205928342F4D307B00CBC90469946F0BD03980299059A019B1F0CB9461F043F0CB84640C8370C3604360C444674434B465E434D467D43A1 -:4075C00043465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CE0 -:40760000ED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18B8 -:40764000A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A4180022554155 -:407680003304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E4185541C0 -:4076C0003B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E418554178 -:407700000B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A41EE -:4077400010C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370CAC -:407780003604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444682 -:4077C00074434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E435F -:407800004D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343462B -:407840005F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED18E1 -:407880003B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A4187F -:4078C000002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A41800225541330458 -:40790000E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B0435 -:40794000E41855410B68E4186A4110C105920291039010235B429C44F9E503980299059A019B1F0CB9461F043F0CB84640C8370C3604360C444674434B465E434D467D43AB -:4079800043465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330C1C -:4079C000ED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18F5 -:407A0000A418002255413304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A4180022554191 -:407A40003304E41855413B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E4185541FC -:407A80003B04E41855410B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E4185541B4 -:407AC0000B68E4186A4110C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A412B -:407B000010C140C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418002255413304E41855413B04E41855410B68E4186A4110C10592029109 -:407B4000039008235B429C44FFF709FD03980299059A019B1F0CB9461F043F0CB84640C8370C3604360C444674434B465E434D467D4343465F43330CED183B0CED18A418C3 -:407B8000002255413304E41855413B04E41855410B68E4186A4110C105920291039001235B429C44FFF7E3FC002804D001230360002343608360704710B5041E0ED08068C5 -:407BC000002806D06368990008F020FAA06813F00BFF0123236000236360A36010BD0000124B70B504000D00994202D91020404270BD636800209942FAD90421280013F08E -:407C00006FFB061EF2D0A16800290BD063689A0014F024FA6368A068990008F0F7F9A06813F0E2FE6560A6600020E1E710270000436870B504008B4202D8FFF7D1FF70BDC9 -:407C400016485A1E1B189B00002A1CD101320D00914200D215000421280013F041FB061E18D0A16800290AD0AA0014F0F7F96368A068990008F0CAF9A06813F0B5FE656063 -:407C8000A6600020DBE7A068C058043B0028DDD1013AD9E710204042D1E7C046FFFFFF3FF8B505000E0000208D4217D08F68874204D12800FFF780FF00200FE04B685C1EFC -:407CC000002C0CD133686A6801342B6094420CD921002800FFF784FF00280ED0F8BDA300FB58002BEED1013CEAE7AB68121BA00092001818002114F043FAA200B168A86859 -:407D000014F0ACF9D8E7F7B50D00496804001600FFF766FF002818D1012172423243D2B2D3090093C91A2E682368009A4B4356439B1923606B6801930300019A9E00934239 -:407D400004D132006768BB420DD3FEBDA26801339719AA689659009A56433A684A43944666443E60E9E7A5680133AD182E6804324E432E60E7E7F7B504000D0016008842F6 -:407D800001D10020FEBD4968FFF72AFF0028F9D161682800FFF724FF0028F3D1012372423243D2B2D2099B1A190027682E687943564376182660296857435943C919296024 -:407DC0006168019101998842DBD0A66881007618009636680130B446AE6871180E685643370066465E43BE19009F3E6067460E6857435E43F6190E60E4E770B50D0001215D -:407E00000400FFF7EDFE061E0ED1636801009A00A06814F0B5F9E917A3686A184A401A600123ED171D432560300070BD436802005B0100208B4208D94B0992689B001F3030 -:407E4000014098580123C84018407047F8B506000F0014004D09012A1BD843685B0199420DD21F231F40B368AD005D190123BB40BC4000202A689A4314432C60F8BD00204A -:407E80008242FBD0691C3000FFF7AAFE0028E8D0F4E704204042F1E7F7B5002211004668B14215D084688B001B5914000193130020349F1ABC466546019FEF403D000127AE -:407EC0003D4206D1DB199C42F3D1C9192200E7E700231800FEBD00000023426810B59A4214D00E49531E521892008168002B0FD19A0089588022002012060A4203D101301E -:407F000052082028F9D15B0120331B1A180010BD8C58043A002CEBD1013BE6E7FFFFFF3F10B5FFF7D9FF0730C00810BDF7B5032717407B1E9F419308FF18436805000E0048 -:407F400014009F421CD100212800FFF756FF002821D1182203009446002C1CD01A0003218A43A968013C8A18315DDF00019161460F4001990133B940176839431160EBE74D -:407F8000FFF71AFE2800FFF70FFE39002800FFF727FE0028D7D0FEBDF8B505000F001600FFF7BEFF0400B04219D832000021380014F0E6F80321BA1900238C461827013A3E -:407FC000A34201D10020F8BD19006046AE6881437158D8003840C14001331170EFE708204042F0E7F7B50B001F26050033400C0000934F09FFF770FF6B6824185B019C421D -:4080000006D8002F0FD1009B002B25D1002009E02640711E8E41640931192800FFF7E0FD0028EED0FEBD6B68174AB9009A1892004942BB4209D8144A9B1800229B00191DD9 -:40804000E1D0A968CA50043BF9E7A868013B841864588450043AECE7202100246B68BA009C46009BCB1A01936745CFD2AB6800999B181E6801373000884020433400186023 -:40808000019B0432DC40EFE7FFFFFF3F1F23F7B54C09194043689C4202D805D1002934D00021FFF7AAFEFEBD002C30D1002909D000242025174AA4469A186C1A9200019402 -:4080C000002B14D10020EEE786681519AD00AF599500AF5101321D1BAA42F5D30024AA009D42E3D286680135B4500432F8E784686546A4182768013B3E00CE402E432660F6 -:40810000019C043AA740BC46DAE7002CDAD00022E1E7C046FFFFFF3F30B5050043681C4A9A189200002B15D14A6819481418A400002A16D11C0000201443844209D0013011 -:40814000934206D821D3124A9A189200002B0FD1180030BDA8688058043A0028E4D1013BE0E788680059043C0028E3D1013ADFE7A868845888688058844204D8043A8442E2 -:4081800003D3013BE2E70120E3E701204042E0E7FFFFFF3FF0B5170089B007930E9B06005A687B68069101339A425CD30E9B9868002858D09200002113F0E2FF0E9B9B685E -:4081C00005937B680193069B019A5B680293934200D90292019B059C01339B00049300230093009B019A934215D1049B049A191F059BB068591813F031FF39003000FFF720 -:408200008BFF00282BDBB268B9680098FFF76FF9002009B0F0BD009BB2689B009B5802980393069B22009968039B0D685D432368ED18079B5D43039BFFF77DF922002B00BC -:40824000B9680198FFF777F90022039B2360049BE3185A60009B043401330093C1E70E9BB1689A68D1E704204042D2E770B54368234A9A189200002B0FD14C68204AA218C6 -:408280009200002C10D11D0000222543954202D0A34210D90268100070BD8468A458043A002CEAD1013BE6E78D68AD58043A002DE9D1013CE5E70D686A42A342EBD30268EE -:4082C000002A01DD002D17DB002D01DD002A15DB0B4C1C19A400002B01D11A00DBE785682E598D682D59AE42D5D8043CAE4201D25242D0E7013BEEE70122CCE70122F7E767 -:40830000FFFFFF3F1FB5CA178B18534000930123C917194302936B46019101A90393FFF7A5FF05B000BD0000F7B505000C001600904202D0884230D13400012367682B600B -:40834000254BFB189B00002F2ED139002800FFF747FC0190002825D1A368AA68019C9C46100021008E00B94225D19219002C19D06B684F1C994207D339002800FFF730FCE6 -:40838000002827D1AB689A1913683900E318A342A44108C264420436E8E7FFF781FC01900028C9D00198FEBDA268D258043B002ACBD1013FC7E763469E5903680131E3186D -:4083C000A342A441F31808C0B3429B4164425B421C19C7E70190E5E7FFFFFF3FF0B50F0085B00600110038001400FFF795FE002830DB01230193002302930393B44206D175 -:40840000210001A8FFF74CFC051E16D101ACB7420DD1012360683360104BC3189B00002811D1B268A168FFF762F8002505E039003000FFF735FC051EEBD001A8FFF7BCFB0B -:40844000280005B0F0BDA268D258043B002AE8D10138E4E70A256D42F2E7C046FFFFFF3FF8B50D68136804006B430E001700002B17DA11003000FFF74FFE002808DB3A00C6 -:4084800031002000FFF7AAFF002809D1256007E0320039002000FFF7A1FF6D420028F5D0F8BDFFF741FFEFE7F8B50D68136804006B430E001700002B17DD11003000FFF716 -:4084C0002BFE002808DB3A0031002000FFF786FF002809D1256007E0320039002000FFF77DFF6D420028F5D0F8BDFFF71DFFEFE71FB5D4171319634000930123D2171A4313 -:4085000002936B46019201AA0393FFF7A9FF04B010BD1FB5D4171319634000930123D2171A4302936B46019201AA0393FFF7BCFF04B010BDF0B50023160001228BB00500EA -:408540000F00049205930693079208930993884206D1010004A8FFF7A3FB041E33D104AFB54206D1290007A8FFF79AFB041E2AD107AE7B68294A02939B189B00029A002A98 -:408580002AD17368254A01939B189B00019A002A2BD1029B019A28009918FFF721FB041E11D101002800FFF728FC041E0BD1019B1A4A9B189B000393019B002B1ED13A682F -:4085C000336853432B6007A8FFF7F6FA04A8FFF7F3FA20000BB0F0BDBA68D258043B002ACFD1029A013A0292C8E7B268D258043B002ACED1019A013A0192C7E7AB68039A91 -:4086000003999A18B36802985B58B968FEF793FF019B013B0193039B043BCCE7FFFFFF3F1FB50123019302936B46009201AA0393FFF780FF05B000BD0B00F0B5023B87B0F4 -:408640000600019100920E2B04D904246442200007B0F0BD01230024009803930494059414F0B0F8019B0500102B3DD1374B9842EBD81F21830019404A1E91415B09C91871 -:408680003000FFF7ADFA041E06D101003000FFF7B4FB0400071E23D003A8FFF78DFAD6E7012D06D1009B1B782D2B02D12E3B3360F2E7009B013D5A5D102102A8FEF7FCFE90 -:4086C000002841D11C21B268FB089B00D318BA000A400299013791400A0019680A431A60002DDDD10024D7E721003000FFF785FB0400071ED0D1AF42F4D0002F07D1009BC1 -:408700001B782D2B03D12E3B33600137F3E7009B0199DA5D02A8FEF7CFFE041EBCD1019A310003A8FFF77CFF041EB5D13368029A03A93000012B04D1FFF7DAFE041EE4D09D -:40874000AAE7FFF7E6FEF9E70400A5E7FFFFFF3FF0B59DB0039001911800002102920893FFF7D0FD002800D18FE10024012610AD089902980D960E940F9410966C60AC608E -:4087800013961494159416961794189419961A941B94FFF7C1FCA04226DA039BA34206D1019B002B19D1002420001DB0F0BD21000398FFF722FB041EF2D00DA8FFF7FCF9FF -:4087C00010A8FFF7F9F913A8FFF7F6F916A8FFF7F3F919A8FFF7F0F9E6E702990198FFF75FFA041EE9D1DEE702990DA8FFF758FA041EE2D108992800FFF752FA041EDCD1C1 -:40880000029B13A85B682E60991C0D960493FFF7E7F9041ED1D1010013A8FFF7EEFA041ECBD1022116A8FFF7DBF9041EC5D1032119A8FFF7D5F9041EBFD12800FFF74CFB8B -:408840001F231840984274D01B1A19000DA80593FFF7C8FB041EB0D105992800FFF7C2FB041EAAD10E9E2800731E04936B680793013B0693069A731E9F1A7B0119000993DA -:40888000FFF7B0FBBF00041E97D110A90DA8FFF7EDFC00284FDA099910A8FFF7F7FB041E8BD1069B079A9B000993043B0A93784BF518079BED1A774BAD00F3189B1A5B0117 -:4088C0000793754BF718BF00049B069A93423FD8039B002B0ED013A91800FFF7E1F9002825D1029B1B680493089B049A1B685343039A1360019B002B00D15EE705990DA86B -:40890000FFF7C4FB002812D1029B0DA91B6801980D93FFF7C5F9011E00D0B4E00198FFF7F1FC002800D048E70123019A1360040043E7059496E7159B0DA9DB191A68080034 -:4089400001321A6010AAFFF7AFFD041E9DD034E70F9B3A1D0B9299580998129A1258914200D27FE00122159B52425A51159B3E1F5B191A6801321A60159B00215B191A6871 -:4089800016A8013A1A60FFF738FA0028CFD1069A189B002A02D0129A0A995058129A09991860525816A95A60159B08005A59FFF737FE011E67D119A8FFF71FFA0028B6D1B9 -:4089C000049A1B9B012A01D00F9A90590F9A1860D15916A859600B99525819A99A60FFF745FC0028C8DC159B10A95A5916A80B93FFF716FE00289AD1079916A8FFF7F2FA71 -:408A0000002894D10DA9080016AAFFF74DFD011E39D10DA8FFF776FC00281ADA10A916A8FFF73EF9002800D081E7079916A8FFF7D9FA002800D07AE70DA916AA0800FFF791 -:408A40000FFD002800D072E7159B5B191A68013A1A60049B043D013B0493079B043F203B079331E7D8590123159E5B427619002A07D0002317F0B2FB0300002901D001236C -:408A80005B42336072E70C0097E60C2464428BE6FFFFFF3FFFFFFF07FEFFFF3F70B504000D00100000211600FFF72CFC002825DB2A00330021000020FFF74AFE051E08D048 -:408AC000280070BD320021002000FFF7C9FC002812D100212000FFF715FC0028F2DB31002000FFF7C3FB0028EADB320021002000FFF7DAFC0028F2D00500E1E70A256D42E5 -:408B0000DEE70000F0B5C34C0E00A54402900021180006921F00FFF7F5FB002800DC1BE2BB681C68E30700D416E200210698FFF7E9FB002800DA0FE2082303210222A51C3F -:408B40006D001D402D192B0063430139D31A5D430029F8D1C0220124D20018A80D910E9110911191139114910C940F94129413F007FB0698FFF7B0F90622A74B0392984245 -:408B80000CD805230393EF2808D8013B03934F2804D8013B0393172800D803947B680298013319000493FFF71BF8041E00D0A3E104991BA8FFF714F8041E00D09CE1049B27 -:408BC0000FA85900FFF70CF8041E00D094E133680893013309D1310012A8FFF761F8041E00D089E1012312AE1293CB2308AADB009B181B68002B08D0CB23DB009B181B68EE -:408C00009B680493002B00D09EE001210CA8FFF7F4F8041E00D06FE17B680CA89901FFF7E1F9041E00D067E10CA93A000800FFF735FF041E00D05FE1CB2308AADB009B186B -:408C40001B68002B08D0CB230C2208A8DB001B1818680CA913F002FA39003000FFF706FB002879DB3A0031001BA8FFF717FF041E00D041E16B4204930FAB00933A00049BCC -:408C80000CA91BA8FFF786FA041E00D034E10CA90298FFF705F8041E00D02DE101260BAB17930FAB00933A00049B15A902980B9615961696FFF76EFA041E00D01CE1039B95 -:408CC000B3424ED1002215001600069B07925B680593079B002B00D0A7E0059B002B00D09EE0039A013393400793059BAB4200D0E6E001250BAB17930FAB00933A00049B34 -:408D000015A902980B9515951695FFF743FA041E00D0F1E0089B013300D0EDE0069B5B680493002B00D1E7E0069B9B681B682B4200D1E1E0029B089A39001A6018001A0074 -:408D4000FFF78EFB0400D7E0CB2308A9DB005B180C2219680CA87DE731001BA8FEF7A0FF85E70C253200039B013B9D409A4018AB05955D197B682800591C0792FEF730FF0D -:408D8000041E00D0B8E01BA92800FEF789FF041E00D0B1E00FAB00933A00049B29002800FFF7F8F9041E00D0A6E0039B0136B342F0D10123039A079E93400793059B08AAB7 -:408DC0001D00C823DB009B189C46144B65440136ED18079B9E4200D374E77B682800591CFEF7FEFE041E00D086E0290028000C39FEF756FF041E00D07EE00FAB0093280099 -:408E0000049B3A001BA9FFF7C5F90C35041E73D10136DEE79CF9FFFF9F0200000CFAFFFF059B013B059320230793079B013B0793069B9B680993059B09999B005B580799CD -:408E4000CB4001210B40110019430ED0002B0ED1012A0CD102990FAB00933A00049B0800FFF798F9041E47D101210A0031E7039A0135521B93401E43039B0221AB42F4D168 -:408E8000002502990FAB00933A00049B0800FFF781F9041E30D1039B0135AB42F1D80C21714318AB59180FAB00933A00049B0298FFF770F9041E1FD1012106000500D4E779 -:408EC00002990FAB00933A00049B0800FFF762F9041E11D1079B7600334203D1059B0133059302E70FAB00933A00049B1BA90298FFF750F9041EF1D001252E00039B0C27D3 -:408F0000013B9E40039B9D40AE421DD31BA8FEF753FE0FA8FEF750FE12A8FEF74DFECB2308AADB009B181B68002B06D0CB23DB009B181B689B68002B02D10CA8FEF73CFE2A -:408F40002000074B9D44F0BD3800704318AB1818FEF732FE0136D7E704246442F0E7C0466406000070B50023150001228AB0060004A801920293039304920593069307925A -:408F800008930993FEF78CFE041E55D1290007A8FEF786FE041E4FD104A8FEF77DFF050007A8FEF779FF854200D90500290004A8FFF76CF8041E3FD1290007A8FFF766F8B0 -:408FC000041E39D1012307930493002104A8FFF799F900280BD1290007A8FFF703F8041E2AD107A93000FEF75BFE040024E004A8FEF752FF010004A8FFF748F8041E1BD198 -:4090000007A8FEF749FF010007A8FFF73FF8041E12D107A904A8FFF729F9002818DB04A907AA0800FFF7DAF9041E05D1012104A8FFF72CF8041EC8D001A8FEF7BDFD04A806 -:40904000FEF7BAFD07A8FEF7B7FD20000AB070BD07A904AA0800FFF7C1F9041EECD1012107A8E5E770B5114C0600A544140080220D00D200914215D80A0018006946A047D5 -:40908000041E05D12A0069463000FEF74FFF040080216846C90006F0B9FF20008023DB009D4470BD04246442F7E7C04600FCFFFFF0B59FB001900F00100001211600FFF778 -:4090C00021F9002800DC2FE1002301253200390003A806950793089309950A930B930C950D930E930F9510931193039504930593129513931493159516931793189519935C -:409100001A931B951C931D93FFF72CFF041E4FD1290003A8FFF7F6F8002800D001E13200390006A8FFF7BAFC041E41D106A909A8FEF7B6FD041E3BD1310012A8FEF7B0FDC2 -:40914000041E35D1310015A8FEF7AAFD041E2FD129000CA8FEF751FE041E29D101000FA8FEF74BFE041E23D1010018A8FEF745FE041E1DD129001BA8FEF73FFE041E17D1A1 -:409180000B9B1B682B425FD1290009A8FEF77EFF041E0DD10E9B1B682B4227D1119B1B682B4223D129000CA8FEF770FF041E2CD006A8FEF701FD09A8FEF7FEFC0CA8FEF733 -:4091C000FBFC0FA8FEF7F8FC03A8FEF7F5FC12A8FEF7F2FC15A8FEF7EFFC18A8FEF7ECFC1BA8FEF7E9FC20001FB0F0BD0CA912AA0800FFF735F9041EDAD10FA906AA08005D -:40920000FFF752F9041ECDD0D2E729000FA8FEF73DFFB3E7290015A8FEF738FF041EC7D11A9B1B682B4249D11D9B1B682B4245D1290018A8FEF72AFF041EB9D129001BA8E2 -:40924000FEF724FF041EB3D1179B1B682B42E1D015A909A8FFF70AF800283FDB09A915AA0800FFF721F9041EA2D10CA918AA0800FFF71AF9041E00D09AE71BAA0FA9080096 -:40928000FFF712F9041E00D092E7002109A8FFF739F8002800D073E7002118A8FFF732F800282EDB310018A8FEF7E0FF002830DA18A90198FEF7F4FC040079E718A912AAAE -:4092C0000800FFF7CDF8041E00D071E71BA906AA0800FFF7E9F8041EAAD069E715A909AA0800FFF7E1F8041E00D061E718A90CAA0800FFF7D9F8041E00D059E70FAA1BA9AB -:40930000BDE718A932000800FFF7AAF8041EC3D04EE718A932000800FFF7C6F8041EC1D046E70E24644243E7042464425BE7F0B599B00893249B029004910392209D022B7D -:4093400004D10D246442200019B0F0BD249B102BF7D8DB07F5D41E9B073B062BF1D8FF231B029D42EDD8582208AB9B181A780F239B1ADBB209932B000E26591E8B4111200A -:40938000B21A9901D3B20693249B069A023B5B08DB000B4313430CAC237008AB1E9AC018089912F05BFE1F2308AA9B18069AB21A039E0792A4181E70013B360AA342FAD15E -:4093C000002EBED110AC31001022200012F0D8FE21000CAF735CF25D534073540136102EF8D10BAB009332000B00029800F038FD041EA8D1002D3ED16B4631201B7E14AC90 -:40940000237008AB1E9A0899C01812F027FE1E9B099A581C2018002112F0B2FE01231026E373039B002B78D13F2214A98C4608ABD218079B63441E00039B1370013A9642C9 -:40944000FBD10BAB0CAD009310222B0014A9029800F006FD041E00D075E7030010A95A5CE85C42405A540133102BF8D1249A239812F0F4FD67E701003200380012F080FE66 -:409480002B0A3B707D702F000E2D00D90E271220002608AB1F993A00C01812F0DFFD10A90CA8735C325C534073540136102EF8D10BAB009332000B00029800F0D1FC041E53 -:4094C00000D040E71F9BED1BDB190593002D93D02F00102D00D937000CAC32000021200012F04EFE05993A00200012F0B7FD002310A95A5C185D42405A540133102BF8D185 -:409500000BAB009332000B00029800F0A9FC041E00D018E7ED1B059BD6E7039D102D00D93500049B002B2AD00BAB0CAF009332003B0014A9029800F093FC041E00D002E74F -:40954000A5423AD8049B012B40D03F22229B07995B192293219B5B192193039B5B1B039308ABD21814AB591813780133DBB21370002B00D055E7013A9142F5D151E70CAC0B -:4095800032000499200012F0FBFD21992A00200012F064FD049B10A95A5C185D42405A540133102BF8D10BAB009332000B00029800F056FC041EB7D0C5E6219B3A5D1B5DEF -:4095C0005340229A13550134E4B2B9E70CAC32000021200012F0D4FD22992A00200012F03DFD002310A95A5C185D42405A540133102BF8D10BAB009332000B00029800F08B -:409600002FFC041EA1D09EE610B54422002112F0B7FD10BDF8B5040016000800012219001D0000F08FFB071E12D04369102B0FD1200000F0A3FB3900200000F099FD0028F4 -:4096400005D101232A003100200000F0AFFBF8BD0D204042FBE710B5040000F08FFB4421200006F0D3FC10BD10B588B00F9C009306940E9C130005940D9C0A0004940C9C1D -:40968000002103940B9C02940A9C0194FFF74FFE08B010BD10B586B00D9C002C0ED005940C9C04940B9C03940A9C0294099C0194089C0094FFF7D8FF06B010BD0D20404240 -:4096C000FAE770B50C008CB01399159D0491129908AE03911199009302911099130001910695059622000121FFF721FE031E08D00CB070BD149AF15CD25C01334A4010436B -:40970000DBB29D42F6D80028F2D01398210006F07DFC0F204042EBE710B586B00D9C002C0ED005940C9C04940B9C03940A9C0294099C0194089C0094FFF7C3FF06B010BD99 -:409740000D204042FAE78900920070B582184518296814689B000919049C2960A40004192668C01871401026F14121600368C9180160136859401423D94111602B68C91877 -:409780002960236859401823D94121600368C9180160136859401923D941116070BDF0B595B0039105000100402204A812F056FC0A260C2304AC00930422043B0021200043 -:4097C000FFF7C1FF0D23052200930121043B2000FFF7B9FF0E230F2700930622043B02212000FFF7B0FF0B230722032120000097FFF7A9FF0A230522002120000097FFF75F -:40980000A2FF0C23062200930121013B2000FFF79AFF0D23072200930221053B2000FFF792FF0E23042200930321053B2000013EFFF789FF002EBCD123682A6831009B18B3 -:4098400023606A6863689B186360AA68A3689B18A360EA68E3689B18E3602A6923699B1823616A6963699B186361AA69A3699B18A361EA69E3699B18E3612A6A236A9B1840 -:4098800023626A6A636A9B186362AA6AA36A9B18A362E36AEA6A9B18E3622A6B236B9B1823636A6B636B9B186363AA6BA36B9B18A363E26BEB6BD318E363039B62580431E3 -:4098C000100A1A705870100C120E9870DA7004334029F3D1200006F099FB15B0F0BD10B5041E0AD0402106F091FB20004021403006F08CFB40230434E36710BD10B500283D -:4099000002D0842106F082FB10BD0000002863D0002961D0324B0360324B4360324B8360324BC3604A780B7812021A438B781B041A43CB781B06134303614A790B7912020D -:409940001A438B791B041A43CB791B06134343614A7A0B7A12021A438B7A1B041A43CB7A1B06134383614A7B0B7B12021A438B7B1B041A43CB7B1B061343C3614A7C0B7C64 -:4099800012021A438B7C1B041A43CB7C1B06134303624A7D0B7D12021A438B7D1B041A43CB7D1B06134343624A7E0B7E12021A438B7E1B041A43CB7E1B06134383624A7F33 -:4099C0000B7F12021A438B7F1B041A43CB7F1B061343C3620020704751204042FBE7C046657870616E642033322D62797465206B10B5041E2CD000292AD002634A780B782D -:409A000012021A438B7804341B041A43CB781B06134343634A790B7912021A438B791B041A43CB791B06134383634A7A0B7A12021A438B7A1B041A43CB7A40211B0613436D -:409A4000C363403006F0E2FA40230020E36710BD51204042FBE7F0B585B004000F000192029300287ED0002940D0002A7AD0029B002B77D00026021DBB1B0393D36F3F2B6B -:409A800026D9BB1B0093009B3F2B31D83F25039B039A1D403F239A439619002D26D0210020004031FFF77BFE236B029A0133236300239119019A96191A004032F05CA25C31 -:409AC0004240CA540133AB42F6D10434E3670DE0E31801994033895D1B784B4002998B55D36F01360133D367B742C5D100203BE02500403529002000FFF751FE236B0299E6 -:409B000001332363009B019AFB1AD218CB1880218C46A44428781178414019706878517841405970A878917841409970E878D1784140D970287911794140197168795179CB -:409B400041405971A879917941409971D179E87908354140D971083208336545DAD1009B403B8FE75120404205B0F0BD030030B50F2204000020D0331D6885B01540854270 -:409B80000AD00100684612F0FBFA10222000521B8430694606F00EFC05B030BD10B5041E13D0FFF79CFE2000843006F0FFFB210000220023D0310A604B608A60CB60220090 -:409BC0000023E032E4341360237010BD10B5041E13D0FFF793FE2000843006F0E0FB210000220023D0310A604B608A60CB6022000023E032E4341360237010BD10B500288F -:409C000004D0002902D0FFF781FE10BD57204042FBE7F7B504000D0000920193002843D0002904D0002A3FD0019B002B3CD02300E0331A68511E012939D8012A1DD0210076 -:409C40002A000023D8310E684F6892197B410A604B602300E4331B78002B16D020002A000099843006F0A6FB00280DD1019B009A29002000FFF7EFFE06E0022220001A60CD -:409C8000FFF774FF0028DAD0FEBD019B009A29002000FFF7E0FE0028F6D120002A000199843006F087FBEFE757204042ECE75420FBE7031E03D00268131E00D05369180031 -:409CC0007047002310B5891A994200D810BDC4180133A154DBB2F7E7F0B5061E1FD0002A1DD04318013B1D784F1BA942804117606B426B410022404203438A4203D1181E91 -:409D00000ED008480CE0B45C6C40A44600246046BA42644144432343DBB20132EDE70248F0BDC046009EFFFF009FFFFF002804D0002A02D00020116070470148FCE7C046CF -:409D4000009FFFFF30B5094C2368002B01D1180030BD9D692D78854205D15D688D4202D15D789542F3D00834EEE7C0469458021010B54422002112F003FA10BD10B5041E4D -:409D800013D0006C002805D0242106F03FF9206C11F02AFEE06B002803D023689B691B6A98474421200006F031F910BD70B5051E1CD00468002C19D0C06B002816D0DEB206 -:409DC000012E13D82669B60702D4666896420DD16A602B72A569012B03D06378033B022B02D86B69984770BDAB69FBE70048FAE7009FFFFF70B505000E001400002801D12D -:409E0000154870BD0368002BFAD0002910D1002AF6D1AA631A69D20703D4DA689442EFD314001B78482B07D0002C0DD10020E8E7102AEFD90948E4E700223100E86BFFF77F -:409E4000D7FD0028F0D0DBE7280022002830310012F004F9AC63E9E7009FFFFF809FFFFFF0B589B004000591150006930E9F002802D1754809B0F0BD0668002EF9D0002F74 -:409E8000F7D000233B60FFF714FF049073780793012B0CD1A84200D0CFE00821B36938605D686156069B059AE06BA847E2E7079B062B07D13D60069B059A2900E06B04F0FD -:409EC000CCFAD7E73378492B07D13D60069B059A2900E06BFFF79DFECCE7049B002B00D1ADE0059B069A934208D1636A002BC0D10499280016F00EF80029BAD1079B022B5F -:409F00007AD10823E356606A002B11D1E368002B10D0049B1B1A9D4210D814302A002018059912F09BF8636A5D1965620020A1E7012B03D1049B1B1A9D42EED3002829D08A -:409F4000049B05991B1A14301A002018079312F085F8069A236808219B6901922200143200929B6861561E002300049A2833E06BB047002800D07DE7049A3B6894469B187B -:409F80003B60069B079A63440693059B60629B180593AD1A002DC9D00499280015F0BAFF0E1E07D10823E356002B03D1E368002B00D0049E2000059BAD1B59193200143008 -:409FC00012F04CF8636A9E196662002DAED023000821069822682833926901900598615600909668E06B2A00B047002800D041E73B685D193D603DE7079B052B12D106982E -:40A00000B16902900598230001902000220014300090CE68283324322900E06BB0470028E8D027E7079B072B0BD1B369059A1E692900069BE06BB047F1E704481AE704485E -:40A0400018E7044816E7C046009FFFFF809DFFFF809CFFFF809FFFFFF7B504000F001600002859D00268002A56D0002E54D0002535605378D91E042948D9092B46D01178D4 -:40A080004839012942D9012B05D10025636AAB423CD0234D3AE0022B40D10823C356012B2AD1C368002BF0D0A16B1430002900D1D168626A98472000FFF7FBFD0200200046 -:40A0C000236814309B69009001979D680821230061562833E06BA847051E17D10823E3562000002B14D1FFF7E4FD23690100320038009847050009E0FFF7DBFD656AA84207 -:40A10000D9D0E368002BC4D1002DC2D12800FEBDFFF7CFFD3060F9E7024DF7E7024DF5E7809DFFFF009FFFFF809FFFFF002813D003685B78022B0FD1002903D0042907D013 -:40A14000064804E0064BC360064B0361080070470021054BC160F8E70448F8E7809FFFFFC39C0010D99C00102D9D0010009FFFFF70B504000D1E12D0002810D044220021DC -:40A1800011F0FEFFAB69DB699847E063002808D0256000212000FFF7C9FF002070BD0248FCE70248FAE7C046009FFFFF809EFFFF10B50400FFF70AFD200011F015FC10BD7A -:40A1C00010B5E821012011F08BF8041E01D0FFF7E5FC200010BD0000802310B55B009A4201D0034810BDFFF709FD0028FAD0F8E7009FFFFF10B50400FFF780FB200011F0E8 -:40A20000F3FB10BD10B58421012011F069F8041E01D0FFF764FB200010BD0000802310B55B009A4201D0034810BDFFF76FFB0028FAD0F8E7009FFFFF10B5FFF70CFC030025 -:40A24000513300D1004810BD009FFFFF10B50400FFF701FA200011F0C7FB10BD10B54421012011F03DF8041E01D0FFF7CDF9200010BD10B513000A000221FFF7CBF910BDC4 -:40A2800010B5040004F01BFA200011F0ADFB10BDC82110B54900012011F022F8041E01D003F082FF200010BD10B513000A00022103F081FF10BD10B50400FCF75FF8200037 -:40A2C00011F092FB10BD8C2110B54900012011F007F8041E01D0FCF74AF8200010BD10B5FCF726F910BD10B5FCF750F810BD1FB5089C0294079C0194069C0094FCF7D5FD60 -:40A3000004B010BD13B5059C0194049C0094FCF77BFD16BD10B5FCF76BFD10BD70B5102A04D01B25082A02D00C480EE08725013A00231600002A09DA0023CB568019027802 -:40A34000DB112B4053400370002070BD8C5C64001C4384548B5C013ADB09EBE7009FFFFF70B500249C4200D170BD0D5D165D754005550134F6E7F0B5040089B004A80E007C -:40A380001021170005F042FE236820005D6903AB009304AB2A001900FFF762FD041E0CD12A0004A93000FFF7B9FF041E05D12A0031003800FFF7B2FF040004A8102105F06B -:40A3C00025FE200009B0F0BD70B5051E1DD00368002B1AD0002918D00123FFF7E7FC041E11D12B681B78022B0FD3042B01D9242B0BD12421012010F073FF002807D0286421 -:40A40000102105F003FE200070BD024CFBE7024CF9E7C046009FFFFF809EFFFFF0B589B003900291170000285ED00368002B5BD0002959D0046C002C56D0206A5D690028CD -:40A440001FD02A1A97421CD91030201811F006FE21002B00220010312000FFF781FF07AB00932A00230021000398FFF7F9FC061E20D1236A0299EA1A8A18FF1802927F1BB8 -:40A480002062681EC019290015F0BEFC012305900493049B059A93420FD30026B74209D0206A3A0010302018029911F0D7FD236ADB192362300009B0F0BD2B002200029966 -:40A4C0002000FFF74DFF07AB00932A00230021000398FFF7C5FC061EECD1029B7F1B5B190293049B0133D3E7004EE3E7009FFFFFF0B593B0061E029168D00368002B65D0F0 -:40A50000046C002C62D0002960D02700102106A85D6905F07BFD10210AA805F077FD0AAA06A93000FFF727FF226A0EAB9C461037002395420FD82B0006AA3900604610E0C7 -:40A540009A423AD9F95C02A80391302140186946097BC15401339D42F2D10EA92B0008000AAAFFF7FDFE2B0022000EA92000FFF7F7FE05AB0093300023002A002100FFF71D -:40A580006FFC061E04D12A002100029811F066FD102106A805F03AFD10210AA805F036FD002310213800236205F030FD1021200005F02CFD300013B0F0BD61469A4202D140 -:40A5C00080208854C6E70020C854C3E7004EF1E7009FFFFFC023F0B5514C0F00A544029016005B009A4200D997E0D02262AD52000021280011F0C4FD1CA8FBF7B8FE330A36 -:40A600000024AB7430233200390068A8EB752C746C74EE7411F022FD8022CAAB9B19893BFF3B1A7008A964540134202CFBD180221CA85200FBF7AAFE041E4FD107001936B4 -:40A6400003961022002104A811F09AFD62AB039E01930023019904AAC95C9A5C4A4004A95A540133102BF5D1019B103301933300102E00D91023F61A04AB1A0001211CA819 -:40A68000FCF7B6FB041E29D1002EE2D110ABD819102204A911F0E2FC62AAD37810370133D370302FCDD1802210A952001CA8FBF76DFE041E12D1029F029E303718AB1A0025 -:40A6C00001211CA8FCF794FB041E07D13000102218A9103611F0C2FCB742EFD11CA8FBF74DFED0212800490005F090FC302110A805F08CFC202108A805F088FC102104A866 -:40A7000005F084FC002C03D03021029805F07EFC2000CB239B009D44F0BD38246442F7E7D4FCFFFFF0B58FB0019105003022002102A811F025FD0026290002AAB3180F31A5 -:40A74000681E0A780132D2B20A70002A25D02F0020372A0001213800FCF74AFB041E19D11036302EE8D1019A02AB125D1B5D534002AA13550134302CF5D1802202A952000A -:40A780003800FBF703FE041E04D110220AA9280011F064FC20000FB0F0BD01398142D0D1D5E7A02210B55200002111F0E9FC10BD10B5041E07D02030FBF7E0FDA0212000B8 -:40A7C000490005F023FC10BDF0B51600C0228369E1B004000F00520093422CD8D31AB34229D30021684611F0CBFC2300FC33DD6BA2696946186CA84700281FD1A569002F46 -:40A8000008D0002E06D0280032006844390011F025FCAD192A0069466846FFF7DBFE002807D169462000FFF77DFF002801D10123236161B0F0BD38204042FAE73420FBE72D -:40A84000F0B5040025008BB00F00160000212022203502A8019311F093FC2800FBF787FD23008022FC33DF631E64119B5200A361074B02A9E3612800FBF788FD002804D1EF -:40A88000109A01992000FFF79FFF0BB0F0BDC0461027000013B530240194049C0094FFF7CFFF16BDF0B51F00802393B0040001911500189EDB009A4255D880235B009E42B2 -:40A8C00054D83022002106A811F05AFC2369E269934202DC6369002B2CD0320039002000FFF772FF00283CD11027002D30D02200611E0F3213780133DBB21370002B02D1FD -:40A90000013A8A42F6D1200002AB220001212030FCF76EFA002824D12E00102D00D93E00320002A9019811F099FB019BAD1B9B190193DAE7002ED7D03200390006A8FFF792 -:40A9400049FE00280DD106A92000FFF7EBFEC9E706A92000FFF7E6FE002802D123690133236113B0F0BD36204042FAE73820FBE7002307B50093FFF795FF0EBDF0B58FB036 -:40A98000040005A817001E000D0001F01DF800230293159B20000193149B3200009305A93B0001F0DBFD041E09D105A801F042FC00280AD105A92800FDF772F9040005A89B -:40A9C00001F040F820000FB0F0BD014CF7E7C04680B0FFFF10B5040001F004F820007C30FDF7E2F82000883000F0EEFF2000AC3000F0EAFF2000D030FDF7D6F82300002242 -:40AA00002000DC331A60E03000F0DEFF601DFF3000F0DAFF20002930FF30FDF7C5F810BD10B5041E1ED001F01BF820007C30FDF7C3F82000883001F005F82000AC3001F0EE -:40AA400001F82000D030FDF7B7F82000E03000F0F9FF601DFF3000F0F5FF20002930FF30FDF7AAF810BD000070B504000D00160001F04BF8002807D1012E06D12900200098 -:40AA80008831AC3001F02BF870BD002E0ED1290020008831883001F022F80028F4D1290020007C317C30FDF7FBF8EDE70048EBE780B0FFFFF0B585B004000E0003921F00BC -:40AAC000002802D1134805B0F0BD836D002BF9D00B9B050001930A9B020000930300D0357C33AC322900FFF749FF0028EBD12800FDF716FAB842E5D80722A36D28001A40C3 -:40AB0000511E8A41DB08D21832600399FDF744FAD9E7C04680B0FFFFF8B50E001100C26D0500D41DE4089C4200D91C0022003000FDF7FCF9071E0AD1E96DE4008C4208D8E7 -:40AB40004C3529003000FDF791FB002809DA3800F8BD611A3000FDF799FA0028F0D00700F5E72A0031003000FDF79EFCF7E70000F0B59DB00793436D060006911500002B76 -:40AB800000D1ADE001210798FDF7BCFB002803DA544C20001DB0F0BD33004C33190007980493FDF763FB0028F2DA13A800F00CFF0AA8FCF7F9FF0DA8FCF7F6FF10A8FCF7AA -:40ABC000F3FF002308AF09930593059A09ABD3580A2B0DDD444C13A800F034FF0AA8FCF7EBFF0DA8FCF7E8FF10A8FCF7E5FFD0E700233B603B001B6804370A2BEADC259B74 -:40AC0000249A0AA9300002F0D9F8041EE3D1259B02900193249B0AAA0093330013A92833300001F09BFC041ED5D1049A13A90698FDF734FF041ECED101000698FDF762FB54 -:40AC40003B000028D7D0239B229A0DA93000FFF763FF041EBFD1259B249A10A9300002F0ADF8041EB7D1079A06992800FDF762FC041EB0D10DA92A000800FDF7F1FB041E71 -:40AC8000A9D10DA910AA0800FDF754FC041EA2D10AA910AA0800FDF74DFC041E9BD1049A0AA92800FEF704FA041E94D10DAA29002800FDF73FFC041E8DD1049A29002800F0 -:40ACC000FDF7ECFE041E00D085E701002800FDF719FB059B04330593002800D175E77AE7024C56E780B3FFFF00B3FFFF80B0FFFFF0B50600C7B005934EAB1878F36D0691ED -:40AD0000DC1D079203F0FCFDE408049000283AD009A80CAFFCF748FF380003F0DAFC220025A90598FDF738F9051E23D14D9B4C9A09A93000FFF7F0FE051E1BD125AB2200DE -:40AD4000191909A8FDF728F9051E13D1630025AA0499380003F00AFD0C4B039702934D9B079A01934C9B069900933000059BFFF7FFFE05000CA803F0B8FD09A8FCF71CFF34 -:40AD8000280047B0F0BD024DFAE7C046DFE8001080B0FFFFF0B506009DB013A805930C00170000F011FE07A8FCF7FEFE0AA8FCF7FBFE0DA8FCF7F8FE10A8FCF7F5FE736DC7 -:40ADC000002B00D177E001212298FDF79BFA00285EDB35004C3529002298FDF747FA002856DA01212398FDF78DFA002850DB29002398FDF73BFA00284ADA22003B0007A903 -:40AE00003000FFF789FE041E43D12A0023990AA8FEF74EF9041E3CD10AAA07A90DA8FDF789FB041E35D10DA92A000800FDF736FE041E2ED10AAA229910A8FDF77BFB041E8F -:40AE400027D110AF2A0039003800FDF727FE041E1FD13300059A02900192283300970DAA13A9300001F072FF041E12D113A801F0E1F900280CD113A92A000800FDF70EFEE9 -:40AE8000041E06D1229913A8FDF7F0F9041E00D00A4C13A800F0D6FD07A8FCF78DFE0AA8FCF78AFE0DA8FCF787FE10A8FCF784FE20001DB0F0BD024CFAE7C04600B2FFFF4D -:40AEC00080B0FFFF1FB5099C0394089C0294079C0194069C0094FFF74BFE04B010BD1FB508AC24780294079C0194069C0094FFF7FFFE04B010BD13B5059C0194049C0094DE -:40AF0000FFF748FF16BDF0B50400AFB005A81E000F001500FCF748FE08A8FCF745FE230001967C330297009508AA05A92000FFF7DFFE061E2AD1B72308AA6B440BA904A847 -:40AF40000493FCF76CF9041E1FDB05AA0BA904A8FCF765F9002822DB25182A000BA904A8FCF7D0F8041E10DB30220BA904A8FCF735F9002813DB64190419220004993498A4 -:40AF800011F06CF8359B1C603400260005A8FCF713FE08A8FCF710FE30002FB0F0BD0400F3E710B5002486B004940B9C03940A9C0294099C0194089C0094FFF7A4FF06B098 -:40AFC00010BD0000F0B58DB0039206AE129A070009AD30009C1802910493FCF7E5FD2800FCF7E2FD302305AA210004A8FBF7E4FF00280AD0174BC7183000FCF7DDFD280007 -:40B00000FCF7DAFD38000DB0F0BD049B059A9B189C421DD13200210004A8FCF703F80028E8D12A00210004A8FBF7FCFF0028E1D13B003800883301950096039A0299FFF7D3 -:40B04000A9FE071ED8D1049B9C42D5D0024FD3E7024FD1E780B0FFFF00B4FFFF1AB0FFFF13B500240194049C0094FFF7ABFF16BD70B506000D0000F048FD041E0FD12900BD -:40B0800030007C317C30FCF70BFE041E07D1290030008831883000F022FD041E02D0300000F00FFD200070BD10B500F0BDFC10BD10B500F006FD10BD0300006B002803D0A2 -:40B0C000DB6B58425841013070470000F8B54B6E04000D00002B05D10A1D0100FDF7DEFC06000AE00368002B09DB2000FCF7F4FEAB6D5B00984208D9164E3000F8BD00217A -:40B10000FDF700F90028F0D0F6E720006B6E9847061EF2D123682F1D002B05DA00212000FDF7F0F800280DD139002000FDF79EF80028E2DB3A0021002000FDF74FF90028F3 -:40B14000F2D0CDE73A0021002000FDF789F90028E0D0C5E780B0FFFF0B00F0B5183389B007000D00180000210193FDF7CBF8041E59D002A8FCF718FD05A8FCF715FD3A1DE4 -:40B18000019902A8FDF794FF041E46D102AA110005A8FDF7CFF9041E3FD1390005A8FFF795FF041E39D1214E05AA33682900013328003360FDF7BEF9041E2ED13900280099 -:40B1C000FFF784FF041E28D133680C35013305AA290028003360FDF7ADF9041E1DD139002800FFF773FF041E17D1336802AA0133290028003360FDF79DF9041E0DD1390079 -:40B200002800FFF763FF041E07D133680121013301983360FCF7F1FD040002A8FCF7CCFC05A8FCF7C9FC200009B0F0BD30630008F0B505001700BC4A91B0136804A8013344 -:40B2400013600291FCF7B0FC07A8FCF7ADFC0AA8FCF7AAFC0DA8FCF7A7FCAB69002B00D066E1390018310A0007A8FDF763F9041E00D030E1290007A8FFF728FF041E00D07D -:40B2800029E1AA4A390013680AA80133136007AAFDF7E6F8041E00D01DE12E1D31000AA8FCF7E4FF002800DB24E107AA39000DA8FDF7FAF8041E00D00DE10D9B002B00DAF2 -:40B2C0001EE10DAA0AA907A8FDF734F9041E00D001E1290007A8FFF7F9FE041E00D0FAE0924A07A9136804A8013313600322FDF797F9041E00D0EEE0310004A8FCF7B6FF68 -:40B30000002800DB09E13B000C331A0019000AA80193FDF70FF9041E00D0DCE029000AA8FFF7D4FE041E00D0D5E0804A012113680AA801331360FCF755FE041E00D0CAE097 -:40B340002E1D31000AA8FCF791FF002800DB6BE10AAA390007A8FDF7EDF8041E00D0BAE0290007A8FFF7B2FE041E00D0B3E06F4A0121136807A801331360FCF733FE041ED7 -:40B3800000D0A8E0310007A8FCF770FF002800DB50E10AAA11000DA8FDF7CCF8041E00D099E029000DA8FFF791FE041E00D092E05E4A012113680DA801331360FCF712FEB7 -:40B3C000041E00D087E031000DA8FCF74FFF002800DB35E104AA11000AA8FDF7ABF8041E00D078E029000AA8FFF770FE041E72D14E4A0AA9136808000133136007AAFDF7A4 -:40B4000053F8041E67D10A9B002B00DA1EE10AA907AA0800FDF748F8041E5CD10A9B002B00DA20E107A90AAA0800FDF73DF8041E51D1079B002B00DA22E107A904AA08003B -:40B44000FDF778F8041E46D1290007A8FFF73EFE041E40D1354A07A913680800013313600DAAFDF721F8041E35D1079B002B00DA13E13A00019918320DA8FDF75BF8041ED6 -:40B4800029D129000DA8FFF721FE041E23D1274A012113680DA801331360FCF7A3FD041E19D131000DA8FCF7E1FE002800DB01E10AA90298FCF7F4FB041E0CD1029807A96B -:40B4C0000C30FCF7EDFB041E05D102980DA91830FCF7E6FB040004A8FCF76EFB07A8FCF76BFB0AA8FCF768FB0DA8FCF765FB200011B0F0BD0AA932000800FCF76FFFC9E622 -:40B5000000210DA8FCF7FEFE002800D1D9E60DA932000800FCF7A4FFCCE604A932000800FCF75CFFE5E6C0462C630008306300083A00390007A8FCF7FDFF041ECBD1290026 -:40B5400007A8FFF7C3FD041EC5D15D4A07A9136804A8013313600322FDF762F8041EBAD12B1D190004A80193FCF780FE002855DA2B001033002118000393FCF7C3FE0028E7 -:40B5800000D1C0E6390018310A0007A8FCF7D2FF041EA0D1290007A8FFF798FD041E00D099E7474E07AA3368110001330AA83360FCF7C0FF041E00D08DE729000AA8FFF759 -:40B5C00085FD041E00D086E73368039A01330AA907A83360FCF7AEFF041E00D07BE7290007A8FFF773FD041E00D074E7336804A9013307AA08003360FCF732FF041E00D0AC -:40B6000069E7019904A8FCF731FE002800DA7AE604A9019A0800FCF7E1FEEFE704A9019A0800FCF7DBFE99E70AA932000800FCF7D5FE82E607A932000800FCF7CFFE9EE613 -:40B640000DA932000800FCF7C9FEB9E600210AA8FCF758FE002800D1D9E60AA932000800FCF7FEFECDE600210AA8FCF74BFE002800D1D7E60AA932000800FCF7F1FECBE6D9 -:40B68000002107A8FCF73EFE002800D1D5E607A932000800FCF7E4FEC9E6002107A8FCF731FE002800D1E4E607A932000800FCF7D7FED8E60DA932000800FCF78FFEEEE600 -:40B6C00030630008F0B5060093B00D001400012A06D80968FFF740FD0400200013B0F0BD0C2110000FF0FCFD0190002800D103E100230C2702930298019B78431818FCF7BD -:40B7000053FA029B013304939C426BD109A8FCF74BFA0CA8FCF748FA0FA8FCF745FA296801981831FCF7BCFA041E43D12B1D0593019B0C330393049B5F43019BDB19069372 -:40B74000059B03991B680C391A00039818320793FCF7F0FE041E2DD131000398FFF7B6FC041E27D1654A136801331360059B04330593039B0C330393039A069B9342DFD127 -:40B780003900019B0C39321D591809A8FDF790FC041E0FD1029B183F9B00ED18019BDB190393029B002B20D109A90CA8FCF778FA041E3CD00C2609A8FCF7FEF90CA8FCF79C -:40B7C000FBF90FA8FCF7F8F9049B019D5E43AE1928000C35FCF7F0F9B542F9D1019810F003F97AE7049B029385E7039A09A90CA8FCF7A0FE041EDDD131000CA8FFF766FCD8 -:40B80000041ED7D13D4F2A683B6809A90133183208003B60FCF78EFE041ECBD1310009A8FFF754FC041EC5D13B6801333B600CAA11000FA8FCF77EFE041EBBD131000FA898 -:40B84000FFF744FC041EB5D12C4F29683B680FAA013308003B60FCF76DFE041EAAD131002868FFF733FC041EA4D128683B680C3001330FAA01003B60FCF75CFE041E99D162 -:40B88000286831000C30FFF721FC041E92D128683B680C3001330CAA01003B60FCF74AFE041E00D086E7286831000C30FFF70EFC041E00D07EE73B68B168013328683B60F5 -:40B8C000FCF7B6F9041E00D074E72868B1680C30FCF7AEF9041E00D06CE72868043D1830FCF76AF9039B0C3B0393029B002B00D160E7013B029354E7014CEEE63063000803 -:40B9000080B2FFFF7FB50C0006000C3401A81500FCF74AF9311D220001A8FCF7C5FD061E0CD101002000FCF7EDFC0200501E824101A92A402000FCF7E6F9060001A8FCF7B6 -:40B940003BF9300004B070BD0C32F0B50F001500002685B003930AAB1B78029000935B069B0E0193039B9E4206D1009B3900DA090298FFF7C7FF17E0019BF4B2E41A634241 -:40B980005C412900E4B222000C393800FCF7BBF9002809D13800290022000C30FCF7B3F9013624350028DDD005B0F0BD054B1A78002A02D11300180070478242FBD00C332F -:40B9C000F5E7C046F059021010B5041E09D0FCF7EBF820000C30FCF7E7F820001830FCF7E3F810BD70B5041E1DD0002505700430FCF7DAF820001030FCF7D6F820001C30EF -:40BA0000FCF7D2F820002830FFF7DEFF20004C30FCF7CAF8A565E56525666566A566E56625676567A56770BD10B5041E09D0FFF7D9FF20007C30FCF7B7F820008830FFF752 -:40BA4000C3FF10BD10B5041E09D0FCF7B5F820000C30FCF7B1F820001830FCF7ADF810BD70B5041E24D0036E012B12D00430FCF7A3F820001030FCF79FF820001C30FCF74D -:40BA80009BF820002830FFF7DDFF20004C30FCF793F8636F002B07D000252426A36F9D4207D3606F0FF0A0FF7C21200004F0AEFA70BD30006843636F01351818FFF7C2FFC4 -:40BAC000ECE710B5041E09D0FFF7CAFF20007C30FCF772F820008830FFF7B4FF10BD70B504000D00FCF7DCF800280DD1290020000C310C30FCF7D4F8002805D129002000B2 -:40BB000018311830FCF7CCF870BD10B5097802F019F810BD10B501210400FCF76EF900280BD1200001210C30FCF767F9002804D1183401002000FCF760F910BDF0B59BB0ED -:40BB40000192C04A1E001368009101331360019B00211833050018000293FCF7D3FB310000280AD0336A002B0ED0300000211830FCF7C8FB002807D101990098FFF7AFFFDE -:40BB8000040020001BB0F0BD336A002B00D04FE105A8FCF709F808A8FCF706F80BA8FCF703F80EA8FCF700F811A8FBF7FDFF14A8FBF7FAFF17A8FBF7F7FF029A05A811004E -:40BBC000FCF7B8FC041E00D067E1290005A8FFF77DFA041E00D060E19B4F029A3B6805A9013308A83B60FCF7A5FC041E00D054E1290008A8FFF76AFA041E00D04DE13B68E7 -:40BC000005A90133320008003B60FCF793FC041E00D042E1290005A8FFF758FA041E00D03BE132003B6808A901330C3208003B60FCF780FC041E00D02FE1290008A8FFF7AF -:40BC400045FA041E00D028E13B6805A90133019A08003B60FCF728FC041E00D01DE1059B002B00DAF4E0019B08A90C331A0008000393FCF719FC041E00D00EE1089B002B4C -:40BC800000DAF2E0002105A8FCF73CFB011E00D1F8E005AA029917A8FCF74CFC041E00D0FBE0290017A8FFF711FA041E00D0F4E0654E05AA3368110001330BA83360FCF7DD -:40BCC00039FC041E00D0E8E029000BA8FFF7FEF9041E00D0E1E0336805AA01330BA90EA83360FCF727FC041E00D0D6E029000EA8FFF7ECF9041E00D0CFE033680BA90133C2 -:40BD0000019A08003360FCF715FC041E00D0C4E029000BA8FFF7DAF9041E00D0BDE03368022201330BA905A83360FCF779FC041E00D0B2E02E1D310005A8FCF797FA002857 -:40BD400000DBC4E008AA110011A8FCF7F3FB041E00D0A2E0290011A8FFF7B8F9041E00D09BE0394A11A9136808000133136005AAFCF79AFB041E00D08FE0119B002B00DACD -:40BD8000ABE011A90EAA0800FCF78EFB041E00D083E0119B002B00DAACE00BA911AA0800FCF782FB041E00D077E00B9B002B00DAADE00BA908AA0800FCF7BCFB041E6CD191 -:40BDC00029000BA8FFF782F9041E66D11E4F0EA93B68039A013308003B60FCF7ABFB041E5BD129000EA8FFF771F9041E55D13B680EAA01330BA914A83B60FCF755FB041EF5 -:40BE00004BD1149B002B00DA8EE011A90098FBF747FF041E41D1009814A90C30FBF740FF041E3AD1009817A91830FBF739FF33E0300001211830FCF765FA002800D1A7E6C8 -:40BE4000024C9EE6286300083063000880B0FFFF002105A8FCF756FA002800D103E705A92A1D0800FCF7FCFAF6E6002108A8FCF749FA002800D105E708A92A1D0800FCF7FF -:40BE8000EFFAF8E608A8FCF73DFA00281BD1019A00992800FFF7CCF9040005A8FBF78CFE08A8FBF789FE0BA8FBF786FE0EA8FBF783FE11A8FBF780FE14A8FBF77DFE17A8FD -:40BEC000FBF77AFE5DE60098FFF724FEE4E705A932000800FCF782FA29E7002111A8FCF711FA002800D14CE711A932000800FCF7B7FA3FE7002111A8FCF704FA002800D12D -:40BF00004BE711A932000800FCF7AAFA3EE700210BA8FCF7F7F9002800D14AE70BA932000800FCF79DFA3DE7002114A8FCF7EAF9002800D169E714A932000800FCF790FA32 -:40BF40005DE7C046F0B507003E00DDB0059362AB1B780EA8069363AB1B780291140007934C36FBF721FE11A8FBF71EFE00213000FBF75CFF012800D051E100212000FBF741 -:40BF800055FF0300584258412100C3B20EA80493FBF786FE051E39D12200310011A8FCF783FA051E32D1049A11A90EA8FBF7ABFE051E2BD1649B01005A1C1AA810F0E0F8F7 -:40BFC0002C00649BA34217D0039400260FE003990EA8FBF72BFF0300B3401AAAA05C01361843A054649A039B944663440393079B9E42ECD30134E4E7012200261AABD21A06 -:40C000000992099AD218944200D3AEE011A8FBF7D3FD0EA8FBF7D0FD002D00D0FAE011A8FFF7D2FC649A5CAB9B18093BFF3B1B78059A00930299069B3800FFF785FC051E54 -:40C0400000D0D6E0029E012118363000FBF7D5FE051E00D0CDE0659B002B00D1C6E0BB6D0BA80733DB080793FBF79EFD0EA8FBF79BFD0C230393669B659A07990BA8FCF789 -:40C08000F1FF041E67D1391D0BA8FCF7EFF8002800DB88E0039B013B0393002B00D1C0E001210BA8FCF72EF90028E4DD0BAA31003000FCF73FFA041E4DD139003000FFF723 -:40C0C00005F8041E47D1584E0BAA3368110001330EA83360FCF72EFA041E3CD139000EA8FEF7F4FF041E36D13368029901330EAA08003360FCF71EFA041E2CD13900029881 -:40C10000FEF7E4FF041E26D133680EA901330BAA08003360FCF70EFA041E1CD139000EA8FEF7D4FF041E16D13F4E0EAA336801333360029B0C33190018000393FCF7FAF93E -:40C14000041E08D139000398FEF7C0FF041E02D13368013333600BA8FBF72EFD0EA8FBF72BFD002C42D0250043E018785A78844601200392724090430790604651B2079A77 -:40C18000504340B202000A404140597061460892039A1640089A1643079AF6B2D2010A431A7001332DE701210BA8FBF76FFF68E7649B029A013B110038006493FFF738F839 -:40C1C00000282AD1649A1AABD35C11A90093059A069B3800FFF7B8FB00281ED1029A11AB11003800FFF7AAFC002816D1649B002BDED111A8FFF726FC002D0BD1049A02996D -:40C200003800FFF77FFB051E04D102993800FEF7A3FF050028005DB0F0BD0500E9E7034DF8E7034DE5E7C0463063000880B0FFFF00B3FFFF10B518300021FCF763F843426C -:40C24000584110BDF7B5089E05000C0001921F00012A3DD8200000211830FCF753F8002808D1099B002B01D11A48FEBD012330703B60FAE7281DFBF753FE019B0500002BE9 -:40C2800016D14300099A01333B609A42ECD3042302003370711C2000FBF77EFE0028E4D120002A00691C71180C30FBF775FEDCE7099A431C3B609A42D6D3200000210C3028 -:40C2C000FBF7B4FD02303070711C2A002000ECE70148CAE700B1FFFF80B0FFFFF8B50C0015001F1E01D11748F8BD1378002B05D1012FF8D10800FFF70DFCF5E70430FBF7C9 -:40C300000FFE2B780600042B19D1430001339F42E9D10200691C2000FBF708FE0028E3D12000711C691832000C30FBF7FFFD0028DAD1200001211830FBF75FFDD4E7024867 -:40C34000D2E7C04680B0FFFF80B1FFFFF0B50500080089B00E0018300121FBF7D3FF041E01D05D4C0CE02800FEF7A6FE02280AD13000FBF7D5FDEB6D0733DB089842F0D821 -:40C38000200009B0F0BD012800D0A2E021003000FBF7B8FF0028E4DB37000C3721003800FBF7B0FF0028DCDB2B1D190030000093FBF75CFF0028D4DA291D3800FBF756FF3C -:40C3C0000028CEDA02A8FBF7EFFB05A8FBF7ECFB3A00390002A8FCF7ADF8041E4CD1290002A8FEF773FE041E46D13C4F32003B683100013305A83B60FCF79CF8041E3BD139 -:40C40000290005A8FEF762FE041E35D13B6801333B60AB69002B42D105A903220800FCF778F8041E28D1059B0193002B2BDB05A932000800FCF77EF8041E1DD1290005A8F0 -:40C44000FEF744FE041E17D12A003B6805A901331C3208003B60FCF703F8041E0CD1009905A8FBF703FF00282DDA05A902A8FBF7FDFE041E00D0184C02A8FBF79DFB05A809 -:40C48000FBF79AFB7CE7002105A8FBF73BFF0028CDD005A9009A0800FBF7E2FFC1E72A0005A910320800FBF7DBFF041EE4D1009905A8FBF7DBFE0028B9DB05A9009A080026 -:40C4C000FBF78CFFF1E705A9009A0800FBF786FFC3E7034C54E7C04680B3FFFF3063000880B0FFFF70B505000C00FEF7E5FD060002281CD100212000FBF798FC002825D1DD -:40C5000001212000FBF792FC00281FD12000FBF7E3FCEB6D0138984218D1FE2805D131002000FBF783FC002810D1002070BD01280ED101002000FBF7E5FE002806DB290098 -:40C5400020004C31FBF792FE0028EEDB0148EDE70148EBE780B3FFFF80B0FFFFF0B5D1B00891110007000F920B93FFF7BBFF041E72D10B993800FFF7E9FE0990041E6BD139 -:40C580003800FEF799FD022800D07FE231A8FFF71BFA13A8FBF708FB0B9913A8FBF780FB041E50D10B9931A8FFF799FA041E4AD101210898FBF721FC041E44D1089E099927 -:40C5C00018363000FBF719FC041E3CD108980C30FBF7F2FA3B1D190031A80793FBF746FE002829DA569B002B39D10F98FBF774FC431E0C930C9B013300D07FE0079A31007D -:40C600003000FCF755FD041E1DD1089932000800FBF790FF041E16D139000898FEF756FD041E10D1344A01211368300001331360FBF7E3FB040006E031A93A1D0800FBF715 -:40C64000CDFE041EC6D031A8FFF7FCF913A8FBF7B3FA002C00D11AE2200051B0F0BDBB6D2EA80733DB080A930C25FBF79DFA579B569A0A992EA8FCF7F5FC041E30D10799DE -:40C680002EA8FBF7F3FD002831DA013D002D00D10FE301212EA8FBF735FE0028E7DD31A92EAA0800FBF746FF041E19D1390031A8FEF70CFD041E13D10F4D37A92B682EAA9E -:40C6C000013308002B60FBF735FF041E08D1390037A8FEF7FBFC041E02D12B6801332B602EA8FBF769FA002C00D17EE7ABE701212EA8FBF7CBFCC0E7306300080C990F98A9 -:40C70000FBF794FBC3B21A0031A908980A93FBF732FB041E00D096E70A9A37A93000FBF72AFB041E00D08EE716A8FBF73DFA19A8FBF73AFA1CA8FBF737FA1FA8FBF734FA76 -:40C7400022A8FBF731FA25A8FBF72EFA28A8FBF72BFA2BA8FBF728FA2EA8FBF725FA3200089916A8FBF77CFE041E00D013E1079916A8FBF77BFD002800DB3FE116AA110097 -:40C7800019A8FBF7D7FE041E00D004E1390019A8FEF79CFC041E00D0FDE0BB4A089913681CA8013313603200FBF77EFE041E00D0F1E01C9B002B00DA26E11CAA11001FA874 -:40C7C000FBF7B8FE041E00D0E5E039001FA8FEF77DFC041E00D0DEE0AB4A19A9136822A8013313601FAAFBF75FFE041E00D0D2E0229B002B00DA14E137AA31A925A8FBF72C -:40C800002FFE041E00D0C6E0079925A8FBF72EFD002800DB12E137AA31A928A8FBF744FE041E00D0B7E0289B002B00DA0CE116AA28A92BA8FBF77EFE041E00D0ABE039002E -:40C840002BA8FEF743FC041E00D0A4E08E4D1CAA2B6825A901332EA82B60FBF76BFE041E00D098E039002EA8FEF730FC041E00D091E02B682EAA01332BA931A82B60FBF783 -:40C88000EFFD041E00D086E0390031A8FEF71EFC041E00D07FE02B6831AA0133110010002B60FBF747FE041E00D074E0390031A8FEF70CFC041E6ED12B682EAA01332BA914 -:40C8C00037A82B60FBF7F0FD041E64D1379B002B00DAC6E037AA11001000FBF72BFE041E59D1390037A8FEF7F1FB041E53D1664D37AA2B6813A9013310002B60FBF71AFEB7 -:40C90000041E48D1390037A8FEF7E0FB041E42D12B681FAA013319A908982B60FBF70AFE041E38D139000898FEF7D0FB041E32D139002B6822AA0133103130002B60FBF785 -:40C94000F9FD041E27D139003000FEF7BFFB041E21D12B68320001331FA930002B60FBF77FFD041E17D107993000FBF77FFC002800DB83E0320022A93000FBF7DBFD041ECB -:40C9800009D139003000FEF7A1FB041E03D13E4A13680133136016A8FBF70EF919A8FBF70BF91CA8FBF708F91FA8FBF705F922A8FBF702F925A8FBF7FFF828A8FBF7FCF804 -:40C9C0002BA8FBF7F9F82EA8FBF7F6F8002C00D039E60A9A31A90898FBF7CDF9041E00D031E60A9A37A93000FBF7C5F90C9B0400013B0C93002800D1FCE524E616A9079AA3 -:40CA00000800FBF7EBFCAFE600211CA8FBF77AFC002800D1D1E61CA9079A0800FBF720FDC4E6002122A8FBF76DFC002800D1E3E622A9079A0800FBF713FDD6E625A9079AB3 -:40CA40000800FBF7CBFCDCE6002128A8FBF75AFC002800D1EBE628A9079A0800FBF700FDDEE6002137A8FBF74DFC002800D131E737A9079A0800FBF7F3FC25E7079A31006F -:40CA80003000FBF7ABFC6CE7306300088A4C3800FEF712FB012800D0DEE539000B9834310C30FBF7E3FB002807D139000B982831FBF7DCFB4342434109938023F86DFF33C9 -:40CAC000099A83429B41511E8A415B42D218131D0A93984201D802230A930A9B34225E1E0123B3400D936B469B181B7801380C930A9BC018190013F087F9099B0E90002B6C -:40CB000004D07B6F0793002B00D0B5E024210D980EF0E6FB0790002800D1C8E00024242528006043079B01341818FEF74DFF0C9AE3B29342F4D30B990798FEF7D0FF041E8C -:40CB40001DD10E9B0B907343109343E00E990B9813F05AF90126FF258640242435406543079B0E990B985D1913F0D4F9002923D02A0029003800FEF75BFB041E27D07B6FCA -:40CB8000079A934211D0002A0FD00025242630006843079B01351818FEF754FF0C9AEBB29A42F4D807980EF01FFF002C00D153E50898FEF747FF4FE5F1B249086143079B57 -:40CBC00028005918FEF78BFF041ED1D0D7E70B9B01330B930B9B109A9342B7D101230022242531A92C005C430132079E9000043834190C505B000C98DBB29842F2D838008E -:40CC0000FEF760FD041EBAD1012524236B43079A4826D318119324236E435B426B43243E0B9596191093109B31009A193800119BFEF784FF0B9B0400013B0B93243E0028AC -:40CC40009DD1002BEFD16D000C9BEDB2AB42DCD831A924340B9B0D9A01339A421ED10B9A3800FEF72FFD041E89D1099B002B03D0079B7B670D9BBB67579B0F9A0493569BFC -:40CC8000089903930E9B380002930A9B01930C9B0093079BFFF756F9040070E720005843079D9A00043A281888500B93D2E7034C65E7034CC7E4C04680B0FFFF80B2FFFF73 -:40CCC00000B3FFFF1FB500240294079C0194069C0094FFF743FC04B010BDF0B5050085B00C001000012116001F00FBF70BFB002805D139002000FEF7F2FE05B0F0BD0121C7 -:40CD000030004942FBF7FEFA002812D139002000FEF7E5FE0028F0D10C3401002000FBF7F1FA0028E9D0291D22002000FBF7BCFBE3E70A9B32000293002321000193009338 -:40CD400028003B00FFF70AFCD7E70000F0B58DB004000D0016001F00FEF7AEF9012829D103A8FEF731FE149B3200009303A93B002000FFF7B2FF061E16D1149B129A0093C5 -:40CD80002900139B2000FFF7A8FF061E0CD12B0003AA29002000FEF7D1FE061E04D129002000FEF7D9F9060003A8FEF74BFE30000DB0F0BD004EFAE780B1FFFFF0B585B02F -:40CDC0000393C36D060007330093DB080D0002920193FEF771F9022863D1039B029A01992800FCF73FF9041E58D12800FBF774F80028F2D02800FBF76FF8F16D0138884201 -:40CE000040D9411A2800FBF741F9041E46D1002228001100FBF71AF8041E3FD1020001212800FBF713F8041E38D1F36DFE2B2ED000243000FEF740F901282FD11F27039BD6 -:40CE4000029A01992800FCF70DF9041E26D10723009928009943F36DC91AFBF717F9041E1CD1013F002F1ED001212800FBF74AFA0028E4DB310028004C31FBF7F7F9002883 -:40CE8000DDDA0BE001222800FAF7E0FFBDE7020002212800FAF7DAFF041EC9D0200005B0F0BD024CC5E7024CF8E7C04680B0FFFF00B3FFFFF7B515000F001E00089A099B7D -:40CEC00029000400FFF77AFF002809D1099B2A000193089B3100009320003B00FFF7F2FEFEBD37B50C000100069D00930195130028312200FFF7DEFF3EBD73B50C00010079 -:40CF0000200015001E0000F01DFE002808D12200210088327C3100962B002000FFF7E1FF76BD0000F0B50378ADB005000C00002B03D1294C20002DB0F0BD0A789A42F8D12B -:40CF40000F00883739008830FBF790F90028F0D126002800943631009430FBF787F90028E7D123002800A033A03019000393FBF77DF9051EDDD104A8FEF726FD0DA8FEF7EB -:40CF800031FD21000DA8FEF7C0FD2300220028337C320195009504A90DA8FFF793FE041E12D1390004A8FBF761F900280BD1310007A8FBF75BF9002805D103990AA8FBF7BB -:40CFC00055F9041E00D0044C04A8FEF73BFD0DA8FEF746FDAEE7C04680B0FFFF0368CB1803608B429B4111785B425B1813707047036810B58B429B4114785B42E31A137063 -:40D000000368591A016010BDF0B54368A5B0060000240E2B51D9012201AD0E3B01926B600E2B5AD815AB3B3221001800AB600FF0A7F86B68B1689A00383115A80FF00EF80F -:40D040000E23726893423BD32A0031003000FBF707FA041E31D104AF3B002A0013CA13C307A8382215A9B8600EF0F8FFE0213800FBF70CF8041E20D13A0031003000FBF7B2 -:40D08000EFF9041E19D1072384466A6893421CD33A0029002800FBF7E3F9041E0DD10F23E02128006B60FAF79DFF041E05D12A0031003000FBF7D4F90400200025B0F0BDFE -:40D0C000B06899000C500133BCE75424684600196446990044500133D8E7014CEDE7C04680B0FFFF30B54368040091B00020072B35D90122073B03920493092B36D806AD33 -:40D1000001002732280005950FF03AF8049BA1689A001C31280001930EF0A0FF1F2103A8FAF7B4FF00281AD1049B02000193FF21013320000493FAF789FE00280FD108232D -:40D14000626893420DD303A913220800FBF768FA002804D103AA21002000FBF7E5F811B030BDA568990048510133EAE70048F6E780B0FFFF10B5040010005368084A494283 -:40D180009B1882689B009950010022002000FBF725F9002802D101235B42236010BDC046FFFFFF3FF0B593B06B46DC1C012300210500029305A80C33342221700393049040 -:40D1C0000EF0DEFF18212800FAF70AFD061E00D05EE2AB6801A81A68196B01922200FFF7FDFEAB682200596D01A8FFF7F7FEAB682200196D01A8FFF7F1FEAB682200D96D0C -:40D2000001A8FFF7F5FE0021AB68019A1A605B68019361562670002900DB3CE24942220001A8FFF7E5FEAB682200596B01A8FFF7D5FEAB682200996D01A8FFF7CFFEAB68F9 -:40D240002200D96D01A8FFF7C9FEAB682200196B01A8FFF7CDFEAB682200196D01A8FFF7C7FEAB68019A00215A609B680193002361562370994200DB12E24942220001A811 -:40D28000FFF7B6FEAB682200996B01A8FFF7A6FEAB682200D96D01A8FFF7A0FEAB682200596B01A8FFF7A4FEAB682200596D01A8FFF79EFEAB68019A00219A60DB68019380 -:40D2C000002361562370994200DBEEE14942220001A8FFF78DFEAB682200D96B01A8FFF77DFEAB682200196B01A8FFF777FEAB682200196D01A8FFF771FEAB682200596D41 -:40D3000001A8FFF76BFEAB682200996B01A8FFF76FFEAB682200996D01A8FFF769FEAB682200D96D01A8FFF763FEAB68019A0021DA601B690193002361562370994200DBA0 -:40D34000B8E14942220001A8FFF752FEAB682200596D01A8FFF742FEAB682200596D01A8FFF73CFEAB682200196C01A8FFF736FEAB682200596B01A8FFF730FEAB68220042 -:40D38000196B01A8FFF72AFEAB682200196D01A8FFF724FEAB682200996D01A8FFF71EFEAB682200D96B01A8FFF722FEAB682200D96D01A8FFF71CFEAB682200D96D01A820 -:40D3C000FFF716FEAB68019A00211A615B690193002361562370994200DB70E14942220001A8FFF705FEAB682200996D01A8FFF7F5FDAB682200996D01A8FFF7EFFDAB6819 -:40D400002200596C01A8FFF7E9FDAB682200996B01A8FFF7E3FDAB682200596B01A8FFF7DDFDAB682200596D01A8FFF7D7FDAB682200D96D01A8FFF7D1FDAB682200196C46 -:40D4400001A8FFF7D5FDAB68019A00215A619B690193002361562370994200DB34E14942220001A8FFF7C4FDAB682200D96D01A8FFF7B4FDAB682200D96D01A8FFF7AEFD44 -:40D48000AB682200996C01A8FFF7A8FDAB682200D96B01A8FFF7A2FDAB682200996B01A8FFF79CFDAB682200996D01A8FFF796FDAB682200596C01A8FFF79AFDAB68019A7B -:40D4C00000219A61DB690193002361562370994200DBFEE04942220001A8FFF789FDAB682200D96C01A8FFF779FDAB682200196C01A8FFF773FDAB682200D96B01A8FFF7F5 -:40D500006DFDAB682200D96D01A8FFF767FDAB682200996C01A8FFF76BFDAB68019A0021DA611B6A0193002361562370994200DBD4E04942220001A8FFF75AFDAB682200F0 -:40D54000196D01A8FFF74AFDAB682200596C01A8FFF744FDAB682200196C01A8FFF73EFDAB682200D96C01A8FFF742FDAB68019A00211A625B6A019300236156237099428D -:40D5800000DBB0E04942220001A8FFF731FDAB682200596D01A8FFF721FDAB682200996C01A8FFF71BFDAB682200596C01A8FFF715FDAB682200196D01A8FFF719FDAB68AF -:40D5C000019A00215A629B6A0193002361562370994200DB8CE04942220001A8FFF708FDAB682200996D01A8FFF7F8FCAB682200D96C01A8FFF7F2FCAB682200996C01A882 -:40D60000FFF7ECFCAB682200596D01A8FFF7F0FCAB68019A00219A62DB6A0193002361562370994269DA4942220001A8FFF7E0FCAB682200D96D01A8FFF7D0FCAB68220014 -:40D64000196D01A8FFF7CAFCAB682200D96C01A8FFF7C4FCAB682200996D01A8FFF7C8FC0021019BAA68D36261560B1C002900DA00235BB2136300236C6801930C330133BF -:40D68000A3423FD3002903DA02AA2800FFF772FD300013B0F0BD220001A8FFF79FFCC2E5220001A8FFF79AFCECE5220001A8FFF795FC10E6220001A8FFF790FC46E6220086 -:40D6C00001A8FFF78BFC8EE6220001A8FFF786FCCAE6220001A8FFF781FC00E7220001A8FFF77CFC2AE7220001A8FFF777FC4EE7220001A8FFF772FC72E7220001A8FFF77C -:40D700006DFC95E7019F98001750B8E7F0B58FB06B46DC1C012300210500029305A8083324222170039304900EF02AFD10212800FAF756FA061E00D0D9E1AB6801A81A68C6 -:40D74000196A01922200FFF749FCAB682200596A01A8FFF743FCAB682200D96A01A8FFF747FCAB682200196B01A8FFF741FCAB682200596B01A8FFF73BFCAB682200996B69 -:40D7800001A8FFF735FC0021AB68019A1A605B68019361562670002900DBABE14942220001A8FFF725FCAB682200596A01A8FFF715FCAB682200996A01A8FFF70FFCAB6812 -:40D7C0002200196B01A8FFF713FCAB682200596B01A8FFF70DFCAB682200996B01A8FFF707FCAB682200D96B01A8FFF701FCAB68019A00215A609B680193002361562370B7 -:40D80000994200DB7BE14942220001A8FFF7F0FBAB682200996A01A8FFF7E0FBAB682200D96A01A8FFF7DAFBAB682200596B01A8FFF7DEFBAB682200996B01A8FFF7D8FBE5 -:40D84000AB682200D96B01A8FFF7D2FBAB68019A00219A60DB680193002361562370994200DB51E14942220001A8FFF7C1FBAB682200D96A01A8FFF7B1FBAB682200D96A8B -:40D8800001A8FFF7ABFBAB682200196B01A8FFF7A5FBAB682200196B01A8FFF79FFBAB682200596B01A8FFF799FBAB682200D96B01A8FFF79DFBAB682200196A01A8FFF706 -:40D8C00097FBAB682200596A01A8FFF791FBAB68019A0021DA601B690193002361562370994200DB15E14942220001A8FFF780FBAB682200196B01A8FFF770FBAB6822007A -:40D90000196B01A8FFF76AFBAB682200596B01A8FFF764FBAB682200596B01A8FFF75EFBAB682200996B01A8FFF758FBAB682200596A01A8FFF75CFBAB682200996A01A87D -:40D94000FFF756FBAB68019A00211A615B690193002361562370994200DBDFE04942220001A8FFF745FBAB682200596B01A8FFF735FBAB682200596B01A8FFF72FFBAB68B3 -:40D980002200996B01A8FFF729FBAB682200996B01A8FFF723FBAB682200D96B01A8FFF71DFBAB682200996A01A8FFF721FBAB682200D96A01A8FFF71BFBAB68019A002169 -:40D9C0005A619B690193002361562370994200DBA9E04942220001A8FFF70AFBAB682200996B01A8FFF7FAFAAB682200996B01A8FFF7F4FAAB682200D96B01A8FFF7EEFA45 -:40DA0000AB682200D96B01A8FFF7E8FAAB682200996B01A8FFF7E2FAAB682200596B01A8FFF7DCFAAB682200196A01A8FFF7E0FAAB682200596A01A8FFF7DAFAAB68019A80 -:40DA400000219A61DB690193002361562370994200DB6DE04942220001A8FFF7C9FAAB682200D96B01A8FFF7B9FAAB682200D96B01A8FFF7B3FAAB682200D96B01A8FFF78B -:40DA8000ADFAAB682200196A01A8FFF7A7FAAB682200996A01A8FFF7ABFAAB682200D96A01A8FFF7A5FAAB682200196B01A8FFF79FFAAB682200596B01A8FFF799FA002158 -:40DAC000019BAA68D36161560B1C002900DA00235BB2136200236C68019308330133A3422BD3002903DA02AA2800FFF743FB30000FB0F0BD220001A8FFF770FA53E62200B1 -:40DB000001A8FFF76BFA83E6220001A8FFF766FAADE6220001A8FFF761FAE9E6220001A8FFF75CFA1FE7220001A8FFF757FA55E7220001A8FFF752FA91E7019F980017504A -:40DB4000CCE700007FB50D000400FDF789FFE81E25700A2800D900E112F04CF90B003500FF00FF00FF00FF004D00FF00FF00FF0098007C4B0125636608237B4AA360E2605A -:40DB80007A4A236262627A4A23656265794AE362A363794B6560E561E564A56222636563E363764B25646564A364201DFAF794F9A06520004C30FAF78FF925660025E065A1 -:40DBC000280004B070BD6E4B012563660C236D4AA360E2606C4A236262626C4A236562656B4AE362A3636560E561E564A56222636563684BD4E71021674B684A6366601859 -:40DC0000FAF71AFD051E00D0A3E0261D01213000FAF7F3F8051E00D09BE0FF213000FAF7E1F9051E00D094E0132231003000FAF770FC051E00D08CE03000FAF74DF94836CE -:40DC4000A065574A10213000FAF7F6FC051E00D07FE00122FC213000FAF7F8F8051E00D077E0200009212830FAF7C7F8051E70D1200001214030FAF7C0F8051E69D120003F -:40DC80003430F9F799FFFE23E36599E7454B01A86366F9F789FF1021434A6018FAF7CCFC051E50D1261D01213000FAF7A6F8051E49D1E0213000FAF795F9051E43D1012277 -:40DCC00031003000FAF725FC051E3CD1E0213000FAF788F9051E36D1012231003000FAF718FC051E2FD13000FAF7F6F8A065200005212830FAF781F8051E24D12000012192 -:40DD00004030FAF77AF8051E1DD120003430F9F753FFDF214836012249003000FAF796F8051E10D1214A102101A8FAF785FC051E09D101AA31003000FAF7B6FB051E02D144 -:40DD4000C023FF33E36501A8F9F736FF002D00D136E72000FDF784FE32E72000FDF780FE134D2DE70DD70010345C0210B45B0210145C0210D45B0210F45B02109C03000826 -:40DD8000A5D10010145D0210545C0210E45C0210845C0210B45C0210E5D000104E5B0210555B021009D00010765B02107B5B021080B1FFFFF0B595B00600019100921D00DC -:40DDC000402B0AD9002304AA2900009805F0D4FE041E22D1402504AB00936B461B7903AF3B703300316808337D70019300290FD00123022233603900019805F061FD041E6C -:40DE00000BD12A000099019805F05AFD040004E0019804F0E7FE041EEAD004A8402102F0F5F8200015B0F0BD0300F0B5E0331B68A5B00700002B34D0002305001E00E43582 -:40DE400001933B00E0331B689E420BDB0024019BA34200D13D3C802104A802F0D7F8200025B0F0BD2B69012B00D1019300232C680393802203AB04A96868A047041EEAD1D5 -:40DE8000039B002B0AD0F1B204AA3800FFF792FF041EE4D1AB68039A9B18AB6001361435CFE740246442DAE770B505000026C8220400E035520031002E60E4300EF060F99A -:40DEC00020002660083004F07BFE2A68132A0EDC14235343E31819000748E431086040204E60C8600121F433521819602A609D2300229B00E25070BD61E0001070B504002F -:40DF0000083004F063FE9D2300259B00E55023002000C821E0331D60E430490002F076F8256070BD10B513000A001421FFF742FF10BD30B591B040226946050000F019F81C -:40DF4000041E10D140216846F8F708FA00280DDB2100402268460EF013F9402269462800FFF7E0FF0400200011B030BD3F246442F9E7F0B595B0050003910292402A00D930 -:40DF80006BE09D239B00C258002A4DD081235B000193019B013B0193002B5BD02800FFF743FF041E3BD12E002F00EC3633000122E03739688C4240DB002AEAD0402200219A -:40DFC00004A808350EF0DCF804A9280005F081FC041E24D1280004F0F9FD280004F0F0FD2100280004F0FEFD041E18D1402204A9280005F065FC041E11D104AA0300402107 -:40E00000100005F0B9FD041E09D1030001003A6893421BDB029A04A903980EF01FF8402104A801F0F3FF05E00122C250FFF781FF041EABD0200015B0F0BD18688446586806 -:40E04000844500D2002201341433B3E7316001331436DDE73C246442E1E73C246442E9E770B590B00E0014000021402268461D000EF086F840216846F8F766F900280BDB9A -:40E080003F2C00D940242200694630000DF0E6FF00202C6010B070BD3C204042FAE70000F0B587B002900F20CC7B029B0440E4001C192300C83303911E685968E56CA36C46 -:40E0C00001900398019C075D0F243809049001983C400F2820D02F07180938432D0937073D4336090F073E430F090299E4000C190F210B402B49DB00C95884460B04210072 -:40E10000C83118000B6849685E4063464140A06CE46C7940434065402C07180920430590049834072D092543C40002983609041927000807C837064338687F6884460F202C -:40E1400003401848DB00C358604609091B04794046405940A06C059BE46C43400198654001380190ADD2080E1070080C5070D170080A310E1171310C5171310A9171290E60 -:40E180001172290C5172290A9172190E1173190C5173190A9070D671D5729173D37307B0F0BDC046485D0210C82210B5520000210DF0E6FF10BDF0B591B002901700080096 -:40E1C000012219001E00FBF7BDFD051E00D19FE04469102C00D09BE00298FBF7CFFD29000298FBF7C5FF002800D08FE00123320039000298FBF7DAFD002800D086E00100E9 -:40E200000B9022000CA80DF0BBFF0BAB00930CAB220019000298FBF723FE002876D10F99029C0EBA0E990D9B883409BA266061601ABA029C0C9BF8341BBA226163610025B6 -:40E240000024029FC8373C607D60029FBC64FD6404340325A4460127E124374024066743CC07039449080491039976080E430499D40721435208DC07224364465B087B407C -:40E28000029FE4003C19A664E164C8340CC46446013D6410A446002DDDD1032303933B0048330493803302350593059AEF00D6193268049B06927268DB1907921A680299EB -:40E2C00008925A68503109923200F619B446083208330F0080373E68069C664016607E68079C664056600E68089C083266401E604E68099C083166405E6008336245E8D1DC -:40E30000039B6D00013B0393002BCED111B0F0BD14204042FAE7F0B500278DB004000E0004921D000797BB4200D193E003006933FF3310223900180003930DF021FF23005A -:40E340007933FF3339001800102205930DF018FFC4235B00E650230000200021F833186559659865D9650C2D20D12A00049903980DF074FE78230122FF33E25407AB0093AD -:40E3800023005933FF33102203992000FBF768FD051E08D123001027139AF8339A65D865139B002B3AD128000DB0F0BD08AE1022390030000DF0E4FEEB001A0E32731A0C49 -:40E3C00072731A0AB273F3732F00102D00D910272600049B6936DA19FF360492320011781878013341401170049901329942F6D1039A20001100FFF753FEED1BE4D108A975 -:40E4000033786A5C0135534033700136102DF7D1039A20001100FFF743FEAFE7139E102E00D93E002200129B79329919FF321291117818780133414011701299013299421A -:40E44000F6D1059A20001100FFF72AFE139B9B1B1393A5E714256D42A5E7F0B58DB0039300230793039B04000D001600934202D99B1A8B4267D327002A000023F837386D2F -:40E48000796D12184B4199425DD801D190425AD80F2B58D802D11100203154D83A657B65002D02D128000DB0F0BD2F00102D00D910272200210078327431FF32FF31137804 -:40E4C0000133DBB21370002B02D1013A8A42F6D1210007AB69310093102208ABFF312000FBF7BEFC0028DED1230008AA7933FF330592C4225200A2580492002A03D11A78B2 -:40E50000315C4A401A70059A315C825C4A4003990A54C421490061580491012902D119784A401A70013001338742E2D121007931FF310A002000FFF7B3FD039BED1BDB1948 -:40E54000F6190393ACE714204042ACE70300F0B5F83389B003921A6D9E6DDD6D0700586D039B0291510FD200C4000192ED00720F043B0C431543F6000C2B58D839005931A3 -:40E58000039AFF3102980DF069FD2200019B2A433343134302D1002009B0F0BD1022002104A80DF0EDFD04AA2B0E13702B0C53702B0A9370330E1371330C5371330A9371B6 -:40E5C000230E1372230C5372230A9372019BD5701B0E1373019BD6711B0C5373019BD4721B0A937313006A461279DA733B007933FF330022190004AC1878A45C01326040D0 -:40E6000018700133102AF6D10A003800FFF748FD00231A0002997932FF32C95CBA5C4A400299CA54039A01339A42F2D1B3E714204042B1E737B515001A00089B04000193C0 -:40E64000079B0093069BFFF766FE00280CD10A9B099A29002000FFF700FF002804D10B9A0C992000FFF772FF3EBD70B50C008CB01599139D0491149908AE03911199009382 -:40E6800002911099130001910696059522000021FFF7D0FF031E07D00CB070BD129AF15CD25C01334A401043AB42F7D10028F3D01598210001F0AAFC12204042ECE710B5D1 -:40E6C0000400FBF75BFBC8212000490001F09EFC10BD10B5642200210DF052FD10BDF0B5040095B000680091019200F051FA009B05000127002B03D0019F7A1E97410137DC -:40E70000002203AB1A7002AB1B79BB4201D315B0F0BD260020000C3600F020FA2A003100200000F0D5F9012203A9200000F0D0F9022F04D1019A0099200000F0C9F904A9CF -:40E74000200000F0D7F92A0004A9200000F062F92A003100200000F0BBF93100200000F0C9F903AA137801331370CCE7F7B50092012204000D00019300F0F0F8061E16D1CA -:40E780002700280000F004FA0C3702003900200000F040F9280000F0FBF90121020038000DF0EEFC019A00992000FFF798FF3000FEBD8023F0B5E3B00400019116005B0058 -:40E7C0009A4227D8036DD318C0225200934221D8002102A80DF0D4FC226D02A9206EE36D9847051E19D1019B276D002B08D0002E06D002ABF818320001990DF02FFCBF1985 -:40E800003A0002A92000FFF76AFF0123E364280063B0F0BD05256D42F9E70925FBE7F0B5040085B000681F000291150000F0B0F980230390DB009D424CD880230A9A5B00FC -:40E840009A424AD8E36D002B1BD0636D012B03D0E36CA26D934214DD0A9A39002000FFF7A8FF00280BD10A90002D15D120000A9A3900FFF734FF2800E36C0133E36405B029 -:40E88000F0BD002FF0D00A9B002BEDD01A0039002000FFF724FFE7E7039B2E009D4200D91E00200000F05AF923000C331900039A2000019300F00CF90199200000F01AF952 -:40E8C0003200019902980DF0C9FB029BAD1B9B190293C9E703204042D1E70520FBE7002307B50093FFF79BFF0EBD10B5041E05D000F018F86421200001F088FB10BD0000C0 -:40E900000538C3B20020032B02D8024A9B0098587047C046C85D021010B50C2200210DF02FFC10BD10B5041E16D00368002B13D04068002801D05B6A9847A068002807D097 -:40E940002368D968490001F061FBA0680DF04CF80C21200001F05AFB10BD000070B504000D001600002917D0002815D00B6A9847606000280BD0002E0BD0E96802200CF094 -:40E98000AFFCA060002804D16B6A60689847034801E00020256070BD0148FCE780AEFFFF00AFFFFF10B5002806D00368002B03D01B694068984710BD0048FCE700AFFFFF54 -:40E9C00010B5002806D00368002B03D05B694068984710BD0048FCE700AFFFFF10B5002806D00368002B03D09B694068984710BD0048FCE700AFFFFF70B50D001100002834 -:40EA000004D0C4691A002800A04770BD0048FCE700AFFFFFF0B593B0040001911700002851D00368002B4ED08268002A4BD0DA68BA4217D21B6940689847051E30D1236805 -:40EA40003A005B69019960689847051E28D1236802A99B6960689847051E21D123689F6802AB01932368A668DA6836213000B5180DF086FB23685C21DA6828000DF080FBDB -:40EA800000239F4213D1236860681B699847051E06D1236831005D69DA686068A8470500402102A801F0B2FA280013B0F0BD0199F25CC95C4A400199F254EA5CC95C4A4092 -:40EAC000EA540133DDE7014DEEE7C04600AFFFFF10B5002809D00368002B06D08468002C03D05B694068984710BD0148FCE7C04600AFFFFFF0B5040091B00E00002829D0DD -:40EB00000368002B26D08568002D23D0DF6869469B694068984700281AD1236860681B699847002814D12368E919DA685D696068A84700280CD1236869465D699A686068CA -:40EB4000A847002804D1236831009B696068984711B0F0BD0048FBE700AFFFFF70B5041E11D00368002B0ED08568002D0BD01B6940689847002805D1236829005E69DA68A6 -:40EB80006068B04770BD0148FCE7C04600AFFFFF031E00D08368D8B27047002800D00078704710B503F0AEFA10BD10B503F05CFA10BD10B5040003F050FA20000CF014FF09 -:40EBC00010BD10B56C2101200CF08AFB041E01D003F03DFA200010BD10B5012303F0CFFF10BD10B5002303F0CAFF10BD10B503F024FF10BD10B503F017FF10BD10B5012138 -:40EC000003F038FA10BD10B5002103F033FA10BD10B504F073F810BD10B503F0DEFF10BD10B5040003F0D2FF20000CF0DDFE10BD10B5D82101200CF053FB041E01D003F05C -:40EC4000BFFF200010BD10B5012304F095FF10BD10B5002304F090FF10BD10B504F039FE10BD10B504F02CFE10BD10B5012103F0B9FF10BD10B5002103F0B4FF10BD00004E -:40EC800070B505000E000B4C002807D12E20404270BD62686B689A4204D0143420680028F7D1F3E7A9680DF0B3F90028F5D1237C3370EDE7405F021030B5084B1C68002C8A -:40ECC00002D12E20404206E01D7C854204D100205B680C60136030BD1433EFE7405F021070B505000E000B4C002807D12E20404270BD62686B689A4204D014342068002808 -:40ED0000F7D1F3E7A9680DF083F90028F5D1237C3370EDE7A05E021030B5084B1C68002C02D12E20404206E01D7C854204D100205B680C60136030BD1433EFE7A05E021011 -:40ED400030B5084B1C68002C02D12E20404206E01D7C854204D100205B680C60136030BD1433EFE7DC5E021010B50C2200210DF007FA10BDF0B587B00500029103921F00CE -:40ED8000002800D16DE018000DF01EFF061E03D1374E300007B0F0BD039938000DF014FF041EF5D08642F3D202980DF00BFD36183378203B5A425341F61833780D3B5A42B2 -:40EDC0005341F61833780A2BE2D103980DF0FAFC201803780136203B5A425341C01803780D3B5A425341C01803780A3B5A425341C0180E9BC01B1860A71B152F03DCB44299 -:40EE00000AD81C4EC5E716221B4930000DF000F90028F4D1194EBCE700210097330005AA0800F8F7B7FA2C301DD0059901200CF057FA041E19D03300009705AA0599F8F779 -:40EE4000A9FA061E09D00599200001F0DFF820000CF0CAFD074BF6189BE7059B2C606B6097E7074E95E7074E93E7074E91E7C04680EFFFFF00EFFFFF3667021000ECFFFFCC -:40EE800080EBFFFFD4EEFFFF80EEFFFF10B504000068002802D0616801F0B8F820680CF0A3FDA0680CF0A0FD0C21200001F0AEF810BD002802D0002303604360704710B513 -:40EEC000041E09D00368002B06D040689B6A98470821200001F09AF810BD00000138C3B20020032B02D8024A9B0098587047C0465067021070B505000E0000280CD00029EE -:40EF00000AD00468002C07D14B6A98476860002804D020002E6070BD0148FCE70148FAE780C1FFFF80C0FFFF031E03D00268131E00D01378180070470300012803D006388B -:40EF400043425841C3B2180070470000064A01234A6002000B700B73044B083214308A600B6148617047C046286802102E6802100238C3B2022200209A4240417047806D4F -:40EF80007047000002230B70024B88304B6088607047C046606702100238C3B2012200209A4240417047043843425841704710B5040002F057FD20000CF016FD10BD10B5E5 -:40EFC000AC2101200CF08CF9041E03D00022110001F020FD200010BD10B501F08DFD10BD10B501F02BFDC00010BD0000F0B585B01F0004000E00150001F020FD0A9B1860BC -:40F000000B9B98420AD802970196009500230D9A0C99200002F084F805B0F0BD0048FBE700BCFFFFF0B585B0170004000D001E0001F004FDB8420DD10B9B029603930A9B03 -:40F04000019500930D9A01230C99200002F002FA05B0F0BD0048FBE780BFFFFFF0B585B00D0017001E00040001F0E8FC0B9B0D9A18600A9B029703930196009501230C999D -:40F08000200002F041FB05B0F0BD0000F0B587B0059306000C00170001F0D0FC0D9B0500984212D80C9B02970393059B00940193002330001A00190002F0B2FC002805D113 -:40F0C0000D9B9D4202D2024800E0024807B0F0BD00C7FFFF80BCFFFF10B50400FCF7F1FC20000CF081FC10BD10B5AC2101200CF0F7F8041E01D0FCF797FC200010BD10B506 -:40F10000FDF710FF10BD10B5AC2101200CF0E8F8041E01D0FBF7C8FF200010BD10B50400FBF7C6FF20000CF05FFC10BD1FB5099C0394089C0294079C0194069C0094FBF769 -:40F1400030FF04B010BDF0B50400B1B005A80D0016001F00FBF7A8FF210005A8FBF788FF041E0ED1399B32000393389B29000293379B05A80193369B00933B00FBF711FF24 -:40F18000040005A8FBF794FF200031B0F0BD000007B511001A00059B0093049BFBF760FF024B984200D102480EBDC04600B4FFFF00C7FFFFF0B50400AFB003A80D00160001 -:40F1C0001F00FBF771FF210003A8FBF751FF041E0AD1359B32000193349B2900009303A83B00FFF7D5FF040003A8FBF761FF20002FB0F0BD70B58AB01600302309AA040086 -:40F200000D00F7F7D9FE002802D0294BC01805E02368099A9B189D4202D026480AB070BD022309AA29002000F7F7C6FE0028ECD1069005900490039002900190009003002A -:40F24000099A2168300001F031FA002801D01848E4E72368099A29009B18236009AA02232000F7F7A9FE0028CFD1099B0490069323680390059302900190009003000200D1 -:40F280000100300001F012FA0028E0D12368099A30009B18236001F04FFA0028D7D1300001F0CEFB0028D2D123689D42B6D0B4E700C5FFFF9AC4FFFF036837B50D00062BB5 -:40F2C00001D00B483EBD6B46DC1D2100FFF708FD00280AD12B78002B02D022789A42F0D121782800FEF72EFCECE70248EAE7C04600C3FFFF00C6FFFF70B50C0016008EB071 -:40F3000005000BA8F8F750FCA119302309AA0AA80A94F7F751FE002804D06B4BC41820000EB070BD099A0A9B0AA89E18310008AAF7F754FE0028F0D1089B002B00D0C0E0FA -:40F34000023309AA31000AA8F7F736FE041E00D0A6E006900590049003900290019000900300099A0A99280001F0A0F9041E00D096E00A9B099A31009B180A9309AA02231F -:40F380000AA8F7F719FE041E00D089E0099B049006930A9B03900593029001900090030002000100280001F081F9041E00D077E00A9B099A31009B180A9309AA02230AA8B2 -:40F3C000F7F7FAFD041E6BD1099B069004930A9B05900393029001900090030002000100280001F063F9041E5AD10A9B099A31009B180A9309AA02230AA8F7F7DDFD041E71 -:40F400004ED10021099B06910093059104910391029101910A9B0A00280001F047F9041E3ED10A9B099A31009B180A9309AA02230AA8F7F7C1FD041E32D1099B06900293AE -:40F440000A9B05900490039001930090030002000100280001F02AF9041E21D10A9B099A28009B180A9301F067F9041E18D10BAA31000AA8F7F7D6FD041E11D10BAA310052 -:40F480000AA8F7F7CFFD041E0AD10BAA31000AA8F7F7C8FD041E03D10A9B9E4200D00B4C0BA8F8F789FB002C00D138E7084B1C4205D1054BE418280002F0D4FA2FE7024C95 -:40F4C000F9E7044C2BE7C04600C3FFFF9AC2FFFF80FF000080C2FFFFF0B506000F001C0085B00021180015000C220CF049FE230001AA39003000F7F7BEFD002803D00C4BEE -:40F50000C01805B0F0BD290001A8FFF7B9FB00280CD12B78012BF4D12368052B01D0002B02D16368002BECD00148EAE70148E8E780C5FFFF80C3FFFFF0B589B00500049112 -:40F540003023891804A803AAF7F736FD002804D0594BC418200009B0F0BD039A049B04A89F18390002AAF7F739FD0028F0D1029B012B00D09BE0033303AA390004A8F7F7C0 -:40F580001BFD0028E4D12E007C36039A04993000F8F7CCFC041E05D02800FCF792FA464BE418D7E7049B039A9B1804939F4235D0A02303AA390004A8F7F7FEFC041E2AD1A6 -:40F5C000049B039A9C18002A21DD1B780593062B1FD106AA210004A8F7F7EEFC00280DD0354BC418002C05D1290005A8FFF764FE041E13D02800FCF764FAABE7049B069A72 -:40F6000007939B1804939C42EED02C4CF2E72C4CF0E72C4CEEE703006233BDD1049B9F422FD0A12303AA390004A8F7F7C5FC041E24D1039A049B04A89C18210003AAF7F744 -:40F6400004FD002800D083E7049A039BD3189C422FD12F008837A31A39002800FCF73EFE002803D139002800FCF770FE0494002815D0154B984204D00F4C6BE70300623331 -:40F680008AD100232900019300932B003200283388312800FDF716FB041E00D07CE731002800FCF71FFF041E00D153E7A2E7074C50E7024C4EE7C04600C3FFFF9AC2FFFF3B -:40F6C000A0C2FFFF9EC2FFFF80B1FFFF80C2FFFFF0B589B06B46DE1D00230500049133708918303303AA04A8F7F766FC002804D0284BC418200009B0F0BD039A049B04A88D -:40F700009F18390002AAF7F769FC0028F0D1029B002B3BD105AB3200390004A8FFF7DCFE0028E5D1042303AA390004A8F7F744FC0028DDD1039B002B2AD03078FFF7CEFBC1 -:40F74000011E01D1144CD5E72800FFF7D3FB041ED0D13378012B0AD1039A04996868FFF7CBFD041EC6D02800FFF7A9FBC2E7023B012BE7D8696805A8FFF79EFD041EF2D114 -:40F78000039A04996868FFF7D7FEEAE7034CB1E7034CAFE700C3FFFF80C3FFFF80C2FFFFA0C2FFFFF0B58BB004ABDD1D002317002B7006AA30330600F7F7FEFB002804D0DB -:40F7C000324BC41820000BB0F0BD069A33689446634401932A0007AB01993000FFF77CFE041EEFD106AA01993000F7F72EFC002801D0274BE5E7069A33689B18019A9A42B2 -:40F800003ED12878FFF76AFB011E3BD03800FFF771FB041ED6D12B78012B0BD17A6801993000FFF7E7FC051E24D03800FFF747FB2C00C7E7023B012B26D8796807A8FFF7B3 -:40F840003BFD051EF1D17B683268029388330393019B03999B1A0298FCF740FD051E04D103990298FCF772FD0500019B3360002DA8D0DAE73368019A9A42A3D0054DD4E795 -:40F88000044C9FE7044C9DE7034DCEE700C3FFFF00C5FFFF9AC4FFFF80C3FFFFF0B58BB0050007A817000E000593FFF75DFA002F00D17EE07B1EF31804931B78002B20D093 -:40F8C000049B1B78002B5AD106AB0293109B564A0193059B5549009307A83300FFF74AFA041E43D10220FFF7F9FA01002800FFF701FB041E23D1089A07996868FFF71CFEDA -:40F900001BE006AB0293109B494A0193059B4949009307A83300FFF72DFA041E16D10120FFF7DCFA01002800FFF7E4FA041E06D1089A07996868FFF7DFFC041E02D0280005 -:40F94000FFF7BDFA07A8FFF7A1FA03E03A4B984203D13A4C20000BB0F0BD394B984201D1384CF7E7384B9842F4D1A9E7324B9842EFD0334B9842F3D0334B9842EAD1F319E2 -:40F98000013B1B78002B14D106AA0292019300932E4A33002E4907A8FFF7ECF9041E05D1089A07992800FFF793FEC6E7264B9842D0D13A0031002800FFF78AFE002829D09D -:40F9C0002800FFF77CFA2800FFF773FA0120FFF785FA01002800FFF78DFA002813D02800FFF76DFA2800FFF764FA0220FFF776FA01002800FFF77EFA00280DD02800FFF75E -:40FA00005EFA144CA6E73A0031006868FFF774FC0028E4D100249DE73A0031006868FFF78BFD0028F6D0E9E789680210A66802104B6802106968021080ECFFFF80C4FFFF6D -:40FA400000EDFFFF00C4FFFF80EFFFFFC5680210DF68021000C3FFFFF0B58DB0050009A817000E00FFF780F9002F35D07B1EF31805931B78002B56D108AA02920193009325 -:40FA8000364A3300364909A8FFF774F9041E47D1099B012005930793FFF720FA011E03D1304C20000DB0F0BD2800FFF723FA041EF7D10A99079B6A68591807A8FFF79AFBDF -:40FAC000041E02D02800FFF7FAF909A8FFF7DEF9E7E7254B9842F8D109A8FFF7D7F90120FFF7FCF9011EDBD02800FFF703FA041ED7D1F7196A68390007A80796FFF77AFB9E -:40FB0000041ECED02800FFF7DAF9184B9C42C8D12A00390007A80796FFF744FE0400C0E7114B9842D1D1059B1B78002BD4D108AA0292019300930E4A33000E4909A8FFF7D7 -:40FB400019F9041EC5D109990A9B07912A00C91807A80593FFF726FE0400B6E7FB6802101869021080C3FFFF80EFFFFF9EC4FFFF376902105069021070B50500100085235A -:40FB80000E0001000022A6B004AC01938831009403AB0392FCF756FB00280CD12868B0420BD3039A861B964207D3801A286021000CF054FA039826B070BD6C204042FAE737 -:40FBC00037B504000D001000694601AAFFF7A4F8002805D1019B009A29002000F7F769FB3EBD0000F0B58BB00390100004911400FFF79AF9012847D10025636807AF38006E -:40FC00000593F7F7D1FF019700952B002A002900059800F04BFE2E000400A8421CD13A0004990398F7F7FBFA0400A84214DB0600019500952B002A003900059800F036FE32 -:40FC40000400A84208D13A0004990398F7F7E7FA0400A84200DB36183800F7F7ADFF002C0FDB320004990398F7F74CFA041E08DB8619302204990398F7F7B0FA041E00DB1C -:40FC8000841920000BB0F0BD2000FFF74DF9022806D1626804990398FFF76EFF0400F0E7004CEEE780C6FFFFF0B58A1889B005920700020005A80D00FFF794FF041E52DB6B -:40FCC0003800FFF731F907284DD0059B5A1B002A4CDD0022013B05931A70631C1A00290005A80393F7F70EFA0600041E3BDB0322290005A8F7F772FA0290041E33DB3800F0 -:40FD0000FFF712F906AA07A9FEF7D6FF041E2AD13800FFF709F9022807D17B6829001A7805A8FFF74DFF041E1DDB0094069B079A290005A8F7F7D6FA041E14DB039B290060 -:40FD4000F618029B9E198619320005A8F7F7DAF9041E08DB86193022290005A8F7F73EFA041E00DB8419200009B0F0BD6C246442F9E70000F0B58A188BB004000F0006928D -:40FD8000FFF7D2F8012800D0B3E0636807A80293F7F70AFF002207AB1100029800F0EEFD00250400A84200D091E007AA390006A8F7F735FA0400A84200DA88E00023050036 -:40FDC00007AA1900029800F0D9FD041E00D07EE007AA390006A8F7F722FA041E77DB00232D181A0007A9029800F0C8FD041E6ED107AA390006A8F7F712FA041E67DB002675 -:40FE00002D180196009607AB32003100029800F04DFD0400B0425AD107AA390006A8F7F7FEF90400B04252DB2D1801960096330007AA3100029800F039FD0400B04246D152 -:40FE400007AA390006A8F7F7EAF90400B0423EDB07AB00932D180196330032003100029800F024FD0400B04231D107AA390006A8F7F7D5F90400B04229DB07AB01932D18D7 -:40FE80000096330032003100029800F00FFD0400B0421CD107AA390006A8F7F7C0F90400B04214DB2D18019600963300320007A9029800F0FBFC0400B04208D107AA3900B8 -:40FEC00006A8F7F7ACF90400B04200DB2D1807A8F7F772FE002C09DB0022390006A8F7F729FA04004519002800DB6EE020000BB0F0BD2000FFF718F8022800D078E06568F4 -:40FF000039002A0006A8FFF737FE041EEEDB069BDA1B002A6EDD0022013B461C069339001A7006A83200F7F7EDF8041EDEDB0322390006A8F7F752F9002862DBA419031962 -:40FF40001A00390006A80493F7F7DCF80290041ECCDBA122390006A8F7F740F90390041EC4DB2A78390006A8FFF72AFE041EBDDB05900200390006A8F7F7C4F8041EB5DB6C -:40FF8000A022390006A8F7F729F9061E35DB2A0039007C3206A8F7F742F9051E2FDB0423069A3900137006A80122F7F7C3F9002827DB049A029B9446039A63449B18059A6C -:40FFC0009B181C19A619AB19C5182A00390006A8F7F798F8041E00DA88E745193022390006A8F7F7FBF8041E00DA7FE744197DE7054C7BE76C24644278E7040076E7040077 -:020000041001E9 -:4000000074E7040072E7C04680C6FFFF10B5034B0A001B680021984710BDC046A0030008F0B5C9B047930368469102934368466A0393836803990C93C368C76A1093039B1D -:4000400001909B085B1844930C9B0C999B085B181193109B10999B085B180D93036A00920493836A0893036B9C4600230F930F9B469A93420AD1019B049A5E621A62089A6D -:40008000DF629A6262461A6349B0F0BD009B00255A789B7812021B041343009A1D95127820961343009A1F95D2782195120613431C0020982199049B23951C931C9A1D9B6A -:4000C00012196B4104920593009B5A799B7912021B041343009A12791343009AD279120613431E931E9A1F9B12184B41059922912298239980185941009B069007915B7AB2 -:40010000009A1B02927A259512041343009A2795127A29951343009A2C97D27A2B95120613432493089B2D95269326982799249A259B12184B41079928912898299980180F -:400140005941009B009A5B7B927B1B0212041343009A089009912C982D99127B1343009AD27B120613432A932A9A2B9B12184B4109992F952E912E982F9980185941479BF2 -:400180000A900B910B9A63449B180E930D9A2B000698290010F042F8029A06000F002B000498290010F03AF8089A36184F412B001198290010F032F8449A36184F412B0035 -:4001C0000A98290010F02AF836184F41039A2B00069829001296139710F020F80C9A06000F002B000498290010F018F8089A36184F412B000298290010F010F80D9A361815 -:400200004F412B000A98290010F008F8119A36184F412B000E98290010F000F836184F412B00409641972900049A10980FF0F6FF0C9A06000F002B00069829000FF0EEFF0A -:40024000089A36184F412B00039829000FF0E6FF029A36184F412B000A9829000FF0DEFF0D9A36184F412B000E9829000FF0D6FF36184F410E9A029B069853432900029A70 -:4002800045932B00429643970FF0C8FF039A06000F002B00049829000FF0C0FF089A36184F412B000D9829000FF0B8FF119A36184F412B000A9829000FF0B0FF36184F4129 -:4002C000139B31953093309A319B2900B6185F410E98449A2B000FF0A1FF36184F414098419932973395329A339B8018594106900791079B3595349334983599429A439BAA -:4003000012184B410A920B930B9A459B944663449C46129B03221A9363469B0836936346934338933795399538983999369A379B12184B411B951A981B9912184B413A96D7 -:400340003B950492149315953A9A3B9B149E159F92197B411693069B17953C933D951698179916003C9A3D9B12184B4118930A9B19953E933F951898199908923E9A3F9B8F -:4003800012184B410321170062460A40D3189C460F9B01330F93009B1033009367E610B5002802D04821FFF731FE10BD10B5FFF7F6FF10BDF8B505000F001400002837D0B4 -:4003C000002A0FD0002933D0406C002833D01026361A34302818B24206D20BF03FFE6B6C1C196C64002025E032000BF037FE00232A006B640133343219002800FFF710FE65 -:40040000A41B0F2C0AD9BA19210901232800FFF707FE0F2322009A43B6181C40002CE1D028006C64B919220034300BF017FED9E757204042F8BD06000F2AE4D8F0E7F0B51E -:4004400097B00292060040220D0006A8002103930BF096FE0422002105A80BF091FE1C9B1868FEF795FB0190002D07D12C0006A84021FFF7CBFD200017B0F0BD019B0095AA -:400480009D4200D900931C98FEF78CFA041EEED1039A02991C98FEF793FA041EE7D1042205A91C98FEF78CFA041EE0D106AF39001C98FEF793FA041ED9D1009B9C4206D183 -:4004C00005AAD37836190133D3702D1BCCE7335DE25D534033550134EFE70000F0B585B00093002305000E00019202930393984262D0FEF705FA041E03D13C4D280005B08F -:40050000F0BD280002AA03A9FEF71AFC051EF4D12000FEF73DFB029B0600C3181A0008327F2AEAD801000A318842E6D802329142E3D800999142E0D30C000A3CE41A0A2CE6 -:40054000DBD90A9B0A9A9F1C1D700123033C5370FF21220038000BF013FE02AB1B783C191A000832B218A2701A1D302122710622E71D6170E1706271A3712570029A0399A8 -:4005800038000BF06BFD029B3200FF1805233B70013BFC18BB70FE707D70019920000BF05DFD0A9B009AA6199B189E42A6D000990A98FFF72BFDA0E7009B8B429DD35F1ACA -:4005C0000A2F9AD90A9B0A9A18709C1C0123033F5370FF213A002000E4190BF0D1FD2570601C320001990BF039FD87E780BFFFFFF8B5050008354768040028000E00F7F7DE -:400600008FFC874201D02848F8BD80236268DB009A42F8D800212800F7F774FE0028F2DD00212800F7F702FC0028ECD0002E1FD1200000211430F7F765FE0028E3DD002EB9 -:4006400014D0200000214430F7F75CFE0028DADD200000215030F7F755FE0028D3DD200000215C30F7F74EFE0028CCDD0020CBE725002C3500212800F7F744FE0028C2DD70 -:4006800000212800F7F7D2FB0028BCD00C3500212800F7F737FE0028B5DD00212800F7F7C5FB0028C4D1AEE780BFFFFF70B504001D0000290AD0060008363000F7F736FCB8 -:4006C000002818D13000F7F72BFC6060002D0AD1059B002B12D1079B002B18D1099B002B1ED1002070BD2000049A29002C30F7F71DFC0028ECD00F4BC018F3E72000069A73 -:4007000005993830F7F712FC0028F4D1E3E72000089A07992030F7F709FC0028EBD1DDE720000A9A14300999F7F700FC0028D8D0E1E7C04680BFFFFF0300F0B5050008335C -:400740008BB0002118000693F7F7DCFD2B002C330890002118000493F7F7D4FD2B0038330290002118000593F7F7CCFD2B0020330390002118000793F7F7C4FD2B0014333F -:4007800007000021180009930026F7F7BBFD029B0400B34207D0039BB34204D0B74202D00600731E9E41089B002B5AD0029B002B66D1039B5A1E9341DBB2002B60D1002F83 -:4007C00059D0002C05D100232643334347D0002702E001271C003E43089B002B16D1029B002B13D0039B002B10D0059A04990698F7F7A0FE002805D02B4BC0180BB0F0BDC5 -:40080000039CE0E70698F7F78BFB6860002F1DD0059B079A00930999049B069801F058F90028E9D1002E0CD02B005C3301930C3B0093079A0C3B0599049801F0CDFB002850 -:40084000DAD131002800FFF7D3FED7E7002CE9D0079B099A0599049801F018FAE0E71248CCE7029B002B01D11C00ADE7039B002B0CD11C00A7E7002CA5D03C000123A3E78F -:40088000029B002BF5D0039B002BB9D000239F4202D1631E9C41E3B21C000023089A9A4200D190E790E7C04680BFFFFFF7B51E000300083304000F001800002115000193D3 -:4008C000F7F720FD00281BD0200000212C30F7F719FD002814D0200000213830F7F712FD00280DD0200000212030F7F70BFD002806D0200000211430F7F704FD002808D188 -:40090000002D04D1002E02D1089B002B2BD01A4831E0002F29D1002D0DD1002E13D1089B002B18D1099B181E25D0210009981431F7F7B6F91FE0210028002C31F7F7B0F9CC -:400940000028EAD017E0210030003831F7F7A8F90028E4D00FE0210008982031F7F7A0F90028DFD007E0002FDCD001993800F7F797F90028CFD0FEBD80BFFFFFF8B5040098 -:400980000F000830002115001E00F7F7BBFC002801D11F48F8BD200000212C30F7F7B2FC0028F6D0200000213830F7F7ABFC0028EFD0200000212030F7F7A4FC0028E8D096 -:4009C000200000211430F7F79DFC0028E1D0002F06D0210038004431F7F762F900280CD1002D03D1002E0BD10020D3E7210028005031F7F755F90028F4D0054BC018C9E742 -:400A0000210030005C31F7F74BF90028F5D1EBE780BFFFFF70B504000E0015000021AC220BF0AEFB2300A834A4331E60256070BD0300A830A4331960026070474068704721 -:400A400070B500210400FFF7D3FD051E18D1260008363000F7F740FA7F2811D9143429002000F7F7E3F900280AD02000F7F734FA012805D931002000F7F7F8FB002800DB38 -:400A8000014D280070BDC04600BEFFFFF0B585B00400FFF7D5FF002802D0164805B0F0BD01212000FFF7A4FD0028F6D1250026002700230002900190200014332C353836B9 -:400AC0002037009332003B002900083001F0C4F90028E2D1220023005C3250340192443300943A003100280001F02CF90028D5D0D3E7C04600BEFFFF70B504000D00FFF7A2 -:400B00009FFF002814D12800FFF7C0FF00280FD12900200008310830F7F7A8FB002807D12900200014311430F7F7A0FB002800D0004870BD00BEFFFFF0B50C0087B000214D -:400B400005001600FFF754FD002830D103A8F7F72BF821006A6803A8F7F7E8F9041E19D12C000834210003A8F7F780FB00281BDA2A006F6803A968352300143200950800AB -:400B8000F7F7C0FF041E05D13A00310003A8F7F703FA040003A8F7F70FF8002C01D0054BE418200007B0F0BD04246442F2E7024CF7E7C04680BDFFFF80BFFFFFF0B5A7B0D1 -:400BC00002910121050007921C00FFF711FD002800D094E108A8F6F7E7FF0BA8F6F7E4FF0EA8F6F7E1FF11A8F6F7DEFF029B002B05D01AA8F6F7D8FF1DA8F6F7D5FF14A8A4 -:400C0000F6F7D2FF17A8F6F7CFFF20A8F6F7CCFF23A8F6F7C9FF21006A6808A8F7F786F9041E00D03CE12F000837390008A8F7F71DFB002800DB5BE108A920A8F7F730F832 -:400C4000041E00D02CE12B00443303930C330493029B002B00D181E02B00A0331B68002B00D1D9E02E008C36320031003000F7F761FC041E00D013E13A0031003000F7F7FA -:400C80000DFF041E00D00BE10C36320031003000F7F750FC041E00D002E13A0031003000F7F7FCFE041E00D0FAE02A0008A98C320800F7F73FFC041E00D0F1E008A93A009F -:400CC0000800F7F7EBFE041E00D0E9E0290001222C310BA8F7F71DFC041E00D0E0E02900012238310EA8F7F714FC041E00D0D7E0079B029A1C2111A8F8F7B4F9041E00D071 -:400D0000CEE011AA0BA91AA8F7F714FC041E00D0C6E01AA9039A0800F7F7A2FB041E00D0BEE0079B029A1C2111A8F8F79BF9041E00D0B5E011AA0EA91DA8F7F7FBFB041E40 -:400D400000D0ADE01DA9049A0800F7F789FB041E00D0A5E01DAB04931AAB03932B002C33059348330093039A059B08A914A8F7F7C9FE041E00D093E02E002B003836803399 -:400D80000093049A330008A917A8F7F7BBFE041E00D085E017AA14A908A8F7F785FB041E00D07DE02A0008A95C3214A8F7F7C2FB041E75D1059A14A908A8F7F76FFE041EB5 -:400DC0006ED1320008A914A8F7F7B4FB041E67D114AA17A908A8F7F743FB041E60D1029B002B4ED12B002A006833009314323B0008A923A8F7F786FE041E51D120A923A8C0 -:400E0000F7F734FA002800D077E06A682C9908A8F7F7C2F8040043E00C230593059B013B0593002B00D166E02B00983306936B68029A591E0698079BF8F714F9041E2FD1E1 -:400E40002E008C363A0006993000F8F78BF8041E26D101213000F7F755FA0028DED13A0006993000F8F724F9041E19D12B002A006833009314323B0031003000F7F742FED4 -:400E800010E72A0008A998320800F7F753FB041E06D108A93A000800F7F700FE041EA1D00BA8F6F789FE0EA8F6F786FE11A8F6F783FE029B002B05D01AA8F6F77DFE1DA8E6 -:400EC000F6F77AFE08A8F6F777FE14A8F6F774FE17A8F6F771FE23A8F6F76EFE20A8F6F76BFE002C01D0074BE418200027B0F0BD04246442D4E7044CD2E7044CD0E7044C2B -:400F0000F3E7C04600BDFFFF80BBFFFF80BCFFFF80BFFFFFF0B58FB00390079108920993012B08D10300A4331B68012B03D0434C20000FB0F0BD079B002BF8D0039BA83397 -:400F40001868C0B2FDF7DCFC04900028EFD0039B5B680593FDF71CFE169B47000233169ADB1906009A42E2D8059A9A42DFD3002118980BF005F9189B189A01330693002378 -:400F80000699137008983200079B9847002802D02B4BC418CCE7069B159A9D192B0014990498FDF729FD041EC2D1169A059B1799981A012302388019C71BED192B70E81848 -:400FC0000BAF0BF04BF83800FDF7A6FC220004993800FDF7C3FC041E17D1189A059D731CD318013D0493AD1B00973300069A29000498FFF724FA041E07D100972B00049A6F -:4010000031000698FFF71BFA04000BA8FDF78AFC002C00D08CE7099B002B06D1189A03981100FFF789FD040082E7189B089A009307990398FFF7C2FDF5E7C04680BFFFFF52 -:4010400080BBFFFFF0B587B006000F00049203930E9D012B04D10300A4331B68002B54D1002F52D00D9B002B4FD0002D4DD00C9A0C990B327368914247D8934245D30022D0 -:401080002A70039A5B1A033BA81C002A2CD104000232C3186A700593059B9C420FD10023601C23700C9A0D990AF0D8FF039B002B23D12A0029003000FFF73EFD0FE0642342 -:4010C0000293012221000498B8472378002B1ED1029B013B0293002B03D10F4BC01807B0F0BD0028EDD0F8E70122C418FF236A708442D4D003700130FAE700952B00049AB8 -:4011000039003000FFF75AFDE9E70448E7E70028E3D10134C0E7C04680BBFFFF80BFFFFFF0B50700A4373F6887B00C9C0D9D0E9E002F03D0012F08D0084804E0029601950C -:401140000094FFF77FFF07B0F0BD029400240496039501940094FFF7DDFEF4E700BFFFFFF0B5654C1D00A544069104000792012B09D10300A4331B68012B04D05F4C2000C7 -:401180005F4B9D44F0BD63681A000393FC23103A9B009A42F2D82300A8331868C0B2FDF7AFFB04900028E9D0FDF7F2FC471C7B000593039B06007A009342DFD31CAA002DDF -:4011C0001ED1FFAB983319682000FFF7B5FC041E0CD109A8FDF7A0FB2200049909A8FDF7BDFB041E16D009A8FDF79CFB80211CA8C900FEF70BFF40210CA8FEF707FFBEE7C2 -:40120000FFAB009298331B68079A06992000FFF7D5FCDCE759201CABDD19039B06AC5F1EBF1B09AB009300193B002A003100FFF706F9041ED7D1592209AB06A900935218CD -:40124000330039002800FFF7FAF8041ECBD109A8FDF768FBFFAAFFA90CAD90328C312B00126809680498FDF7C7FB041EBED1582206AB9B181A78592306A95B1899190300C7 -:40128000B34225D30598039B89191B1A0020CB180D009C4606000127AC451FD101238919087843401A4323D1039B01311CAA8A1A9A1AFFABA0331B689A421BD8FFAB9433E6 -:4012C0001B681A60FFAB9C3318680AF0C7FE8DE7585DCF5C013378400243D1E72B780135184343420343DBB2DB097B40F618D3E7044C7BE7044C79E78CFBFFFF80BFFFFFE5 -:401300007404000000BFFFFF00BCFFFFF0B54C4C1F00A544012B05D10300A4331B68002B00D08AE04668FC233400103C9B009C4200D982E004AC002F1CD1FFAB30332200B9 -:401340001968FFF7F9FB051E4CD1237801216278F71E4A401A43002394461D001A000291BA425AD30A2302AA9B185B19591C1A7863461DE0FFAB009430331B68FFF71EFC5E -:40138000051E2FD12378012FE0D1022261784A401A43010003000292F21E0392039A914229D30A2302AA9B185B19591C1A78029B13431A0007200023A8425B4113435DB2B8 -:4013C000002D36D1FFAB38331B680A1BB21A9A4231D8FFAB2C331B681A60FFAB343318680AF03CFE80212000C900FEF70FFE2800144B9D44F0BD6218927801315042024352 -:40140000D2B2D2097A401343DBB25A421A43D2B2D2097A40D2B2AD18C0E7A01880780132FF38411E8841034302985840C0B22D1896E7054DD6E7054DD4E7054DD7E7C0468E -:40144000ECFBFFFF1404000000BFFFFF00BCFFFF80BFFFFFF0B50400A434246887B00D9D0E9E0F9F002C03D0012C0AD00A4806E00C9C0397029601950094FFF747FF07B03E -:40148000F0BD0C9C0597029400240496039501940094FFF765FEF2E700BFFFFFF0B5A1B00A9326AB039018780A9B05910992012B08D1039BA4331B68012B03D05D4C200015 -:4014C00021B0F0BD059B002BF8D0039B5B680293002806D0FDF714FA0028EFD0FDF758FB2790039BA8331868C0B2FDF709FA071EE4D0FDF74DFB029A049043009A42DDD38A -:40150000023306009A4201D2961E361A029A002129980AF035FE320010A90998059B9847041E02D0444BC418C9E7039B0DAD083318000693F6F7D0FC049A029B10A99B1A52 -:401540000793299A023B9B1BD3185A1C089201220B901A70089832000AF080FD2800FDF7DBF9220039002800FDF7F8F9041E48D12800FDF717FA041E43D1089B08229F1914 -:4015800039002800FDF71CFA041E3AD1279A28992800FDF715FA041E33D1320010A92800FDF70EFA041E2CD139002800FDF716FA041E26D107230B98079901381840434291 -:4015C0005841299B0139091A009518183A00049BFEF735FF041E14D10698F6F77DFCFF22029B4021DB000133181A0241299B10A81B781340299A1370BC23049ABB54FEF793 -:4016000005FD0DA8FDF78EF9002C00D057E70A9B002B06D1299A03981100FFF78DFA04004DE7299B099A009305990398FFF7C6FAF5E7C04680BFFFFF80BBFFFFF0B585B058 -:401640001E000AAB0500029103921878012E04D12B00A4331B68002B50D10D9B0C9A00936B680B99FEF73AFF041E07D1002E08D10D9A28001100FFF75FFA0400200005B076 -:40168000F0BD6968012009F02BFE061E08D06968012009F025FE071E05D130000AF0A4F910246442EAE700960D9B039A02992800FFF784FA041E11D13A0031002800FFF753 -:4016C0003BFA041E0AD1010003006A689A420CD1002911D131000D980AF0C0FC30000AF083F938000AF080F9C8E70D9DF85CED5C013368400143E9E7014CEFE7014CBDE747 -:4017000000BDFFFF80BFFFFFF0B50500A43585B02D680AAC24780C9E0D9F002D03D0012D0AD0094806E00B9D0397029601950094FFF784FF05B0F0BD0B9D0397029601952E -:401740000094FFF7ABFEF5E700BFFFFFF0B56F4C0500A544FFA88C3000780390FFA8983000780490012B09D12800A4300068012804D0674C2000674B9D44F0BD6F68FC20F9 -:401780003C00103C80008442F3D81CA8002B00D0AAE0FFABA033020019682800FFF7CCF9041EE7D17E1E1CAB9B5DBC2B00D0AAE0039B002B09D01800FDF7A2F80028D8D0D6 -:4017C000FDF7E6F9FFAB903318600498FDF798F8041ECED0FDF7DCF908220021039007A80AF0CEFC28000830F6F776FB431E049304991CADFB002A78CB1A08331A41B8D17A -:401800000B005B0703D16125370004ABED18039B02339F42ADD309AE3000FDF77DF8210000223000FDF79AF8041E59D1039B0096D943C9196B1805936A18039B2800FEF7A3 -:40184000FEFD041E4CD1FF22049B6021F800C01A024104AB5B181B78134004AA52181370059B5A1E954247D32B78012B49D1059B01355E1BFFAB9C331B68013304D0FFAB46 -:401880009C331B689E423CD109A8FDF78BF8041E26D1082207A909A8FDF792F8041E1FD1FFAB90331A68FFAB9433196809A8FDF787F8041E14D13200290009A8FDF780F809 -:4018C000041E0DD10CA909A8FDF788F8041E07D1039A0CA905980AF09BFB041E00D00E4C09A8FDF71FF845E7FFAB0090A0331B682800FFF763F953E72B78002BB4D1013594 -:40190000B0E7064CECE7054C34E7C0468CFBFFFF80BFFFFF7404000080BCFFFF00BFFFFF70B5050086B0A8350AAC24782E682500002E00D0F5B20D9E0395059601260C9DAB -:40194000764202950B9D049601950094FFF7FEFE06B070BDF0B587B003930CAB1C78039B0290049105924768012B04D10300A4331B68002B45D13900012009F0B1FC061E4C -:4019800041D03900012009F0ABFC051E3ED000903B0020000E9A0D99FEF7A0FD041E0FD1039B002B1FD132000F990298FFF7C4F8041E05D1020003009F421CD1002A28D151 -:4019C00030003900FEF722FB30000AF00DF8002D06D028003900FEF719FB28000AF004F8200007B0F0BD00960F9B059A04990298FFF7E4F8DCE7F15CE85C013341400A43F0 -:401A0000DAE7054CECE710246442E9E710246442D6E7024CD4E7C04680BFFFFF80BCFFFFF0B50500A43585B02D680AAC24780C9E0D9F002D03D0012D0AD0094806E00B9D1E -:401A40000397029601950094FFF784FF05B0F0BD0B9D0397029601950094FFF761FFF5E700BFFFFF10B504008C30F6F7A5F820009830F6F7A1F820006830F6F79DF8200065 -:401A80002030F6F799F820003830F6F795F820002C30F6F791F820001430F6F78DF820000830F6F789F820008030F6F785F820007430F6F781F820005C30F6F77DF8200036 -:401AC0005030F6F779F820004430F6F775F810BDF0B599B006000D0014006B4936220AA81F000AF0BBFA002F04D104246442200019B0F0BD1E9B002BF7D0BB68002BF4D186 -:401B00001E9B99680029F0D13000F6F7FBFB0028EBDD01212000F6F7F5FB0028E5DD31002000F6F7A3FB0028DFDA01212800F6F7E9FB0028D9DD31002800F6F797FB00283F -:401B4000D3DA07A8F6F730F804A8F6F72DF821002A0004A8F6F7EEFC041E0FD104A901220800F6F7D6FC041E08D104A8F6F794F983B20393002B08D10424644207A8F6F775 -:401B80001BF804A8F6F718F8B1E781B204A8F6F77DFA041EF2D1B3681D6807231D40013D6A426A4195B20AAB595D07A8F6F725F9320007A93800F7F7D5F9041EDED10121B8 -:401BC0003800F6F79FFB002804D00135ADB2362DE9D1D1E71E9B07A9009304AA33000800F6F790FF041EC9D101230293012107A8F6F788FB002806D1012107A8F6F782FB6F -:401C00000028E2D0B8E707A901220800F6F770FC041EB3D1320007A93800F7F7A3F9041EACD101213800F6F76DFB01280DD131003800F6F71BFB431C07D121003B00320027 -:401C40001E98F6F785FD040098E707A901220800F6F75FFC041E91D107AA11001000F6F769FC041E8AD107A932000800F6F716FF041E00D082E7029B01339BB20293029ADE -:401C8000039B9342B2D2B7E76B690210F0B589B006000D0001921C1E04D104267642300009B0F0BD00211800F6F72CFB071EF4D101213000F6F726FB0028EEDD01212800CA -:401CC000F6F720FB0028E8DD39000198F6F71AFB0028E2D002A8F5F767FF05A8F5F764FF3100012202A8F6F714FC061E22D10122290005A8F6F70DFC061E1BD105AA02A9DE -:401D00002000F7F72FF9061E14D102A905AA0800F6F710FC061E0DD102AA010023001000F6F716FD061E05D102AA01992000F7F7BFF9060002A8F5F73FFF05A8F5F73CFF73 -:401D4000ADE70000F0B587B0040068461F000D001600F5F729FF03A8F5F726FF002F0FD10C9B002B2BD10D9B002B46D100246846F5F722FF03A8F5F71FFF200007B0F0BD50 -:401D8000002C63D0012221006846F6F7C2FB002853D13200390003A8F6F786FB00284CD103A96A460800F6F779FE002845D1010003A8F6F7A7FA0028D2D0254CD7E7002DAD -:401DC00044D0012229006846F6F7A3FB002834D132000C9903A8F6F767FB00282DD103A96A460800F6F75AFE002826D1010003A8F6F788FA0028E0D1B5E7002C26D0002D7F -:401E000024D02A000D996846F6F794FB002814D1012269466846F6F77CFB00280DD1220069466846F6F73AFE002806D101006846F6F768FA0028C0D198E7054B9842BCD02E -:401E4000044B984202D0024BC41890E7014C8EE700BEFFFF80BFFFFFF0B589B0060002A80F0001921D00F5F79FFE05A8F5F79CFE002F48D0019B002B45D0002E11D1002DA3 -:401E80004BD1002402A8F5F797FE05A8F5F794FE002C03D04F4B9C4200D0E418200009B0F0BD019A390002A8F6F744FB041EE9D101213000F6F726FA002822DD310002A8DC -:401EC000F6F7D4F900281CD1002DDAD00E9B002B1DD001212800F6F715FA002811DD01210E98F6F70FFA00280BDD31002800F6F7BDF9002805DA31000E98F6F7B7F90028B2 -:401F000005DB344CBEE7002E01D0002DDED1002FB7D0019B002BB4D0B1E70E9B002BB0D001213800F6F7EEF90028EADD01210198F6F7E8F90028E4DD0E9A290002A8F6F7DD -:401F4000F9FA041E9ED102A901220800F6F7E1FA041E00D096E70122390005A8F6F7D9FA041E00D08EE702A905AA0800F6F796FD041E00D086E7010002A8F6F7C3F90028E3 -:401F8000BFD10E9A290002A8F6F7D4FA041E00D078E702A901220800F6F7BBFA041E00D070E70122019905A8F6F7B3FA041E00D068E702A905AA0800F6F770FD041E00D056 -:401FC00060E7010002A8F6F79DF9041E00D159E797E7C04600BEFFFFF0B587B0019003A81F000D001600F5F7DFFD002F0CD10C9B002B1DD10D9B1C1E14D0019A29000D98DC -:40200000F7F756F804000DE00122019903A8F6F780FA041E06D103AA31003800F6F73EFD041EE4D003A8F5F7C7FD200007B0F0BD0122290003A8F6F76CFA041EF2D103AADC -:4020400031000C98F6F72AFD041ED3D0EAE710B56C2200210AF094F810BD10B5002802D06C21FDF7D3FF10BD10B56C2209F0F6FF10BD0000002303604360994212D1114BEA -:402080008360114BC360114B0361114B4361114B8361114BC361114B0362114B43628166002070470F4B83600F4BC3600F4B03610F4B43610F4B83610F4BC3610F4B0362CD -:4020C0000F4BEBE767E6096A85AE67BB72F36E3C3AF54FA57F520E518C68059BABD9831F19CDE05BD89E05C107D57C3617DD703039590EF7310BC0FF11155868A78FF964F9 -:40210000A44FFABE0023F0B5D3B00990099AD2189268009200980AAA98500433202BF5D1002012AB0A784C78120624042243CC7822438C78043124022243C2500430402898 -:40214000F0D11C00119A0D9F07920E9A0692109A05920F9A04920A9A03920B9A02920C9A0192CB4A0092062206980699D0410532D141484006990E32D141009A41401268B3 -:402180002068029E1518059A049849195040069A039D1040059A5040079A09188918CA19079202220398D5410B32D0416840039D0932D541039A6840029D1543019A154017 -:4021C000039A16403543009A4019401852686168049D5118059A079E8918069A5540079A1540049A554006224919079DD6410532D5417540079E0E32D641019A75409446EC -:40220000060002224D190100D6410B32D141714006000932D6417140039E029A039F0643074016403E43009A89194919AC449268A56867465619049A069DB618079A5540B1 -:4022400062461540069A5540062275196646D7410532D6417E4067460E32D741029A7E40AD19AA1804920F0002220E00D7410B32D6417E400F000932D7417E400700039AFA -:402280000F4317400A0002401743F7197A190292009AE568D268079F5519069A049EAD1862465740049A1740079A57400622ED19049FD7410532D6417E40049F0E32D74100 -:4022C000039A7E40AD19AA1806920222029F029ED7410B32D6417E40029F0932D7417E40029F029A0F430A4007401743F71966467A190392009A25691269069F5519079A6D -:40230000AD18049A5640069A1640624656400622AD19069ED7410532D6417E40069F0E32D7417E40AD19421907920222039E0398D6410B32D0417040039E0932D641039A40 -:402340007040029E029F164317400E40009A3E4386195269606977191518069A049865445040079A079E1040049A504006222818079DD6410532D5417540079E0E32D64119 -:40238000754040190A1805923D0002223900D5410B32D14169403D000932D5416940039D029A039E3D4315403E4035434D192A180192009A9269A169059D5018049A0699AE -:4023C0008018079A019E5140059A3E401140069A5140062241180598D5410532D0416840059D0E32D541029A68400918521804920222019D0198D5410B32D0416840019D4F -:402400000932D5416840019D039A3D431540354345196A180292009AE169D269049D5018069A07998018059A20345140049A1140079A5140062241180498D5410532D04187 -:402440006840049D0E32D541039A68400918521806920222029D0298D5410B32D0416840029D0932D541029A6840019D019E154316403D40354345196A180392009A203277 -:4024800000920099034A8A4200D06CE604E0C046A4690210E46902101122996B9C6BD1410232D4419A6B6140940A4C405A6A19685E6850182418072230003100D0410B325E -:4024C000D1414140F008414062180892062206990698D1410532D041484006990E32D141059A48400499039C5140069A029D1140059A5140009A4018126803998018089A8E -:402500001A648018079A1018C21907920222D4410B32D1416140039C0932D441039A6140029C1443019A1440039A154011222C430C19D96B2718D86BD1410232D041DA6BF3 -:402540004140900A9A6A9C68B618072248409968D4410B32D1419A686140049DD408069A614080195540079A4018049C009915406C404D68059AAC46624411180622079EB0 -:4025800065180799D6410532D1417140079E0E32D641019A7140944649198C4462463C00059202223E003D00D4410B32D6410932D54166406E40039D029A039C3D433C409A -:4025C0001540254375196A1801921122089C0899D4410232D141089A4C40910A61409A68DC6ADD68141907220919DC68D5410B32D441DA686C40D5086C400919009C049ABA -:40260000A4685864A44662445618069D079A059C5540059A99641540069A554006227519059ED4410532D6416640059C0E32D441029A66407619B21804920222019C019D4C -:40264000D4410B32D5416540019C0932D4416540019C039A3C431440019A3A4014432C19A2190292050011220400D5410232D441800A6C40DA684440186B1D6910180722BD -:4026800024181869D5410B32D0411A696840D508684024180098069AC068079E844662441519059A04985640049ADC641640079A56400622AE19049DD0410532D5414540BB -:4026C00004980E32D041039A4540AD19AA18069202220298029ED0410B32D641464002980932D041029A46400198104338408446019A029802406046104330184219039284 -:402700000D0011220800D5410232D041890A68401A694140586B5D691018072209185869D5410B32D0415A696840D5086840049A059D09185540069A06981540059A196501 -:402740005540009A12698E18079AB6180622AE19069DD5410532D0416840069D0E32D5414540AD197A1907920222039F039ED7410B32D6417E40039F0932D741039A7E40B1 -:40278000029F1743019A02981740039A10400743F7197F19112225002000D5410232D041A40A68409A6B444058699D691018072224189869D5410B32D0419A696840D508C0 -:4027C00068402418069A0498079D5040079A5C651040049A5040009A5269A618059AB618062286190798D5410532D0416840079D0E32D541019A6840944680198444624699 -:402800003E00059202223D00D6410B32D54175403E000932D6417540039E029A3E431640039A3A401643AD192A180192080011220E00D0410232D641890A4640DA6B4E404E -:402840009969D869511807227618D969D0410B32D141DA694140D008009A414092697618B118049A06988918079A059D5040059A9E651040069A019E5040062208180599F3 -:40288000D5410532D1416940059D0E32D541029A694009185218049202220198019DD0410B32D541454001980932D041039A454001983E43164038400643AE197218029251 -:4028C000250011222000D5410232D0416840DD69089AAC46196AA40A44406244A4180D0007220800D5410B32D041079E059A68405640049AC9081640079A48405640009A2A -:402900002418D2690498A118069ADC658918062276180499D0410532D141414004980E32D041039A414089195218069202220298029ED0410B32D641464002980932D0413D -:40294000029A46400198019D1043154038402843301842180392009A20332032009242AA9A4200D098E5079B0D971193069B0E93059B1093049B0F93039B0A93029B0B9330 -:40298000019B0C930023099AD11888680AAA8446D2580433009262448A60202BF3D1002053B0F0BDF7B53F23150002680400134052190E000260954202D94268013242606D -:4029C000002B28D04022D21A0192AA4217D827002837F818310009F041FB39002000FFF791FB071E15D1019BF618EB1A0193019D019B591B71183F2D0FD80E0000230027F1 -:402A0000BD4206D020002830C0182A00310009F025FB3800FEBD0195E9E72000FFF772FB071EF6D1403DE3E7002310B59A4202D0FFF7B8FF0300180010BD70B53F23040038 -:402A40000268260013408022581CE31828330D001A702836382800D981E00021483A121A301809F08DFB22686368510FDB000B432100180E60310870180C4870CB70180A79 -:402A80002300D20088706433110E1970110C5970110A9970DA7031002000FFF733FB00285CD1A3681B0E2B70A3681B0C6B70A3681B0AAB70237AEB70E3681B0E2B71E36852 -:402AC0001B0C6B71E3681B0AAB71237BEB7123691B0E2B7223691B0C6B7223691B0AAB72237CEB7263691B0E2B7363691B0C6B7363691B0AAB73237DEB73A3691B0E2B745C -:402B0000A3691B0C6B74A3691B0AAB74237EEB74E3691B0E2B75E3691B0C6B75E3691B0AAB75237FEB75236A1B0E2B76236A1B0C6B76236A1B0AAB762023E3181B78EB7647 -:402B4000A36E002B0AD1636A1B0E2B77636A1B0C6B77636A1B0AAB77636AEB7770BD40220021121A301809F00BFB31002000FFF7C9FA0028F2D101003822300071E7F0B5ED -:402B80001C009DB0060001A80F001500FFF75FFA210001A8FFF76EFA041E0BD13A00310001A8FFF741FF041E04D1290001A8FFF744FF040001A8FFF750FA20001DB0F0BD91 -:402BC00010B5D822002109F0DBFA10BD10B5002802D0D821FDF71AFA10BD10B5D82209F03DFA10BD00220023026043608260C360002923D1214A224B02614361214A224BEE -:402C00008261C361214A224B02624362214A224B8262C362214A224B02634363214A224B8263C363214A224B02644364214A224B8264C364D0300160002070471F4A204B2F -:402C4000026143611F4A204B8261C3611F4A204B026243621F4A204B8262C3621F4A204B026343631F4A204B8263C3631F4A204B026443641F4A204BDAE7C04608C9BCF3FE -:402C800067E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5F3AF54FA5D182E6AD7F520E511F6C3E2B8C68059B6BBD41FBABD9831F79217E1319CDE05BD89E05C195 -:402CC0005D9DBBCB07D57C362A299A6217DD70305A01599139590EF7D8EC2F15310BC0FF6726336711155868874AB48EA78FF9640D2E0CDBA44FFABE1D48B547F0B5604CD2 -:402D0000A5441190002062ABC4180A784B7812061B0413438A78CE79120213430A79CD78120616434A792B43120432438E790830360232432260636008318028E3D162ABB3 -:402D40009C469868596F009018001A6F803006904F03D00C07435503C80C0543540FC800204308904C0FD00004430898920968408D062A437C40890954404840DE68029485 -:402D80000390986CD96C30CB00196941029C039D00196941009AF70752081743009A3406D50772081543009A08900991120A1443009A7C4012061100320A11430A000898B2 -:402DC0000999009F6A40FF0975062F43F6097C40724005920494049C059D00196941069A10605160E2AA9A42ABD1119B5C691B6912931394119BDC699B6914931594119B7B -:402E00005C6A1B6A16931794119BDC6A9B6A18931994119B5C6B1B6B1A931B94119BDC6B9B6B1C931D94119B5C6C1B6C1E931F94119BDC6C9B6C209321942099219A114B64 -:402E40000E910F921E991F9A0C910D921C991D9A0A910B921A991B9A089109921899199A069107921699179A049105921499159A029103921299139A0091019204E0C0461C -:402E8000F4FBFFFFA86A02101E685F68099A9104089A940B9004099A0C43920B1043099A9103089A920C1143089A61409503099A920C2A4342400898089D440A0998ED05C9 -:402EC000C0052043424023926246099C0D98640A2C436140229111685268761857412299239A761857410C9A0A9951400B9A424008980140099802400C9848400D9924900E -:402F0000514025912499259A761857410E990F9A761857410699079A89197A410E910F92019A1101009A120F1143009A009D1001019AAD07120F1043009A9408019A920724 -:402F40002243019C4240A40800982C436140C4090198009D40062043019C6D06E4092C4361404240269127920099029A03981143019A029C02430498019D014005980240D2 -:402F800000980440039821432840024328912992289C299D26982799001969416246801979419468D568069007919868D968001969410C9C0D9D001969410A9A089C5440F3 -:402FC000099A0B9D6A400E9D2C400F9D2A400A9D65400B9C2A9554402B942A9C2B9D001969410F9A94040E9A960B95040F9A2643920B15430F9A94030E9A920C14430E9AAA -:40300000744097030F9A920C3A436A400E9D0E9F6E0A0F9DFF05ED0535430F9E6A40760A3E4374402C942D922C9E2D9F36184F410499059A89197A410C910D92079A110163 -:40304000069A120F1143069A1001079A120F1043069A9408079A92072243079C069D4240AD070698A4082C436140C4090798069D40062043079C6D06E4092C436140424077 -:403080002E912F920099069A07981143019A009C02430298079D01400398024006980440019821432840024330913192309C319D2E982F9900196941624680197941146919 -:4030C00055690490059118695969001969410A9C0B9D001969410E9A089C0F9D5440099A6A400C9D2C400D9D2A40089D65403295099C54403394329C339D001969410D9AB6 -:4031000094040C9A960B95040D9A2643920B15430D9A94030C9A920C14430C9A744097030D9A920C3A436A400C9D0C9F6E0A0D9DFF05ED0535430D9E6A40760A3E437440EB -:4031400034943592349E359F36184F410299039A89197A410A910B92059A049D1101049AAD07120F1143049A1001059A120F1043049A9408059A92072243059C4240A408EE -:4031800004982C436140C4090598049D40062043059C6D06E4092C436140424036913792049A069905981143079A069C02430098059D01400198024004980440079821439D -:4031C0002840024338913992389C399D36983799001969416246801979419469D569029003919869D96900196941089C099D001969410C9A0E9C0D9D54400F9A6A400A9D8C -:403200002C400B9D2A400E9D65400F9C3A9554403B943A9C3B9D001969410B9A94040A9A960B95040B9A2643920B15430B9A94030A9A920C14430A9A744097030B9A920C4A -:403240003A436A400A9D0A9F6E0A0B9DFF05ED0535430B9E6A40760A3E4374403C943D923C9E3D9F36184F410099019A89197A4108910992039A029D1101029AAD07120F8A -:403280001143029A1001039A120F1043029A9408039A92072243039C4240A40802982C436140C4090398029D40062043039C6D06E4092C43614042403E913F920499029A98 -:4032C00003981143059A0243069801400798049C02400298039D0440059821432840024340914192409C419D3E983F9900196941624680197941146A556A00900191186AC4 -:40330000596A001969410E9C0F9D001969410A9A0C9C0B9D54400D9A6A40089D2C40099D2A400C9D65400D9C429554404394429C439D00196941099A9404089A960B950423 -:40334000099A2643920B1543099A9403089A920C1443089A74409703099A920C3A436A40089D6E0A099D089FED053543099EFF05760A3E4374406A4044944592449E459FD0 -:4033800036184F410699079A89197A410E910F92019A009D1101009AAD07120F1143009A1001019A120F1043009A9408019A92072243019C4240A40800982C436140C4097C -:4033C0000198009D40062043019C6D06E4092C4361404240469147920299009A01981143039A029C02430498019D0140059802400098044003982143284002434891499277 -:40340000489C499D4698479900196941624680197941946AD56A06900791986AD96A001969410C9C0D9D00196941089A0A9C099D54400B9A6A400E9D2C400F9D2A400A9D19 -:4034400065400B9C4A9554404B944A9C4B9D001969410F9A94040E9A960B95040F9A2643920B15430F9A94030E9A920C14430E9A744097030F9A920C3A436A400E9D0E9F5A -:403480006E0A0F9DFF05ED0535430F9E6A40760A3E4374404C944D924C9E4D9F36184F410499059A89197A410C910D92079A069D1101069AAD07120F1143069A1001079AB5 -:4034C000120F1043069A9408079A92072243079C4240A40806982C436140C4090798069D40062043079C6D06E4092C43614042404E914F920099069A07981143019A009C8E -:4035000002430298079D014003980240069804400198214328400243509151924E984F99509C519D0019694162468019794104900591186B596B146B556B001969410A9C1B -:403540000B9D001969410E9A089C0F9D5440099A6A400C9D2C400D9D2A40089D6540099C529554405394529C539D001969410D9A94040C9A960B95040D9A2643920B1543C8 -:403580000D9A94030C9A920C14430C9A744097030D9A920C3A436A400C9D0C9F6E0A0D9DFF05ED0535430D9E6A40760A3E43744054945592549E559F36184F410299039A19 -:4035C00089197A410A910B92059A1101049A120F1143049A1001059A049D120F1043049AAD079408059A92072243059C4240A40804982C436140C4090598049D4006204355 -:40360000059C6D06E4092C4361404240569157920699049A05981143079A069C02430098059D01400198024004980440079821432840024358915992589C599D56985799EF -:4036400000196941624680197941946BD56B02900391986BD96B00196941089C099D001969410C9A0E9C403354400F9A0D9D6A400A9D2C400B9D2A400E9D65400F9C5A95AD -:4036800054405B945A9C5B9D001969410B9A94040A9A960B95040B9A2643920B15430B9A94030A9A920C14430A9A744097030B9A920C3A436A400A9D0A9F6E0A0B9DFF0513 -:4036C000ED0535430B9E6A40760A3E4374405C945D925C9E5D9F36184F410099019A89197A4108910992039A029D1101029AAD07120F1143029A1001039A120F1043029A73 -:403700009408039A92072243039C4240A40802982C436140C4090398029D40062043039C6D06E4092C43614042405E915F920499029A03981143059A049C02430698039DD0 -:40374000014007980240029804400598214328400243609161925E985F99609C619D001969414022801979419444FFAA0C3200900191624501D0FFF787FB009B019C1298A4 -:403780001399209E219FC0186141119B18615961029B039C14981599C0186141119B9861D961049B059C16981799C0186141119B18625962069B079C18981999C01861417E -:4037C000119B9862D962089B099C1A981B99C0186141119B186359630A9B0B9C1C981D99C0186141119B9863D9630C9B0D9C1E981F99C0186141119B186459640E9B0F9C59 -:403800000020F6186741119B9E64DF64014B9D44F0BDC0460C040000F7B504007F2023680E0003400021100015009C462268636812184B4122606360994209D1954207D9C2 -:40384000A068E1680122002312184B41A260E3606346002B2BD0802362469B1A0193AB4219D827005037B8183100019A08F0F6FB39002000FFF742FA071E16D1019BF61801 -:40388000EB1A0193019D019B591B71187F2D10D800230E009C460027BD4206D02000503060442A00310008F0D9FB3800FEBD0195E8E72000FFF722FA071EF6D1803DE2E72E -:4038C000002310B59A4202D0FFF7A6FF0300180010BDF7B57F2304000268260013408022581CE31850330D001A705036702800D933E10021103A121A301808F041FCA26826 -:40390000E06863682168570FC0003843D2005F0F3A43DB004F0F3B43070EBC46270001926246C0373A70020C7A70F870020A2000BA70019AC430170E0770170C4770170AE0 -:403940006A4612798770C2702200180EC8321070180C5070D370180A2300C9009070CC330A0E1A700A0C5A700A0AD9709A7031002000FFF7C3F9002800D0EDE063691B0E47 -:403980002B7063691B0C6B7063691B0AAB70237DEB7023691B0E2B7123691B0C6B7123691B0AAB71237CEB71E3691B0E2B72E3691B0C6B72E3691B0AAB72237FEB72A369F4 -:4039C0001B0E2B73A3691B0C6B73A3691B0AAB73237EEB73636A1B0E2B74636A1B0C6B74636A1B0AAB742423E3181B78EB74236A1B0E2B75236A1B0C6B75236A1B0AAB7538 -:403A00002023E3181B78EB75E36A1B0E2B76E36A1B0C6B76E36A1B0AAB762C23E3181B78EB76A36A1B0E2B77A36A1B0C6B77A36A1B0AAB772823E3181B78EB77626B6B1C47 -:403A4000120EDA77626BAB1C120CDA77626BEB1C120ADA773422A21812782B1DDA77226B6B1D120EDA77226BAB1D120CDA77226BEB1D120ADA773022A21812780133DA77F7 -:403A8000E36B1A0E2B0028331A70E36B1A0C2B0029331A70E36B1A0A2B002A331A703C22A21812785A70A36B1A0E2B002C331A70A36B1A0C2B002D331A70A36B1A0A2B001B -:403AC0002E331A703822A21812785A702300D0331B68002B40D12A00636C30321B0E1370636C1B0C5370636C1B0A937044222B00A218127833331A702A00236C34321B0ECA -:403B00001370236C1B0C5370236C1B0A937040222B00A218127837331A702A00E36C38321B0E1370E36C1B0C5370E36C1B0A93704C222B00A21812783B331A702A00A36CC0 -:403B40003C321B0E1370A36C3F351B0C5370A36C1B0A9370A36C2B70FEBD121A0021301808F00EFB31002000FFF7C8F80028F3D1010070223000C0E6F0B51C00B7B0060002 -:403B800068460F001500FFF71BF821006846FFF729F8041E0BD13A0031006846FFF790FE041E04D129006846FFF793FE04006846FFF70CF8200037B0F0BD000070B5064C7D -:403BC000064D200025666030ECF7EEFB200025611030ECF7E9FB70BD58630008E4320210F8B5194C01262000EFF70EFA174D18492A00200002F094FF164C20001030EFF723 -:403C00001DFA2000144F102227610021383008F0B7FA2300200048331E70104B60302361EFF70CFA2000276610220021883008F0A7FA230098331E70084B2A002366084933 -:403C4000002002F06DFFF8BD38630008C0000008C52F001058630008D0320210E4320210BD3B01100120002170470000030010B538331B78002B04D0406803685B6B984724 -:403C800010BD0148FCE7C0465FF0FFFF03003833197800220023002901D08269C369100019007047030010B53833197800220023002905D040680368DB6A984702000B0038 -:403CC0001000190010BD010070B538310D78040000210020002D03D060680168096B884770BD70B50600383633780400002B01D1002070BD0121343002F069FD0028F7D174 -:403D0000E06A002801D003F061F80025206BE562A84201D003F05AF86068256303683570DB689847E5E7000010B50400034B08330360FFF7D6FF200010BDC046286D021095 -:403D400010B50400FFF7F0FF200003F03BF8200010BD0000F0B51F0003008DB0069138331B7804001600002B00D113E145682B6828005B6A984702000B00300039000CF041 -:403D80002DFA1A436DD0069B0793129D139B1D4300D1A6E0226A636ABB4204D800D0A3E0B24200D8A0E0921BBB411D00139B06929D4204D806D11300129A934202D9129B68 -:403DC000139D06932269636930003900049205930CF004FA08920993089B099A134309D1059BAB4206D800D0BCE0049B069A934200D8B7E0049A059B08980999121A8B4114 -:403E000002920393039B9D4204D306D1069B029A934202D2069B03950293636832000898099906933B00121A8B410A920B93069B06981968049A059B009201930A9A0B9BC6 -:403E40004D69216BA847226B089B9446634405001900029A079808F001F9002D00D16FE03FE02B6828005B6A984702000B00129813990CF0B3F91A4300D084E7129A139B4D -:403E800092197B41049205932B6828009B6B9847059B8B4200D976E703D1049B834200D971E7226A636A0599994203D80DD1049991420AD9A068E16812184B419F4204D81F -:403EC00000D060E7964200D85DE71299139A606803680091019232005C6906993B00A047050028000DB0F0BDA068E16812184B4104900591BB4204D800D060E7B24200D8CC -:403F00005DE7049A059B300039000CF067F904980599801A99410290039103991398814204D807D102991298814203D91298139902900391E16A07988918029A08F08EF8A3 -:403F400002980399029A079B944663440793029A039BB6185F41129A139B121A8B411292139312E7049A059B069829000CF036F9049B434302930023606803930299039AD2 -:403F800003680091019232005D6907993B00A847050062E7004DA4E75FF0FFFF0A4B00220833036000238260C360026143610262436202000023283241601370C3620363C2 -:403FC000436313747047C046286D02108269C36902624362002328300370704770B501210400343002F0DAFB002501282BD1606803689B689847051E25D1606803685B6A85 -:40400000984720616161606803689B6A9847A060E160606803689B6B9847E36AA061E161002B03D1A06802F0B9FEE062236B002B03D1206902F0B2FE20632000FFF7C6FF56 -:40404000012338342370280070BD0000030037B538331B780400002B17D00300002528331B78AB420FD0A168E2684068036800910192E16A9D69226A636AA847051E02D1CA -:404080002000FFF7A3FF28003EBD014DFBE7C0465FF0FFFF030010B538331B780400002B08D0FFF7D3FF002803D1606803681B69984710BD0048FCE75FF0FFFF73B51D00F1 -:4040C000030038331B7806001400002B1DD0436A026A9D420ED801D194420BD806980799001969418B4205D801D1824202D83000FFF76CFF0699079A7068036800910192D1 -:404100002200D9692B00884776BD0148FCE7C0465FF0FFFF73B51D00030038331B7806001400002B1DD0436A026A9D420ED801D194420BD806980799001969418B4205D8E3 -:4041400001D1824202D83000FFF740FF0699079A70680368009101922200196A2B00884776BD0148FCE7C0465FF0FFFFF0B58DB006920793030038331B7804000E00002B20 -:4041800000D1D1E08568C3682A00069807990CF025F84543236AAB4202D1636A002B08D02000FFF753FF002800D0B4E000232562636209961298139B184300D1ABE0A66820 -:4041C000E7680698079932003B000CF007F8002370430B930A900A9A0B9B0A980B9922626362069A079B121A8B4104920593049B059A13436DD00498059932003B00121AD7 -:404200008B4102920393039B139A934204D807D1029B129A934203D9129A139B02920393039B9F4205D800D077E0029B9E4200D873E0230028331B78002B61D0049AE36AB3 -:4042400009999818029A07F009FFE76AA668E568029A039B049805998018594132002B000BF0BCFF1A435AD1226A636A606804920593039B0168AB4203D804D1029BB342DF -:4042800001D9029E039D009601958D69049A059B3900A84700283ED1606803681B699847002838D12000FFF791FE02980399029A099B944663440993069A079B12184B412E -:4042C00006920793129A139B121A8B411292139370E7139B9F420ED802D1129B9E420AD8129813993B0032000BF078FF002370430393029094E7129A139B0292039398E731 -:404300006068E16A0368009601975D690A9A0B9BA847002892D00DB0F0BD099F96E72300012228331A70C0E70048F4E75FF0FFFF044B10B51868002803D00121494203F048 -:4043400015FF10BDF07000080368D0B504009B6B984723680600DB6A20000F0098470B000200390030000BF039FF0123002901D1984200D900235842D0BD0000F0B58BB092 -:40438000060008A80F0000920193EEF721FC08A8EEF756FC0690002806D0002508A8EEF718FC28000BB0F0BD804D08A82900EEF715FC01225242D317040028000699801897 -:4043C00059412200069B0BF009FF01220023801859410300634308A80793EEF703FC040008A8EEF703FC069B22001D00040012196B4102920393330008A83B4369D0BD42F8 -:4044000006D1079BB34203D908A8EEF73FFCC4E73100EEF7E3FB002304000200390030000BF0DCFE4443A642EED1002FECD1009B019A13431FD15E4C2378BFF35B8F5D4D3B -:40444000DB0714D4200002F077FB00280FD0029A039B921BBB4131002800EEF7A3FB200002F081FB544A5549280002F059FB08A8EEF70CFC92E7009C019DA4197D41039B87 -:404480009D42C1D802D1029B9C42BDD8611E08A8EEF7A4FB069001204042C117002300196941069A0BF09AFE069B013043439C42AAD1002DA8D1424C2378BFF35B8F414D1A -:4044C000DB07D4D4200002F037FB0028CFD0009AC1E7009B019A069C134304D101220023012400920193009D019E029A039B521BB341049205930499EEF770FB0023050037 -:404500000200049805990BF069FE6843049B06000027834202D1059BBB421ED0002C00D172E7029A039B029C039D921BBB4192185B41A41A9D4108A8210000920193EEF70E -:404540004DFB002302900200290020000BF046FE029B002743431E0001E0002CE1D108A8EEF794FB069BBB4203D1079BB34200D913E7154C2378BFF35B8F144DDB0700D5DD -:404580000CE7200002F0D8FA002800D106E7009A31002800EEF706FB200002F0E4FA064A0649280002F0BCFAF8E6C04618780210F863000858640008C0000008AD290010AB -:4045C000FC6300088064000800640008A8640008802270B51202002322480021FFF7CEFE214CE060002801D1204870BD03689B6898470028F8D1E068FFF7A6FE00282FD119 -:404600001B4E3378BFF35B8F1A4DDB0710D4300002F092FA00280BD0E168280000F0FCFA300002F0A0FA144A1449280002F078FA2800656001F05EFB0028D6D1636823603E -:404640000F235B42A361EEF73BFD050000F0EEF80028CAD122000A49280000F001F9C4E70848C2E700800710086400080F01FF8004640008D0640008C0000008254A0110F3 -:404680006C6D02100101FF8070B5204C2368002B10D1FFF74DFE2368002B05D125000835280002F0E7FB2560194B1868002801D003F072FD0025206802F0E4FB154E3378EB -:4046C000AB420AD129001C22134807F059FDFFF77FFF051E01D1012333702368002B10D1FFF726FE2368002B05D126000836300002F0C0FB2660064B1868002801D003F0F2 -:404700004BFD206802F0D4FB280070BD28640008F0700008246400080864000810B50C00086807F061F96368002B30D09868002802D00368DB68984763685869002802D0FE -:4047400003689B6A984763681869002802D00368DB68984763685868002802D00368DB6898476368D868002802D00368DB68984763681868002802D00368DB689847206819 -:40478000002801D002F022FB00232360636010BDF0B51E00C36985B004000D000292002B3ED000290DD0002333600B782F2B02D12E3B013533602F21280007F049FF00283C -:4047C0000ED163680093009A029B1A6001235B4201933368581C019BC018306000201AE0431B019300230093009BA26993420DDADF00019AE159280008F016F800280CD158 -:40480000E7197B680393039A029B1A60A369009A9A42DED1034805B0F0BD009B0133E2E70148F8E70701FF800E01FF8070B50500040020352800EEF7E1F902F023FBE169D4 -:40484000002906D1A1611822200007F099FC0123E3612800EEF7D2F902F02AFB002070BDF7B505000400203528000F000192EEF7C5F902F007FBE369002B1BD0A369022BA6 -:404880001ADC781C07F09EFF02F088FA0600390007F090FFA3690199DA00A218013316605160A36100242800EEF7A8F902F000FB2000FEBD014CF6E7014CF4E70E01FF808E -:4048C0001F01FF80F8B50700050020373800EEF795F902F0D7FAEB69002B0FD02E000024AB699C4214DA73681B68002B12D031002800FFF713FF01340836F1E7064C00237F -:404900003800AB61EEF77AF902F0D2FA2000F8BD0024F4E71C00F2E70E01FF8010B50400FFF7D0FF200010BDF7B5050006000F00002420352800EEF761F902F0A3FA01AB6A -:404940006A46390030000194FFF722FF06002800EEF754F902F0ACFA2000A64201D1009B1868FEBDF0B5040085B016001D00002A01D1002B1AD10A9A236800925F6A0A0013 -:404980002B0003A92000B84700280DD1236832009F6A03992B002000B847002804D123680399DB6A2000984705B0F0BD0048FBE70101FF80802213B50368120600925C6996 -:4049C00000231A00A04716BD70B504002600051D28006C3602F056FA3378002B1BD0E06D0368DB689847E06D002802D003685B689847E06C002801D002F0E8F92300903356 -:404A00001868002801D002F0E1F994342068002801D002F0DBF900242800347002F048FA200070BD10B50400064B08330360FFF7CBFF2000283002F04FFA201D02F04CFA11 -:404A4000200010BD806D021010B50400FFF7EAFF200002F0B7F9200010BD0000F8B503006C331B7806000D00002B15D0071D380002F008FAA868002801D002F0A7F90024DF -:404A80002B68280028339B009C5102F09BF9380002F00EFA2000F8BD0048FCE70E01FF800300F7B56C3300911B7807001600002B12D0002912D0031D1800019302F0E2F9D2 -:404AC0003B000024A0331A68002A09D001340433102CF8D1164C1AE0164C1BE0164C19E00C2002F06BF9009B05001860002E05D01249300007F01AFE00280DD10023AB600F -:404B000000232C602834A400E5511C006B60019802F0CEF92000FEBD300007F053FE013002F03CF93100A86007F044FEE8E7C0462001FF800E01FF800101FF80AE60021096 -:404B400010B5041E01D1002010BD07F03BFE0028F9D0200007F036FE8028F4D80349200007F0ACFE43425841C0B2EDE7746D021007230022012110B5084202D00C009C4014 -:404B800022434008013BF7D2100010BDF7B5204D00910192002600270400002D17D00023BB4232D1009BB3422FD9019B9B191878FFF7DEFF0300200E5840C0B280002B5818 -:404BC00024025C4001220023B6185F41E7E7114D0023BB4219D1009BB34216D9019B9B191878FFF7C5FF092300064440013BDBB2002B05D06200002C00DA6A401400F5E76F -:404C000001220023B6185F41E2E72000FEBDC046C82E0210B71DC10470B50400104B0D00083308C002F026F92000283002F022F9220000236C32A565E36423656365E3657F -:404C400023666366A366137023671381A367203213605360936020001373136170BDC046806D021037B50F31C90041184968C46D5218002120680093019145690B00200036 -:404C80000699A847002800D000483EBD1B01FF8037B50F31C90041184968C46D5218002120680093019185690B0020000699A847002800D000483EBD1C01FF80F0B51D00E8 -:404CC00003009C331C6885B0060017008C4237D1002A01D1002D33D1330028331800039302F0D0F82368002B26D0A36A2269EB18934223D860693A002900FFF747FF702301 -:404D0000F31860611978009730002B00226AFFF7BFFF061E0AD12A000300206A616A12184B4122626362A36A5D19A562039802F0BFF8300005B0F0BD024EF7E7024EF5E7AA -:404D4000004EF6E70101FF800501FF8073B5040000260F31C9006118C06D4D6803685519196B2A0033008847E16D2A000B6800900196DC6908003300A047B04200D001483F -:404D800076BDC0461C01FF80F7B50400806D03689B6B9847802306001B06002901D1984201D9802636062000102200217C3007F0E7F9A06D002203680025196B00238847AB -:404DC0002300070098331D70730800910193019A0023AA4212D9A06D0268116B2A0088473B00009A4340514019434B1E9941230098331A782D1811431970E8E7E367231D8D -:404E0000DD670433DD678834751B2560F7BD0000F0B595B007931EAB1B780EAC0B931FAB1B7806000A9320AB1B7809910C9321AB1B7817000D93249B1A6000941823FFF74B -:404E400011FF0490002800D0D1E06C4B0E9A9A4202D06B4B0493CAE033008C331D68172029000AF0D1FF01304543239AEF19A168A58911606A1E23697E2AEAD8EA18B16F7A -:404E80000692BA188A42E4D21D9A9A4200D9B1E09B1A1B9A934200D913001C9A13600A9A002A05D0002B03D01A9A002A00D1A3E001241D9A6442002A18D10EAA1421200040 -:404EC000FFF764FE1D9B08900593229B1C60069B002B79D0002D53D00B9B002B0ED00023079A2C005355130003930FE01D9A069355197F19059200250894E6E73300903384 -:404F00001B682C000393402D00D94024039B3A000093099923003000FFF7A4FE0490002865D11D9B002B05D10898039A2100FFF72DFE0890002D43D00C9B002B08D02200BC -:404F40000399079807F064F8002801D02D4B04930D9B002B07D0229B039A18682100FFF715FE229B1860079B2D1B1B190793002D01D11D9BFF18069B3F191B1B0693A6E7DD -:404F8000059B1D9A934209D21300059A9C1A3F2C00D94024330090331B68A5E70A9B002B08D01C9B1A9A1C681D9B0392059A1B199A42ABD3069B40243F2BEBD81C00E9E7A6 -:404FC000059B1B190593D6E71D9B002B04D1089B139A934200D03CE733008C331C68781E21000AF011FF01304443249B1C60049815B0F0BD044B2DE7044B2BE78366685417 -:405000000201FF800701FF800501FF800101FF80F0B595B00F93C36C0E920C9303006C331B7804000E00002B43D0031D18000D9301F028FF254D7368626D93422ED20C9A5B -:405040001B01D2187023E318197813AB0A9312AB0993012011AB089327000023049010A8029007930693059303930193009394373B6892682000FFF7CBFE051E0ED1B168CD -:40508000002918D0386807F09FFD3B68984212D00E4D736801337360002DCCD10D9801F007FF280015B0F0BD39680E9807F082FBEFE7074DF5E727009437386807F082FB49 -:4050C0000F9B9842F0D3034DE8E7C0460701FF800E01FF800501FF80F0B51F00C36C93B0040010000D931600189D07F06BFB0100012032004042FFF749FD199B1860002337 -:405100002B602B68626D93422BD20D9A1B01D3189A6819993A6009681B68994202D22B680133EDE799421CD87023E318197811AB0A930FAB0993012010AB089300230690A9 -:405140000EA8079305930493039302900193009320003300FFF75CFE034B9842DFD013B0F0BD0148FBE7C0460701FF80F0B5050097B008000E000E920F93FFF7E1FC00287B -:4051800038D02B1D18000D9301F07CFE7023EB18197814AF15AB0093019711AB32002800FFF79AFF041E1FD17023EB18197812AB0A9313AB0993012305931D9B0790039374 -:4051C00010AB02930F9B069001930E9B0490009308973300119A2800FFF71AFE1C9B0400002B01D0109A1A600D9801F061FE200017B0F0BD004CFAE70101FF80F0B505004C -:4052000095B008000F001600FFF79AFC002839D02B1D18000D9301F035FE7023EB18197811AB019312AB00933A000EAB2800FFF753FF041E20D17023EB1819780FAB0A9360 -:4052400010AB099311AB089313AB029301235B4207900690059004900390019300903B000E9A2800FFF7D4FD041E05D1002E03D0109B7360139B33600D9801F019FE200008 -:4052800015B0F0BD004CFAE70101FF808C30F8B5066807000C001720310015000AF0B4FD01304643200007F08DFA3C68013D281821000AF0A9FD013060438019F8BD00005F -:4052C00030B585B002A90A8001220024856E4A80426E039452191A60036800945C690A0008230249A04705B030BDC0466F6D0210F8B5036D0400C56C581C0F4B0E00984266 -:4053000017D8000101F04AFD0700236D29001A0106F0A4FE236DE76401332365002D02D0280001F053FD002E01D0E36C33600020F8BD01204042E5E7FFFFFF07F0B50025E0 -:405340000400C36C95B0476E0D930E954565236E9F4268D27023E31819780EAB0A9311AB099310AB089301230122079326000023049212AA02920693059303930193009346 -:40538000943633683A002000FFF742FD051E4AD17023E318197810AB019313AB009332680FAB2000FFF798FE214A051E01D0904239D10E9E119B954223D1002B31DB636D97 -:4053C000226D934203D30DA92000FFF791FF139A616D501C00018A1A01000D9B103959181818120106F07CFE636D01336365139B0D9A1B01D318109A9F601A600022DA60CE -:405400000FE0002BF3DA636D13995A1E0B016265521A19000D98103141181201C01806F05FFE370093E728000E9B236615B0F0BD0701FF8030B50400E030A0342568002D31 -:4054400006D06B68934203D9002905D001336B6004348442F2D130BD013BF8E7F0B50700C06D1E0003688BB006915B6B14009847702308ADFB18197804900095082340227D -:405480003800FFF7EFFB039000284DD16B461B7C07930300EA5C07998A424AD10133082BF8D13F2C00D9402425000123069C0593002C02D13B0090331C6800230493013B77 -:4054C0000693002D26D040263F2D00D82E007023FB181978049A009433003800FFF7C2FB002820D12300A2191978079881420ED101339A42F8D1049B0698E2183100FFF791 -:4055000045FB049B06909B190493AD1BD9E700230593F0E7059B002B09D1069B099A934202D0094B0DE0039003980BB0F0BD074B07E06D88002E00D035600023A542B5D9D1 -:40554000034B0393F0E7C0460201FF800701FF800501FF80F0B587B0050003911600402A40D8071D380001F08DFC0023402219002800FFF773FF041E2DD01B4B98422AD072 -:405580001A4B984228D17023EB181978039B0022009328003300FFF77BFB041E1CD10120082304AC039A3100404223806680FFF7EDFA7023EB1860601978402200940823A9 -:4055C0002800FFF765FB041E06D1E86D03681B699847041E00D0064C380001F069FC200007B0F0BD034CFAE70201FF800701FF801C01FF800501FF80F7B516001F0005007B -:40560000041D2000019101F03DFC3B00320001992800FFF723FF0500200001F049FC2800FEBDF7B51F0003000F31C900411898334C681B78050014190026002B0DD1C06D18 -:405640000368DB6A98470500010020000AF062FC089B6D1A39601D60F7BD0023E86D019303680096196B009A019B8847009A019B12184B41E86D002B01D1A24206D9036827 -:40568000196B009A019B88473618E6E70368A41B196B3C60009A019B88473B68C01A089B1860D9E7F0B5060093B0039305AB009304AB02911500FFF7B4FFF06D03685B6B4A -:4056C0009847182201000CA806F05AFD059C002C1ED02700182C00D9182706AB00932A003B0002993000FFF7BDFA041E14D13A000CA906A806F08CFC002804D0039B1C70E8 -:40570000200013B0F0BD059BED19DC1B0594DDE70123039A1370F3E7004CF1E71B01FF80F0B50E00150089B01C000EAB1B7802900393002C2DD006AB00932A0007AB3100F7 -:405740000298FFF76EFF069FA74200D92700079B002B02D0039B002B18D00F2302AA9B1831002A000298FFF79DFF00280BD102ABDB7B002B0AD1079B3100EA1A0298FFF7C2 -:40578000E5FA002802D0044809B0F0BDED19E41BCFE72000F8E7C0461C01FF80F0B58FB008AE039300961823029006910492FFF759FA041E63D1029B8C331F68079333698A -:4057C0003900581EB389C0180AF01EFB3900050017200AF019FB01232D18069A02356F439B1ADBB2059300943B00039A05990298FFF796FF041E42D1079B17201D68290099 -:405800000AF002FB01304543ADB200962B00039A05990298FFF73CFA041E30D1049B7F1B5B190493039BEB180393002F1BD03D00402F00D94025029E049A903633680699B7 -:40584000009302982B00FFF70DFA002809D13368039A009305992B000298FFF719FA0028DCD004000BE0029B03988C331D68013829000AF0C9FA01304543149B1D60200037 -:405880000FB0F0BD07B5436E826E9B18012200920022FFF745FF0EBD030070B56C331B780400002B22D0061D300001F0EBFA00212000FFF7E7FF051E13D101212000FFF790 -:4058C000E1FF051E0DD1636E01222366230074332067606501001A802000143BFFF7F0FC0500300001F0E4FA280070BD004DFBE70E01FF80F0B50126C36C87B0826E02937B -:40590000436E04009B18026FB11A0022C9B20092FFF706FF002869D10300010040222000FFF79CFD002828D1656E04900396002D23D040263F2D00D82E0070232700E31854 -:40594000903719783B68049A009320003300FFF789F900284AD1039B226F2000991A3B68C9B20093049A3300FFF792F900283DD1049BAD1B9B190493D9E70026636EA26E39 -:40598000029D9B18049305930835636D216F9E4213D205AB00932A68C9B2049B2000FFF7FDFE1035002821D12B00049A103B1A605860059B01360493E7E7059B01252366D4 -:4059C00004932300691A216774331A88C9B2521992B21A80200004ABFFF772FC002805D1236F2000E91AC9B2FFF74CFF07B0F0BD0300F0B59C331D6885B004008D4200D0FB -:405A000085E02B68002B00D181E003002833C76C1800039301F036FAAB6A2A69934215D02000FFF767FF3B4E002303982B6001F03FFAAB69626E934202D1EB69002B02D0FA -:405A4000201D01F035FA300005B0F0BD7023E318197800951823AA692000FFF719F9061EE2D1E06D03681B699847061E4DD1AB69626E934202D1EB69002BD5D0AB68EA6AC2 -:405A8000002B1EDA636D013B6365934208D9100101009A1A103112017918381806F020FBEA6A00212000FFF7C5FC23008C331F682B6A3900581E0AF0A7F901304743276652 -:405AC000B2E72B0034331B78002B14D0616D8A4209D2501C00018A1A0100103912017918381806F0FDFA636DEA6A0133636501212000FFF79FFCEB6A18012B6B3F183B603F -:405B0000AA69EB69BA60FB60CFE7034E8CE7034E99E7C0460501FF801C01FF800101FF80F0B5050089B010000E0002920393FFF707F8002800D1CCE0674B0E9A1A4200D04B -:405B4000C7E02B009C331C6864493460029806F0EDFD002851D16B6EE061A3612300343318702B008C331E68172031000AF04CF9002701304643A069E16932003B001218E9 -:405B80004B4122626362069BA7622363079B0298E362534B23601823A380173BE3800E9BA36006F00FFE0600A0810120039B220023611421E7814042FEF7E8FFB6B2029AF1 -:405BC00031006061FEF7E2FF7023EB181978029B60610093226A33002800FFF759F80600B84259D10300206A616AA28912184B4122626362300009B0F0BD281D01F042F9E4 -:405C000023681A00364B9A4241D0039A02992800FFF73CFB2B6EAA6FC3180700934204D92800FFF767FE061E36D12B6EAA6FFB1893424AD87023EB18197806AB019307ABF6 -:405C40000093029A05AB2800FFF746FA061E29D17023EB181978059A009418232800FFF701F8061E18D10123A26813402FD1220034321370702100232A6E6918E361A26170 -:405C80000978280000933B00FFF74AFD69E72800FFF730FE061EB8D00023281D236001F007F9A7E70F4B9842F6D10E9B002BF3DB6B6D2A6D934203D300212800FFF718FB75 -:405CC0002300012234331A70D4E7074EE4E7074EE2E7074E8EE7C046FEFFFF7F6F6D0210836668540701FF800B01FF801201FF800101FF80F0B5031D04009BB018000E93A4 -:405D000001F0C0F8102380202365400001F046F8012300255B42A367E0646565402001F04DF80600A16DFEF739F9E6653000FEF755F9A06D03685B6B9847431C06D12B00E5 -:405D40002A0029008C48009500F0CAFDA06D260003688C369B6A98473060402001F01EF8230090331860802001F018F8230094331860382001F022F823009C3318603822ED -:405D8000290006F0FDF9200040222900A03006F0F7F93668472031000AF036F8013046430822764966662000FFF770FAA0662000FEF7EAFF0127EBB20D9312AB022D56D0A5 -:405DC00000225A556B000F93690017ABCA52EB008033A26FE358934200D91300A36713AB0A9314AB099315AB089316AB029308230026019318AB00930796069705970496B7 -:405E000003965E4B626E0D992000FFF701F8B0421CD05B4B984204D0009633003200310092E70097A36E626E0D992000FFF778FC002805D00021534800910B000A0083E753 -:405E4000382204AB9B185F550135B4E7502204AB9B181B8817AA690038208B52022204A909184A552200743225671380ECE71A78012A13D15A78012A33D12300002574332F -:405E80002567143B9A8229002000FFF719FAA84267D000952B002A00290055E7022A20D15B78022B1DD117AB1A8859888A4201DC002A14D100222267226F20005100595AC1 -:405EC0002300743319800121891AC9B2FFF7DAFC002806D0002100910B000A0034E70122E9E7A36F20002366FFF728FA244E051E1CD0B04205D00021280000910B000A0056 -:405F000022E7226EA36F9A4210D2372704ABFF187023E318197820003B00FFF7C3FB002888D13A78534253415B421D400023402219002000FFF792FAB54201D0B04211D174 -:405F40002000FFF7D7FC051ED5D1E06D03681B699847002805D000952B002A0029000A48F2E6002501236C3423700E9800F0A0FF28001BB0F0BDC0460101FF806F6D021054 -:405F80000201FF801B01FF801C01FF80EFF31083DB4372B6044A1178002904D1013103480B40037011707047B1650008B06500080022044B1A70044B1B78934200D062B650 -:405FC0007047C046B1650008B065000810B510001A0006F043F8002010BD70B5040007230D00A18800681940063B8B40002A09D143602000012104F0E2FD2900200004F04D -:40600000D9FD70BD8360F4E770B50D000400160004F0A0FD6B1C04D0320000212000FFF7DCFF70BD10B50022FFF7EEFF10BD000007B5020088420AD0431C08D04B1C05D08A -:406040000021044800910B0000F04AFC010008000EBDC0463001018000228B5E5A1C01D1180002E0834201D1486870470C31F3E707B50200431C0AD0FFF7EEFF0200431CB8 -:4060800005D10021034800910B0000F029FC10000EBDC0463001018000228B5E5A1C01D1180002E0834201D1886870470C31F3E707B50200431C0AD0FFF7EEFF0200431C7D -:4060C00005D10021034800910B0000F009FC10000EBDC0463001018013B500F003FB0A4C0A4B22889A4208D100F006FB002122880B000091064800F0F3FB0121200000F0C4 -:4061000040FB00F0F9FA13BDB2650008FFFF00002301048037B500F0E5FA0A4D2C88002C08D100F0E9FA2A88230000942100064800F0D6FB0121280000F03CFB00F0DCFA3E -:4061400037BDC046B26500082401048010B500F0C9FA064B1B88002B04D104F0E7FF00F0CBFA10BD04F0DCFFF9E7C046B2650008F0B5466887B033003A331B780400049369 -:40618000002B4AD103685B68984763681B6A984243D0336AF268C31A1A40B36814000393039A354B049D30629A4230D033003B331F78314A002320002900002F38D00AF0E0 -:4061C0002DF83A000090019109F094FF009A019B04000D00B06AF16A12184B4120000092019329003A0009F091FF009A019B121A8B41009201930499019B039899420ED10C -:40620000009B98420BD9009A019BB262F362326B736B12196B413263736307B0F0BD01220023A4185D41009A019B121A8B41ECE709F0F4FF039B01970093009A019B049025 -:40624000059109F0CBFF009A019B04000D000498059909F0C3FFB06AF16A12184B410199994202D100999142CFD80120002124184D4100980199D8E740420F0003008242AE -:4062800006D901208A4202D9994280414042704700208B42FBD991424041F8E7F7B54668050033003A331B78002B18D1330039331B78002B13D1FFF75BFF6C682B68616807 -:4062C000019300294BD0226B636B08684968994206D801D1904203D8019B5B699847F7BD801A9941E36927698B420BD302D1A369834207D3A3689C461D4B9C4516D18742C0 -:4063000000D90700236AFF18E3681F40019B38001B6998472B685B6898473A000100306AFFF7ACFF0028DAD02B68D6E723003B331B780093002B0BD01A0009F0E7FE002353 -:406340000C4A801859410A4A002309F047FFD6E702000B006046009909F060FFEFE7336A3269F0689B181840019B1B699847B6E740420F003F420F004368F0B51A0038327C -:40638000127887B00400002A6ED13A331B78002B6AD103681B6898472368DB6998470568002D00D1314D1F230122D9B2039111009940A94203D0013B002BF6D1039343684A -:4063C0000193043B1C2B01D9202301930722019B0027043B9A400292D1170023234A029809F01CFF2E0002000B0001204042C11780197941801859412A003B0009F0EEFE8E -:4064000000236768049005913B607B6023685B68984700220023386267680120BA62FB626A463B00127B3B33BD6000211A70019A09F06CFE029B01383B61049A059BBA61DE -:40644000FB61002200233A637B633B003933F8601A7000225A700123383720003B70FFF787FE2000FFF71AFF07B0F0BD40420F0070B504000D00FFF77FFF00F033F96368FD -:406480001D6000F039F970BD10B5040000F02AF92368DB68984763681A003A321278002A02D000F029F910BD012239331A7063685B68002B15D02000FFF75AFE63685A681F -:4064C000596B506888420CD803D11168186B814207D8D16859601B68002BE8D090689847E5E700226368200039331A70FFF7D6FED7E7F8B505000C0017001E0000F0F2F8AD -:406500002800FFF735FE0022069B6968A3604B6827606660002B09D1E360002A10D14C602800FFF7BBFE00F0E7F8F8BD5868B042F2D802D11868B842EED81A00DB68E9E75D -:40654000D460F0E770B505000C0000F0CBF86A685368A34208D1DB6828005360FFF79EFE00F0CAF870BD1300002BF9D0DA689442F9D1E268DA60F3E710B50400FFF7FCFE4D -:4065800000F0B0F82000FFF7F3FD00F0B5F86368186B596B10BD10B5FFF7EEFF10BD000000487047CC6D0210034B10B51B68002B01D00248984710BDA4030008CC6D021080 -:4065C0000020704710B505F019FA10BD10B505F021FE10BD10B505F0CDF810BD10B504F08BFE10BD0723828810B51A40063B04689340002901D1636010BDA360FCE70000E5 -:40660000F7B500F06FF816496846FFF70BFD96250126042431006846FFF7E4FF280000F0F7FB00216846FFF7DDFF013C280000F0EFFB002CEED1C82704347F003100684630 -:40664000FFF7D0FF380000F0E3FB00216846FFF7C9FF013C380000F0DBFB002CEED1D8E70206000010B5040000F03CF8200006F0A9F821000200022000F0E6FA00F03CF8F8 -:4066800010BD000010B5A2B002000B0001A8842107F0DCFE0400832805D9832005220549684405F0DBFC002C02DD01A8FFF7DAFF22B010BDF46D02100FB407B504A901C922 -:4066C0000191FFF7DFFF03B008BC04B01847EFF31083012098437047EFF30580431E9841C0B2704710B5FFF751FC024A13680133136010BDF8650008064B10B51A68002A4E -:4067000007D01A68013A1A601B68002B01D1FFF74FFC10BDF865000870B50500FFF7E2FF2C780123E4B2601E84412B70FFF7E4FFE0B270BD70B505000C001600FFF7D2FF70 -:406740002B782278DBB29A4205D101242E70FFF7D3FF200070BD23700024F8E770B505000C001600FFF7BEFF2B682268934205D101242E60FFF7C0FF200070BD236000240C -:40678000F8E770B505000C00FFF7ACFF29880C19A4B22C80FFF7B0FF200070BD70B505000E00FFF79FFF2C68A4192C60FFF7A4FF200070BD70B505000E00FFF793FF2C8856 -:4067C000A41BA4B22C80FFF797FF200070BD70B505000E00FFF786FF2C68A41B2C60FFF78BFF200070BD000010B50C48FFF794FF002805D0FFF776FFBFF34F8F20BFFDE743 -:40680000FFF76AFF002801D0FFF7FAFEFFF75FFF0028F9D0012000F0BDFAC0463C660008F0B505008FB00E001700002800DB194D01AC34220021200005F0A2FC164B019510 -:406840005B696760DA6BE36022615A6B1B6B6261A361A660E461FFF745FF104A136801331360012B04D1342221000D4805F0F6FB0C4D34222100280005F0F0FB0A4B1B680C -:40688000002B01D028009847FFF736FF00200FB0F0BDC0460101FF80B0040008FC6500080866000840660008006600080FB4064810B57446FFF730FF011E03D122000348CB -:4068C000FFF7AEFFFFF790FF046600080001FF800020704710B511007246FFF7A1FF10BD70B50400064876461500FFF715FF002804D1320029002000FFF792FFFFF774FFFC -:406900000466000813B5FFF7EDFE094C094A2388934208D1FFF7F0FE002122880B0000910548FFF7DDFF01332380FFF7E5FE13BD76660008FFFF00002301018037B5FFF7E8 -:40694000D1FE094D2C88002C08D1FFF7D5FE2A882300009421000548FFF7C2FF013C2C80FFF7CAFE37BDC046766600082401018013B5FFF7B7FE094C094A2388934208D143 -:40698000FFF7BAFE002122880B0000910548FFF7A7FF01332380FFF7AFFE13BD74660008FFFF00002301018037B5FFF79BFE094D2C88002C08D1FFF79FFE2A882300009484 -:4069C00021000548FFF78CFF013C2C80FFF794FE37BDC04674660008240101801D2040427047162040427047012070470020704770470000044B10B51868002803D00121B9 -:406A0000494201F0B3FB10BDF0700008034B10B51868002801D001F0BFFB10BDF070000870B515000C008E18B44205D02178034804F069FB0134F7E7280070BD388100086F -:406A400070B58DB20024EB0705D5084804F038FB441EA04104B21026354205D0034804F043FB002800D03443200070BD3881000810B5040004F0B8FF200010BD002010B590 -:406A80000C00824204D0034804F022FB2070012010BDC0463881000870B51D00084B040008330360074B1B68002B07D1064E300004F064FA2900300004F0F0FA200070BD28 -:406AC000FC6D02100C70000838810008002070470020704710B5012000F05CF90C4910B50B681818EFF30882904205D30C220120084B40421A6010BD074A1468002C04D0F2 -:406B0000064A126812199042F0D208601800F2E7A8040008AC8100088066000884660008012070470120704710B500F031FA10BD10B500F037FA10BD70B5032403780500CE -:406B400023400026012B07D0FFF754FF2A781440012C03D1FFF75AFF300070BD022313432B700126F8E70322037810B593431A00012313430370FFF749FF10BDF8B5040083 -:406B800000203F2C19DC184EA500A859431C14D1022C12DC2000FFF79BFF00280CD12000FFF794FF002807D1104F3B78BFF35B8F0F4CDB0702D520007051F8BD3800FFF705 -:406BC000BBFF0028F7D09623A0229B01D20009492000FFF761FF3800FFF7C5FF064A07492000FFF79DFFE6E7A8030008786600087C66000801050000C0000008F16901106E -:406C000070B50400FFF7BAFFA30000240B4A9C50A04206D104F09CFB092303600120404270BD03685B69984705002000002DF7DA04F08EFB6D420560F0E7C046A80300087F -:406C400010B5FFF7DDFF10BD70B50C001500FFF795FF002807D104F07BFB0923036001246442200070BD03682100DB682A009847041EF6DA04F06CFB64420460EFE710B505 -:406C8000002A06DA04F064FB16230360173B180010BD131EFBD0FFF7D7FF031EF7DA01235B42F4E770B50C001500FFF767FF002807D104F04DFB09230360012464422000F6 -:406CC00070BD036821009B682A009847041EF6DA04F03EFB64420460EFE710B5002A06DA04F036FB162303600120404210BDFFF7D9FFFBE770B50C001500FFF73FFF00287E -:406D000007D104F025FB0923036001246442200070BD036821001B692A009847041EF6DA04F016FB64420460EFE710B5FFF7E2FF10BD10B5FFF722FF002806D104F008FB95 -:406D4000092303600120404210BD03689B699847040000208442F7DA04F0FAFA64420460F0E7000070B50A4C05002368986804F02DFC2368D86804F029FC0120FFF7D9FF47 -:406D80000220FFF7D6FF002D01D0FFF739FCFEE7DC05000810B5FFF7E5FF000013B5040004F018FE002806D100900300010022000148FFF795FD16BD1F01018010B5FFF7C5 -:406DC000EDFF10BD10B504F00FFE10BD10B504F00BFE10BD0C4B73B50400984206DD00210A4800910B000A00FFF774FDFFF7D8FB0500FFF7D0FB06002800FFF7CCFB801BE3 -:406E0000A042F9D373BDC046102700000001018010B50400FFF760FC002807D1FFF757FC002803D0200002F03EF910BDFA2080006043FFF7CFFFF8E77FB5061D0C001C22BF -:406E400000210500300005F09BF910220021684605F096F9002C00D1054C1C2368460393113B02960094019301F06AF928607FBD4C6E0210002110B504000162FFF7DCFFCF -:406E8000200010BD13B5012104004942006801F06DF9002806D00021020000910B000348FFF71EFD236A0133236216BD15010280036A07B5013B0362006801F06DF9002832 -:406EC00006D00021020000910B000248FFF708FD0EBDC0461701028010B50400006801F071F9200010BD000080200B4A0B4B10B59B1A1900C000834200D9010008485B1AD2 -:406F000001600849D018086007490B60074B1A6000F050F800F064F8B081000800000108E8660008EC660008806600088466000870B50B251C240C480C4B456003600C4BD3 -:406F4000C460836001F0FCF80A4B18600A480B4B456003600A4BC460836001F0F1F8094B186004F00BFD70BDB8660008656E0210CC660008C866000888660008726E02101A -:406F80009C6600089866000810B5EBF76BF810BD012110B5024B4942186801F0E7F810BDC866000810B5024B186801F0F5F810BDC866000810B502F0DBF900F00CF810BD19 -:406FC000704710B5FFF7B4FFFFF7FAFFFFF780FCFFF7DAFF10BD10B500F032FA10BD000037B51B4B1B4D1C4C2B600B236B601133EB601A4BAB601A4B236180235B01636170 -:407000004423E360174BA3601823A361164B2360EBF70EFB02F088FBEAF7F8FF280001F08FF8124B002118602200114801F0ECFE011E05D10300220000900E48FFF750FCB8 -:4070400000F016FA002100910B000A00F5E7C0467C6E0210BC700008CC700008A070000838710008F47000088C6E0210F0700008C36F01101D01018010B500F04BF8000070 -:4070800007B5002102000138009104281AD8002308F0A6FE03080C101400012219000B48FFF71EFC022219000948F9E7032219000848F5E7042219000748F1E705221900F2 -:4070C0000648EDE70B000648EAE7C046250102802601028027010280280102802A0102800001028010B501F0A5FE034B1B68002B00D0984710BDC046F066000810B5FFF778 -:40710000F1FAFEF7E9FFFFF721F8FFF703F8FFF7F3FA10BD10B5024B1B689847FBE7C046AC0400087046C0082CD3EFF30980816902390978002929D101B50FC8B8470CBCBE -:4071400003C29E461E4B06CB91421ED0002909D0EFF3098020388863F0C044464D4656465F46F0C0083B1A60906B1030F0C8A046A946B246BB4680F309882038F0C8022049 -:40718000C0430047EFF30880D1E770470D4A13689942FAD801B5890053589C460FC8E0470CBC10609E46704701B501F0EBF903BC8E46C7E701B501F0A5F903BC8E46C1E744 -:4071C000C40400083C6F021010B5011E02D0132001F044FD002010BD80B5EFF30583002B07D006210020494200F00DF80620404280BDEFF31083002BF3D1014F00DFF7E73C -:40720000C9710110704770477047704770477047F7B5644C0020217A012907D0814206D001204042FFF7EEFF01204042FEBD5E4D6B6D0193472B01D80B20F2E7EF68002F38 -:40724000EED02E8A002EEBD020009C22083004F097FF230054331E80AB68296B2364EB6AE7651800019300F01AF9002802D0019A231DDA676B69A9691800019300F00FF9A9 -:40728000019B002801D1231DDB6F6367EB69296A1800019300F003F9019B002801D1231DDB6FA3676B6AA96A1800019300F0F7F8019B002801D1231DDB6F6E6BE367002E57 -:4072C0000AD0F368B2683168300000F059F9002802D023000833DE67AE6B002E0AD0F368B2683168300000F04BF9002802D0230088331E60EE6B002E0AD0F368B26831683F -:40730000300000F03DF9002802D023008C331E602E6C002E0AD0F368B2683168300000F02FF9002802D0230090331E606E6C002E0AD0F368B2683168300000F021F90028F5 -:4073400002D0230094331E60AE6C002E0AD0F368B2683168300000F013F9002802D0230098331E60EE6C002E0AD0F368B2683168300000F005F9002802D023009C331E6019 -:407380002D6D002D0AD0EB68AA682968280000F0F7F8002802D02300A0331D6001230020237243E7B0040008D46E021073B5204C0720257A012D04D101F0FCFC002806D16A -:4073C00001204042FFF71EFF0120404276BDFF23184A1B04116A184E0B431362136AD1695B029B0E9B060B43D3611449706801F013FE0028E4D101F053FE206101F034FEE0 -:4074000020001C3001F032FA0028D9D001F098FA33680193019A02232A4204D083F3148823720020D2E7032282F31488F8E7C046B004000800ED00E0D46E0210B571011091 -:4074400080B500F02BF8EFF30583002B06D006204042FFF7D7FE0620404280BDEFF31083002BF4D1014F00DFF7E7C0461172011080B5EFF30583002B06D006204042FFF7B7 -:40748000C1FE0620404280BDEFF31083002BF4D1014F00DFF7E7C046AD730110704710B5031E12D01A000A43002052070DD117290BD910221C0019600839C9185A60996082 -:4074C00008609B685A60E060013010BDF0B5002828D000292FD003251300AB432BD107330F319943030008331C685F68E61AAF43F61BB14205D923002468002CF4D12000A4 -:4075000010E0456806684D194560801908384668B54200D9456058681143002803D1596008331800F0BD0322904318180460416018600830F6E70020F4E710B5041E12D0F2 -:40754000081E10D022000020083908328A420BD10323516899430B006168CB1A6360002808D15060013010BD13681000002B05D01A00EBE7136803600120F4E71800F2E778 -:4075800030B500281CD0002914D0002A1AD0002B1AD00024446014004C431D1901608260C3604361056118000139002904D1A21A99500131080030BD851805602800F3E76B -:4075C0000100F7E71100F5E71900F3E70300EFF3108100280BD072B64069002804D002685A615A6801325A60002900D162B67047836870B50400002B0BD00C30FFF7E6FFB8 -:40760000051E06D0200001F031F90022290001F0D3F970BD70B504000E00002802D00378062B07D0042120004942FFF7EFFD0025280070BD0C30FFF7C9FF051EF8D1002EED -:40764000F6D03100732001F009FB0028F0D0034B2000596901F0F2F8EAE7C046B0040008EFF31082002811D0C3688B420ED8036999420BD272B643690B6043684161013BBE -:4076800043600020824200D162B6704704204042FBE70000F0B585B000901600002801D0002906D1042100204942FFF7AFFD00207CE003270331B9430098019108F070FDCB -:4076C0000400019808F06CFD24181F2CEADD019B009A53430293002E20D03368B468039335697369002C06D03C4202D1F268232A04D80921D7E7F268002AFAD1002D07D0E7 -:4077000003272F4002D1029A9A4251D90A21CAE7002BFBD11F00002C02D00EE035000396254B1A009C32106800281AD0FFF74EFF041E14D00127002D26D11F4E00220299EE -:40774000B06FFFF7C3FE051E18D1002F07D033009C33186800280BD02100FFF781FF0521A1E7043301222421D86FFFF7AFFEDFE704362100F06FFFF7E0FEF0E7029A0021E6 -:4077800004F0FEFC02231F4306232370039B200063600023019AA360A7702B000C300099FFF7EEFE2000054A034BDA6605B0F0BD002CE9D1B4E7C046B0040008F175011044 -:4077C00070B5041E02D00378062B08D00421200049420425FFF71AFD6D42280070BD06000C363000FFF73CFF051EF6D1A368002BF3D03000FFF7EAFE061EEED0200001F055 -:4078000035F80122310001F0D7F8E6E780B5EFF30583002B06D0062100204942FFF7F6FC002080BDEFF31083002BF4D1014F00DFF7E7C0469576011080B5EFF30583002B25 -:4078400007D000280CD104214942FFF7DFFC002080BDEFF31083002BF3D1064F00DFF7E70378062BEFD10029EDD10C30FFF7AEFEEEE7C04615760110B0B50400EFF305835D -:40788000002B0AD0002C10D10421200049420425FFF7BCFC6D422800B0BDEFF31083002BF0D1084F00DF0500F5E72378062BEBD120000C30FFF7D4FE051EECD1200000F0B7 -:4078C000A5FEE8E7C177011070B5EFF31085036B002B1DD00024CE78DA78B24210D31A004A608C60002A11D09160002C13D0616072B6836A01338362002D00D162B670BD2B -:407900005A681C00002AEBD01300E5E7C162ECE74B608B60C1620163EAE7EFF3108372B6826A002A11D0511E8162002B0FD00122C06A00280ED072B681788270002B00D16F -:4079400062B6002907D08068F3E7002B02D162B6002AECD1002070474B688A68002B05D09A608A68002A03D053607047C262F8E70363FAE7F0B587B00190059116000028D6 -:4079800001D0002906D1042100204942FFF73FFC002083E00327059B01980333BB430C33029308F0FDFB0400029808F0F9FB24181F2CE8DD029B019A53430393002E20D0BF -:4079C0003368B468049335697369002C06D03C4202D1F268332A04D80921D5E7F268002AFAD1002D07D003262E4002D1039A9A4256D90A21C8E7002BFBD11E00002C02D0A1 -:407A00000EE035000496284B1A00A032106800281AD0FFF7DBFD041E14D00126002D26D1214F00220399F86FFFF750FD051E18D1002E07D03B00A033186800280BD02100E6 -:407A4000FFF70EFE05219FE7043301223421D86FFFF73CFDDFE704372100F86FFFF76DFDF0E7039A002104F08BFB02231E4308232370049B200063600023059AA3606262EC -:407A8000A362E3622363029A2B00A6700C300199FFF776FD2000054A034B1A6707B0F0BD002CE4D1AFE7C046B0040008B17A0110F8B586780400002E34D0C56800262F0060 -:407AC00001000C372800FFF747FF267021003800FFF7C6FDAB68B34249D05B78932B46D13800FFF773FD0400B04240D0280000F0BDFE07003200310000F05EFF380000F017 -:407B000005FF070020006A6A0C30B96804F0A6FA0723A6702370FB68E37021002800FFF7D3FE24E08568AB68002BF6D05B78832BF3D1280000F09AFE07003200310000F078 -:407B40003BFF380000F0E2FE210006006A6A0C31806804F083FAF368002B01D0E2781A700023280023700C302100FFF779FDF8BDF7B504000E0017000193002804D00378BB -:407B8000082B01D1002907D1042120004942FFF73EFB042040421AE08368002B18D05B78832B15D100F062FE05000122002100F003FF280000F0AAFE0500626A3100806886 -:407BC00004F04CFA0020EB68834200D01F70FEBD0C30FFF7FBFC051E0FD03100626A0C3004F03CFA0026072320002B70AE70EF702900FFF769FE3000E9E7019B0320002B73 -:407C0000C8D01900932001F029F8002808D0054B2000596900F012FEEFF309839E60DF600220B7E7B0040008F7B504000E0017000193002804D00378082B01D1002907D18F -:407C4000042120004942FFF7E2FA042040421DE0FFF763FE051E3ED001002000FFF77CFE2900626A0C31300004F0F8F9002F01D0EB783B70270000260C372E7029003800C2 -:407C8000FFF7EEFCA368B34201D10020FEBD5B78932BFAD13800FFF799FC051EF5D0200000F0E4FD07003100012200F085FE380000F02CFE07002800B968626A0C3004F0D3 -:407CC000CDF90723AE702B70FB682900EB702000FFF7FAFDD9E7019B0320002BB6D01900832000F0BBFF002808D0054B2000596900F0A4FDEFF309839E60DF600220A5E735 -:407D0000B004000880B5EFF30583002B06D0062100204942FFF77BFA002080BDEFF31083002BF4D1014F00DFF7E7C04675790110F7B505000E0001920093EFF30583002B5C -:407D400009D0002D10D1042128004942FFF75FFA0420404229E0EFF31083002BF1D1019A009B134F00DF20E02B78082BEBD1002EE9D0009B002BE6D128000C30FFF726FCFB -:407D8000041E13D06A6A31000C3004F067F9072323706B461B782000A3706B461B796660E370A56000F032FC0098FEBD0320D0E7717B0110F7B504000E000192EFF3058290 -:407DC000002A09D0002C0FD1042120004942FFF71EFA0420404224E0EFF31082002AF1D1019A114F00DF1CE02278082AECD1002EEAD0002BE8D12000FFF78FFD051E11D0BB -:407E00000100626A0C31300004F028F9019B002B02D0EB78019A13702800EC6000F0F6FB0020FEBD0320D5E7297C011070B5002838D0846805684668002C0CD00323234027 -:407E400002D1C2681B2A1BD8092100204942FFF7DBF9002070BDC368002BF5D1134B1A0094321068002806D1043301221C21D86FFFF72CFB01E0FFF7A9FB041E0DD0012377 -:407E80000422A37000232270E6706560A360E3602361636123762000DCE705214942FFF7B3F9F8E705000600D8E7C046B00400082A4B70B55D6904000E00002D06D1082152 -:407EC0004942FFF7A1F90120404219E0002802D00378042B06D0042120004942FFF794F90420F1E7037E002B0BD1EA6AC56042610361002A00D010610123EC620020237664 -:407F000070BDC278D1070CD5C168A94209D1FF2B05D110214942FFF777F90320D4E70133ECE7002EF9D093070BD51F221F21E0686B1C9A56431C5956914202DADA7700F07D -:407F4000ADFC3100532000F089FE002803D02900200000F073FC0220B6E7C046B0040008334B70B55B690400002B06D108214942FFF74AF90120404270BD002802D002787B -:407F8000042A06D0042120004942FFF73DF90420F1E7027E0F21002A03D0C168994206D00E2120004942FFF72FF90320E3E7013AD2B2027600208242DED16269824201D02F -:407FC000216911612169002923D04A61E278920707D59A1CD27FD96A52B200291BD10133DA77A368002B0FD0200000F03FFC00220500110000F0E0FCEB6AE5606361002398 -:4080000023610133EC622376002000F0A3FC0020B2E7DA62DAE78868002807D00130C07F051C40B2904200DA151C6AB24969D4E7B004000870B5041E02D00378042B08D00D -:408040000421200049420425FFF7DEF86D42280070BD037E002B20D06369C068002B01D022691A612269002A26D05361E3789B070DD5831CDB7FC26A5BB2002A1ED11F21DC -:40808000421C5156994202D0D37700F007FCA368002B20D1002000F05DFC0025A3782570DB07D4D5154B1A0094321068A8421FD02100FFF7D5FACAE7C362D7E791680029B4 -:4080C00007D00131C97F0D1C49B2994200DA1D1C6BB25269D1E703256D42200000F0C6FB0022290000F068FCA368002BF5D1D1E704332100D86FFFF720FAA8E7B004000898 -:40810000F8B50400002C00D1F8BD0822E3786769134213D00026A3682676B3420ED0200000F0A4FB05003200310000F045FCEB6AE560636101232661EC6223763C00E1E773 -:4081400080B5EFF30583002B06D0062100204942FFF75AF8002080BDEFF31083002BF4D1014F00DFF7E7C0462D7E011080B5EFF30583002B06D006214942FFF745F8062009 -:40818000404280BDEFF31083002BF4D1014F00DFF7E7C046B17E011080B5EFF30583002B06D006214942FFF72FF80620404280BDEFF31083002BF4D1014F00DFF7E7C0467C -:4081C000617F011080B5EFF30583002B06D006214942FFF719F80620404280BDEFF31083002BF4D1014F00DFF7E7C04635800110F8B5234B0F00411E0500994201D8B842D6 -:4082000006D2042100204942FEF7FFFF0020F8BD002A32D094681668002C07D00323234002D1D2680F2A16D80921EBE7D368002BFAD1144B1A0098321068002806D104334A -:4082400001221021D86FFFF741F901E0FFF7BEF9041E0DD001230522A37000232270A360094A084B6660A781E5819A662000CEE705214942FEF7C9FFF8E71600D9E7C04698 -:40828000FEFF0000B0040008AB820110EFF3108172B600220388934202D0013B03800132002900D162B610007047836810B50400002B0BD00C30FFF7E9FF002806D020001B -:4082C00000F0D4FA0022110000F076FB10BD000070B504000D00002802D00378052B08D0042120004942FEF790FF04235B42180070BD0C30FFF7CAFF00239842F7D19D42B0 -:408300000CD02900632000F0A9FC002804D0044B2000596900F092FA0223E7E70323E5E7B004000870B5041E02D00378052B08D00421200049420425FEF767FF6D4228000F -:4083400070BD8368002B0DD003256D42200000F08DFA0022290000F02FFBA0680028F5D100F0F8FA0025A3782570DB07E7D5084B1A0098321068A84203D02100FFF770F9D3 -:40838000DDE704332100D86FFFF7D7F8D7E7C046B004000810B5002802D00378052B06D004214942FEF731FF0420404209E08368002B07D000F05AFA0122002100F0FCFA16 -:4083C000002010BDEFF3108372B68289C18991420DD901328281002BF2D1012362B6002BEED111214942FEF710FF0320DDE7002BF4D0F6E780B5EFF30583002B06D0062160 -:4084000000204942FEF701FF002080BDEFF31083002BF4D1014F00DFF7E7C046F1810110B0B50C00EFF30583002B08D000280DD104214942FEF7E9FE04204042B0BDEFF3DF -:408440001083002BF2D1084F00DFF7E70378052BEED1002CECD10C30FFF718FF03002000002BEBD10320E8E7D182011080B5EFF30583002B08D000280DD104214942FEF71E -:40848000C4FE0420404217E0EFF31083002BF2D1104F00DF10E00378052BEED1EFF3108372B68289C189914211D901328281002B03D000F0ABF8002080BD012362B6002B28 -:4084C000F7D111214942FEF7A0FE0320DAE7002BF4D0F6E79583011080B5EFF30583002B06D006214942FEF790FE0620404280BDEFF31083002BF4D1014F00DFF7E7C04659 -:408500002583011070B500F0C5FD1D4CE3680133E360236D002B00D0984700F0DBF9002000F018FA226C002A05D0A36BA1698B4202D0A163E26370BDE26B002A01D0013AF3 -:40854000E263E26B002AF6D1227A022AF3D1656A002DF0D06A1C0133D27FDB7F52B25BB29A42E8D1280000F08DF9A06B00F0A8F9280000F0E5F9236CA563E363DBE7C04650 -:40858000B0040008F7B5204A15001400543501955634EFF31080019B1F8872B62388002B2BD01600013B23805A363188D56D8B00013189B25B598F420ED0318000280ED0D7 -:4085C000002B1CD0187801380628E2D807F0FEFB09E10DE10F1113000021EEE7030062B6EEE7126E18009047CDE7526EFAE7926EF8E7D26EF6E7126FF4E70028EED00020B0 -:4086000000F0A8F9F7BDC046B0040008F8B50100EFF31080174A0500130054331C8872B61600563633889C421ED915000133338058352B88D76D9E0001339BB2F1519C4256 -:4086400000D100232B800125002802D162B6002D0CD0537A002B04D18022074B52055A60F8BD01239372FBE70028EFD00220FEF707FDF5E7B004000800ED00E001231F21BC -:4086800010B54370C3185956094B0A4A5B6A002B04D05C1CE47F64B28C4206DCC26083609060002B00D0D86010BD1A009B68EEE7B0040008CC040008014B58697047C04666 -:4086C000B0040008024B5B69181E00D0986A7047B004000880B5FEF705FD044F00DF012100204942FEF78FFDFEE7C046458D01100223F0B513400400002B15D1EFF310870D -:4087000072B605682E000E40D20707D51800B14206D12B008B432360280001E0301EF8D1002F00D162B6F0BD006803000B40D20703D59942F7D00020F5E75A1E93415B4242 -:408740001840F0E7C16910B542694B1C13D1002A03D1124B1B6B98420CD10369002B00D05A614269002A03D013610023436101E00A4A136310BD002A03D1084BDB6A984260 -:40878000F8D10369002B03D0DC695A616118D9614269002AE8D1014AD362EBE7B0040008002310B58278040043700370930707D50F4BD20611D50833016BD86FFEF750FF6B -:4087C000A378DB0708D50A4B1A0088321068002808D02100FEF744FF10BD016B586FFEF7ACFEEDE704332100D86FFEF7A6FEF3E7B0040008104B10B55B69002B08D1082153 -:4088000018004942FEF7FFFC01225242100010BD002806DA042118004942FEF7F4FC0422F3E7EFF3108172B69A6A140084439C620029EBD162B6E9E7B004000810B500296D -:4088400010D01F224B1C9A568368002B04D05C1CE47F64B2944206DAC8608B608160002B00D0D96010BD18009B68EEE78368002B06D09A688260002A00D0D0600022DA60B4 -:4088800018007047C368002B07D082689A608268002A00D0D3600023C360704770B505000400002C09D02378012B07D02800FFF7E9FF29002000FFF7C1FF70BDE468F0E79E -:4088C000012310B5010043700148FFF7B7FF10BDCC04000870B50C4DEC6A002C13D0E369013BE361002B0ED12000FFF7CBFF2000FFF7E6FF2469002C04D0E369002BF3D0E6 -:4089000000236361EC6270BDB0040008806B203070470000084B10B5596900290AD00B6B8A6B934203D2054A1B68934202D00120FEF7A6FB10BDC046B0040008A52E5AE267 -:40894000022310B54370024B9861FFF7E3FF10BDB004000870B5174B05001A7A5C69002818D1022A15D1002C13D05D6A002D10D06A1C631CD27FDB7F52B25BB29A4208DD46 -:408980002800FFF77FFF2000FFF778FE2800FFF7D7FF70BD022A09D1002C07D0421C631CD27FDB7F52B25BB29A42ECDC2800FFF787FFEEE7B004000870B50400836B1500C7 -:4089C0001962FFF7BFFE2000002D02D0FFF7C2FF70BDFFF775FFFBE710B543780400332B0BD1031D416ADA7F2830FFF781FE011E03D000222000FFF7DFFF10BD70B5041E2F -:408A000004D00378012B01D1002908DA042120004942FEF7F8FB04256D42280070BD4378042B05D103214942FEF7EDFB0325F3E7EFF3108372B6856A0D438562002B00D1EC -:408A400062B66378332BE8D12000261D616AF27F2830FFF74DFE011EDFD0F37F05009B0701D4636A9D4301222000FFF7A5FFD4E7F0B587B005910290042100280ED0002A5A -:408A800056D093699468166955690093002C0BD0A30702D1D368432B09D8092100204942FEF7B1FB0020B0E0D368002BF5D1002E06D0730702D1002D00D0BBE00B21EDE77F -:408AC000009B002B31D0009B0C21013B372BE5D8002D03D06B07F1D1472DEFD900271368019353680493BC420BD1564B1A0088321068002823D0FEF769FD041E00D197E0ED -:408B00000127002E3BD14F4B002D1FD14E4A556D1A000832D06F002818D0FEF757FD00281BD010231F43060025E018230093CFE7182301920093150016000492D5E704338A -:408B400001224421D86FFEF7C1FCD6E732002900586FFEF7BBFC0028E5D1002F5DD0394B1A00883212680392002A50D021001000FEF776FD002402231F43002C58D0012342 -:408B8000237063706B461B7CA770E3706A46019B002763600023D757611CA360E36023616361A361E361CF77A11CCF77FD21E21CD177221DD3776362A362E3622B00403BD8 -:408BC000F318A363029B2663E363204B656333601D4B1B6800935B0721D4A36B002019001A00343101C29142FCD1194A20005A63029A9A6380225204DA63059A1A62154AAC -:408C0000104B1A66FFF7A6FE200007B0F0BD04332100D86FFEF791FCACE73C00ABE7AD080D4B113D002DD8D004363360013DF9E7052133E7009B002B00D044E718230093CF -:408C400048E7C046B0040008D46E0210A52E5AE2D5860110D9890110CCCCCCCC70B51F4C0200237A0020022B19D16369834216D0656A854213D05A704A1C16D1226B002A6D -:408C80000ED101214942D96158611A6100280AD003611348FFF7EAFDFFF752FE012070BD10001269EBE72363F3E7E26A002A02D0D569A9420CD2D96158611A6100280BD00B -:408CC0000361002AE5D0D0695361411AD161E0E71000491B1269E9E7E362F2E7B0040008CC040008F8B5164B07005C690E001500002C07D1082120004942FEF784FA012016 -:408D00004042F8BD002806DA042120004942FEF77AFA0420F4E70A00010020002830FFF7E7FC0028EDD1002D08D067620434E67729003330FFF792FF0220E1E70320DFE731 -:408D4000B004000870B5194D6C69002C22D02B7A022B1FD16B6A002B1CD0E06AFFF7D0F9A069002803D000221100FFF725FEEFF309830F48A363FFF779FDFFF7E1FD002384 -:408D80006B61E378DB0702D5A369002B03D02000FFF706FD70BD04226270E3606B6BA360002B00D0DC606C63F4E7C046B0040008CC04000873B5104D104EA96A01240029B0 -:408DC00007D1B26D0E48FFF753FEA862441EA041C4B2736E0193002B0BD0A96C002908D1F26D0848FFF744FEA864431E984140420440200076BDC046B0040008D46E02102E -:408E000079700110D58F011080B5EFF30583002B06D0062100204942FEF7F5F9002080BDEFF31083002BF4D1014F00DFF7E7C046718A011080B5EFF30583002B02D0054BA1 -:408E4000586980BDEFF31083002BF8D1024F00DFF7E7C046B0040008B9860110B0B5EFF30583002B09D000280FD104214942FEF7CAF9042464422000B0BDEFF31083002B2D -:408E8000F1D10F4F00DF0400F5E70378012BECD10029EADB4378042B05D103214942FEF7B2F90324E6E7EFF3108372B6846A0C438462002B00D162B6FFF7A8FBDBE7C04649 -:408EC000FD89011080B5EFF30583002B07D0062100204942FEF797F90620404280BDEFF31083002BF3D1014F00DFF7E7F587011080B5EFF30583002B01D0002080BDEFF326 -:408F00001083002BF9D1014F00DFF7E7C586011080B5EFF30583002B07D0062100204942FEF771F90620404280BDEFF31083002BF3D1014F00DFF7E7E58C0110002230B58F -:408F40000C4C636C002B02D01D69A9420CD201618260C360002B03D01D699860691A1961002A05D0D06030BD1A00491BDB68E9E76064F8E7B004000870B5154D6C6C002C07 -:408F800023D001262369013B23612369002B1CD1E368002B01D0A2689A606B642100002318311A00E86CFEF7C3FE002803D021000320FEF765F8E378012B07D16169200002 -:408FC000FFF7BCFF6C6C002CDFD170BD6670F9E7B00400080D4B37B51A6E0821586EFEF791FE0B4CE06400280FD00125094B6D4223652B0000226946E06CFEF7DBFE00289D -:40900000F7D10198009B9847F3E737BDD46E0210B0040008798F011010B5011E16D00D4B186806F0F1FE0C4B013898420ED8FF230A4A1B06116A0B4313620622084B1A60BD -:40904000586000209860074B187010BD01204042FBE7C04654050008FFFFFF0000ED00E010E000E0406D0008074B1A78002A05D000221A708022054BD2045A600123044ABB -:4090800011680B4313607047406D000800ED00E010E000E0014B1B687047C04610E000E001204042704710B5FEF796F810BD00007047EFF3108072B6704780F310887047D8 -:4090C000FFF7F6FF0E4C0F4DAC4209DA21686268A368043B02DBC858D050FAE70C34F3E709490A4A0020521A02DD043A8850FCDC074808490860BFF34F8FE7F711F8FEE7E6 -:40910000F07702100878021090120008B08100080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043001F08DF9FEE770470000F8B5E02341 -:40914000534C9B00E2580F231340D02207209900091992008A580240032A5CD0042A5DD0002A67D04B48002B69D1B223B1220321DB00D200E558A358A6581B0F360F0B40F6 -:409180000E4204D0A258120F0A40012A01D1EA0701D4032B11D1B0233F4ADB00E558A158E658C904C90C06F02FFEAD03AD0B6843F101C90F013106F027FEE0239B00E358E0 -:4091C0009B069B0FD840354B1860354B1C691969240A090E013106F017FE324BE1B21860013106F011FE304B040018602F4B30491860304BC01806F007FEFA212E4B89007F -:4092000018702E4BE01806F0FFFD2D4B18602D4BC0031860F8BD2C4A1068A4E7C02292008A581F210A40112A01D0132A04D18020000298E7254896E7FA20C00193E7012BE8 -:40924000BBD1C823C0210327DB00C900E658635865582D0F3D4204D06258120F3A40012A01D1F20703D49B009B0F032BA5D1C022D200A358A158A5587F221F261340090A87 -:409280003140584306F0C0FD290C314093E7C0460000264000366E01840500005C0500080000214060050008540500086805000840420F003F420F0070050008E7030000A0 -:4092C0006C050008640500085805000800127A00B021E02010B53024204BC9005A588000520052085A501A58A2431A50802252045A501B491B4A80209950A02104328901B7 -:409300009950FF21184AC0059950C02252009958890089080143995080219858090601430120995099588143995000F0B9F8FFF705FF00F00FFA00F08DF800F095F800F0A6 -:40934000EBFAB0235B055A78002A02D05B78212B03D10022054BDA605A6010BD0000264001000200840500008C050000E000234010B501F00FFDFFF7ABFF00F06BF800F076 -:4093800073F800F0C9FAFFF7D7FE10BD024BD86F032318407047C0460400214010B5FFF788FE0749074ACB6F1A40074B1343CB67102306490A681A42FCD0FFF77EFE10BD18 -:4093C00004002140FCFF00000100FA058800214070B50F4C0600FFF76CFEE36F0500DB439B0701D1FFF7DAFFB0230A4A9B00D650E36F094A09491A40094B1343E367102326 -:409400000A681A42FCD02800FFF757FE70BDC0460400214000002140FCFF0000880021400300FA0510B50248583000F0FFFB10BDA46D000810B50248B03000F0F7FB10BD3B -:40944000A46D000810B5024800F0F0FB10BDC046A46D000810B5034A8021042000F022FC10BDC046246F000810B500F0C2FF0400074800F037FB074800F066FB064800F0E1 -:4094800063FB064800F060FB200000F0B6FF10BDA46D00082071021054710210EC700210F0B5962189B0002000F0EAFF00F0C0FF002801D100F0AEFF012001F06DF8E822CD -:4094C000824D83496B6C92010B4013436B646B6C03951B0ADBB20D003A2B06D1039B7D495B6C0B401A43039B5A640024002001F0BFFB012001F0BCFB2300220021000094AC -:40950000754800F0B1FA2300220000940121724800F0AAFA039B04261A6808231343039A6E4C1360039B1B69334207D1002C00D1FEE7012000F064FF013CF3E7002CF7D026 -:40954000A02603220127664CF600A359654993433B43A3510B68644A2B400B608021136949041B021B0A0B43136113690F212B401361E0239B00E25802208A433A43E250D8 -:40958000E25821318A438021E250E25809060A43E250002100F034FD0021032000F030FD0021042000F02CFD0021080000F028FD0021380000F024FD4C4B04AA23CB23C2F6 -:4095C00004A9380000F08CFD002800D0FEE74849380000F03BFE002800D0FEE7454B4649E2580A403A43E250E25844490A408021E250E25809060A43E250A359404A13408A -:40960000A351A3593F4A1A4080239B011343A3518023A2591B021343A351039B3A4A1B681340039A1360C0235B00E3583B4204D1364AA3585B005B08A35000246421002001 -:4096400000F01EFF0094012306220321224800F00BFA01230094190006222D4800F004FA01231D250094190006222A4800F0FCF901230A2204210094174800F0F5F92648D8 -:4096800001F0F6FA254801F0F3FA230000950A220621234800F0E8F923000721204800950B2200F0E1F9114B04AA0C3313CB13C21B6804A8136000F08DFC8023194A1B06BA -:4096C00011680B43136009B0F0BDC04600002740FF00FFFFFFC5FFDF0000324020A10700000026409000214000002140887102101027000004050000FEFCFFFFFFFF00FF8C -:40970000FFF0FFFFFF8FFFFFFFFCFFFF0C0500008000324080053240060600000706000000033240000E1F4110B50248FFF750FE10BDC046000008107047000010B5E8F728 -:409740005FFF8022024B52041B681A601B6810BD386F000813B503236A46012413800D491F3368469370019400F0EAFD0A4B0B4A1360802252049A606B4600229B5E002B29 -:4097800004DB1F2213409C40054B1C60054A064B1A6013BD3D97011020112340386F000800E100E000012340346F00088022024B52001B689A607047346F00081E4A030021 -:4097C000904210D010D840282FD005D8002830D0102828D0194806E0802828D08021100049008B42F6D17047154A904215D009D8A022120690421CD0124AA0209342E9D1CD -:40980000C003F0E7104A904209D0104A904208D00F4A9042DED10F48E5E7A420F0E70E48E1E70E48DFE70E48DDE70E48DBE70E48D9E70020D7E7C04606005200FF005200DE -:40984000010000F0090000A0040000F0050000F0030000F0010052000200520003005200010050000200500005005200F0230F4A1B06C318934201D8580A7047EC230C4AE8 -:409880001B06C318934204D880205B0A40021843F3E7EA231B06C018904203D8430A80208002F4E701204042E7E7C046FFFF0F00FF7F000010B50400FFF7D8FF0023421C69 -:4098C00003D0E40563426341DBB2180010BD00000B4B10B51B69002B0FDB0A4B0A4C1868FFF76CFF0121094B094A995099580029FCD119590029F9D110BD0648FCE7C046AF -:40990000000023403C6F00088C040000000025400C0400000200500010B502220249002000F070F910BDC0469110000810B50400FFF7C0FF002824D0FFF700FC124B134A4B -:40994000FA211A6000225C609A60DA60104B89001C691B69240E621C0E4C1B0A5443DBB201335C430C4B186806F04EFA0100200006F04AFA094BC1188020400008F000FBBD -:4099800010BD0748FCE7C0463C6F00080001001C0000214060F590005C050008980800000600520070B505000C00FFF783FF002828D0002C26D0FFF7C1FB134B134AFA21B3 -:4099C0001A60832252005A609D60DC60104B89001C691B69240E621C0E4C1B0A5443DBB201335C430C4B186806F00EFA0100200006F00AFAE1239B00C1188020400008F0B0 -:409A0000BFFA70BD0548FCE73C6F00080001000600002140808D5B005C050008060052000F4B30B5C0180F4BC009C01800011F23032909D81D00C9008D4013408B4004682D -:409A4000AC432343036030BD1D000439C9008D401A408A404468AC4322434260F3E7C0460000CEBF00100304F8B5012637008F40056833408B400E36BD43140037002B4385 -:409A80008D00AF403440AC400360836A06AABB43234312788362FFF7C3FFF8BD0369002B03DA89B24160002070470148FCE7C04601008A000368002B01DB0348704789B2F7 -:409AC000C26081600020F9E701008A000369002B03DAC36800200B6070470148FCE7C04601008A00024B1A68002A00D1186070474C6F0008F0B52C246043104C1E002468E0 -:409B00001F0A2018FF2426403C400D4F06607601F61906610B4E1B0C44606401A4191E04836033434461A3600023059DC261016283619D4201D02B888381F0BD4C6F0008A1 -:409B40000000234000102340F0B5038985B002AD2B800368066A1933AB704368476A0095826AC16A040003930369C068FFF7C2FF00213B000A0000913000FFF7BBFF216BBD -:409B8000280000F0DDFB0022AB5E002B06DB1F2213401E3A9A401300014A136005B0F0BD00E100E0F7B52C26134C7043276801933C182569002D09D071437918886900284B -:409BC00002D12E68002E03DB0C4800E00C48FEBD6768012426004B689E40B446634616881B041E431660EA608C61BC40019BA4B24B62AC60EBE7C0464C6F000807028A00BF -:409C000004028A002C23434306480068C018C369934204D9036A00209200D15070470248FCE7C0464C6F00080A028A0073B5002642690400D56801962B0CB3421CD01B04C8 -:409C40000069136013680369B34215DA01A9FFF73DFFB0420CD10198E26903681E0C0378934205D2226A9B009B58002B00D0984731002069FFF712FFADB2002D09D063690C -:409C80001D6000251B68636AAB4205D098476562A56163691B6873BDA36A002BF8D09847F6E7000070B513000F282ED8002A08D100292AD1164B4001C018164B1860080012 -:409CC00070BD002921D01F240C401ED1104A114D114E400180182860CA08180031602100736002F04DFA21002868FFF7D7FE210032002868FFF7DEFE011E04D12868FFF7D4 -:409D0000CDFE011EDBD00549D9E70549D7E7C04600002340586F0008506F000801018A0003018A00F7B5184F04003B680191DE683368834219D90025A94202D100F059FB50 -:409D4000050038680368002B11DB104C019B002B02D1280000F051FB2000FEBD9A43226000240021FFF79AFEF0E7094CF4E71F2201232240934064097268A4001419226812 -:409D80001A42EBD1034CECE7586F00080301880004018A00020188000A4B1B68DB681A6882420DD959681F23420918401E3B8340920050581840431E9841034BC018704742 -:409DC0000248FCE7586F00080001880004018A00036810B5020080241B0500D4403C82239B00D3580020DB05DB0DA34203D090239B00D150013010BDF0B587B0002800D1BC -:409E0000CEE0002900D1CBE0664B984200D1C7E00B780193022B03D100278C7FBC4201D04C68671E0C7F0825661EB44126048C68A446002463469D426441E5020F2427406F -:409E40008024A4043C4334432C43C025019B0460AD041C062C4004644F7FF0267C1EA7418C7C3603651EAC41A30203930C7CBF01651EAC41230204934C7C651EAC41630242 -:409E8000072405934D7BCB6A013D254002958D7B29342D0125405C1E2404029B34401C432C43039B27431F43049B1F43059B1F4387640F7B7C1EA741CC7B3F02002C00D047 -:409EC0006BE0019B9E1E734273415E0264460F23013C1C403C43C0272643BF00C651FF278B693F041E043E400F7D3E43C427BF00C6510026CF7FB74204D0019B5E1E734203 -:409F000073411E02019B029F013B2F433D005F425F41802335433F0445642743FF25C1249B00C7500B6BA4002B4003514B1CDB7F5F1EBB415F068B1CDB7F013B5C425C41C8 -:409F4000230601930B0028331B78013B5E425E414B6A34042B40019E3B433343234303658B6B4C6B1D4081239B00C5500E4B23400E4C0351CB6B0E490B400E49435000234A -:409F800010009A4207D01800536093601360D36013621363D36207B0F0BD8026B60095E70548F8E7000069406D0B0000C80F000073070000880F00000160AA0003685B0018 -:409FC0005B080360002904D000234B600B600B62CB62704700280CD08268436801781343C2680020134304220A431343024A136070470248FCE7C046000E1F4101005E00CD -:40A00000042819D8042910D94B1EFF3B132B13D81F231940094B8000C018C02304229B00C1504033C250002070470723D0301940024B8000C150F6E70148F5E70000264000 -:40A0400001004A0070B5012814D1C023204CDB00E358002B10DB8878831E0E2B0AD84B785A1E112A06D8CD780E78002D06D17022152E06D8174829E0174827E03822122EED -:40A08000F8D9B242F6D30A79022A13D0F8211B0249010B40F8210004490308407F210E408021ED0609050D40C021034333432B43C9006350C021C020C900800512076358BD -:40A0C00002400648034000201A43625070BDC0460000264001004A0003004A00FFFFFFCFF0B50C0089B0012800D08DE0C0234B4ADB00D358002B00DA84E0494A0B689B1871 -:40A10000484A934200D97FE00A7A4B68002A3DD1454A9A4200D977E0444A934200D973E0002606AB1E705E709E70627A022A22D00122002300920193009B05936368B3424D -:40A1400019D0237A1327002B00D10337257A3823002D00D1DB189F4240D90120009A019B002112184B4100920193009B132BE3D1019B002BE0D1237A06AAD370637A11002D -:40A1800001201371FFF75EFF09B0F0BD284AC0E720680599784305F037FE290005F034FE039A0490801A01F097F863680390F01A01F092F8039B834206D26A46127806AB79 -:40A1C000049E1F705A709D700135112D24D063680393B342DCD11FE00225F8E763689E42BBD000233A001900206806F017F8009A019B05F0F3FF002D08D10E4B98420BD974 -:40A200000D4B07E00D48BFE70D48BDE70D4B984202D90D4B8342DFD2013797E70000264000F7C2FF0087930320BCBE0080D1F008E81FA200FFC1EB0B0084D71703004A001E -:40A2400001004A007FFE210A00C2EB0BF8B50E0001281AD1C02180220D4DC9006C581206C827224304006A50FF00EB59234208D1002E01D1074807E0200000F0C1F8013E11 -:40A28000F3E70020002EF5D0F8BD0348FCE7C0460000264002004A0001004A00032310B5FF240340DB009C409940E2432140800807280AD8174B05F093FD04090E13181D81 -:40A2C0002227186A02401143196210BD586A024011435962F9E7986A024011439962F4E7D86A02401143D962EFE7186B024011431963EAE7586B024011435963E5E7986B21 -:40A30000024011439963E0E7D86B02401143D963DBE7C04600002140064B10309A68064B9A4203D18300985899507047034B8000C058FAE700ED00E0000000080000001033 -:40A34000F7B5051E01913ED00023C05E002802DBA978FFF7A3FF69680023E85E890100281CDB1A4B82089200D218FF2303271C00C0260740FF00BC400B40BB40B6009559A7 -:40A38000A5432B439351124B00259A68114B9A4202D10199FFF7C0FF2800FEBD03260F2382B213403240B240FC363700314097409140083B9B08064C9B001B19DD69BD438D -:40A3C0002943D961DFE7044DE6E7C04600E100E000ED00E00000000801005600000000000230800803D001300238FCD1C046C0467047EFF3108072B6704780F31088704745 -:40A4000010B5034B1B785843FFF7EAFF10BDC0467005000880220020034B12069A649B6C834200DA0148704700002740030046008022054B120198585B68DBB2002B02D0EE -:40A440008023DB021843704700002640FEE7000002680A4B10B51A6042685A6082689A60C268DA6002691A6142695A6182699A61C269DA61FFF7EAFF10BDC0467012000881 -:40A48000F0B51923002800D14B33E82403268B429B41194F64003A595B42B2431A433A513A59164D2A403A51154C6268B2431343636063681D40656000280ED0002010291D -:40A4C00004D9213088428041404201300F220D4B1968914308431860F0BD1D29F6D901203A29F3D900185729F0D976308842804140420330EAE7C04600002140FFFCFFFFC5 -:40A50000FC0021400000254010B50F240221064A06481358A3430B43135004381358A3431943115010BDC0460000214004F0000010B50F240321064A06481358A3430B43D3 -:40A54000135004381358A3431943115010BDC0460000214004F0000004480549054A43581A40C023DB011343435070470000214004F00000FF8FFFFF04480549054A435864 -:40A580001A408023DB011343435070470000214004F00000FF8FFFFFF7B50600FFF729FFB022E8211F27244D244C01902B595205C900525C3B409B1A5A1E9341B34228D023 -:40A5C000002E2AD180231E4A5B0491690B439361FFF79AFF0B232A59BA4313432B51FFF7BBFFB023E8225B05D2001F21D35C2A59DBB28A430B4013432B51012E09D1092023 -:40A60000FFF7FEFEFFF794FF0D4A0E4993690B4093610198FFF7F1FEF7BD0B232A590920BA4313432B51FFF7EBFEFFF7A5FFB022054B5205D9E7C046000026401CFF0000A2 -:40A6400000F02540FFFFFFFE41070000F8B50400FFF7CFFE251E23D0134E32681F2A08D900251DE0A342FBD019005B690BE04C610EE0E568002D13D02568002D10D00B4DEF -:40A6800000212F683B00002BECD1002FEFD12C60002301256361064B013221611C603260FFF7ABFE2800F8BD646F0008606F00085C6F0008F8B500240500FFF79AFE154F5A -:40A6C0003A68A24206D0144B1E689C463300002B04D11C00FFF791FE2000F8BD5969AB4201D00B00F3E7002901D01C690C611C69002C00D06161B34202D161465D690D6058 -:40A7000006490D68AB4200D10C60013A3A600124E0E7C046646F0008606F00085C6F00087FB506000D00042901D001291ED100201F4B1C68002C02D01E4B984201D104B0AC -:40A7400070BD2379B3420FD1A368002B01D02B420AD1E36801A85A689B6842608360057023689847144B1C606469E3E7134B1C68022904D1104B1C68002C00D024690020F3 -:40A78000002CDCD00B4B9842D9D02379B3420DD1A368002B01D02B4208D1E36801A85A689B68426083600570236898472469E7E7606F0008FF004200686F00085C6F0008EA -:40A7C00070B5194C06002368002B1ED1FFF711FE23680500002B03D004210020FFF7A0FF0421124A13698B431361012E19D030BF2800FFF702FE23680024A34203D00821C3 -:40A800002000FFF78DFF200070BD01210020FFF787FF0028DAD002210020FFF781FF044CF1E720BFE4E7C046646F000800ED00E0FF004200F7B5494D06002B68002B62D1E6 -:40A84000FFF7D7FD2B680700002B03D004210120FFF766FF424C23680194DB061BD5F223404ADB01D158404B1960F021C901515859603E49515899603D495158D9603D495A -:40A88000515819613C49515859613C49515899613B495258DA61B02252055378002B02D05378212B3BD1300007F062FB019B1B68DB061BD5F0212C4A2A4B5068C90158504E -:40A8C00090682A495850D06829495850106929495850506928495850906928495850D069274958501168F222D201995000243800FFF783FD2B68A34203D008210120FFF785 -:40A900000FFF2000FEBD01210800FFF709FF002896D002210120FFF703FF1A4CF1E7E820194B1A49C0005958105CC0B20090186884466446164824020BD41F242140009CB9 -:40A94000A14206D0134952581A50300007F020FBACE700230C4A1350F7E7C046646F0008E0000140000034406C6F000804780000087800000C780000107800001478000032 -:40A9800018780000FF004200000026401CFF0000307F000010180000F0B5002800D16EE0002A00D16BE080279668FF02B6043E40C0275368D4681B061B0C3343167FBF026C -:40A9C000334326043E40E02715693343FF042E063E4033430E1DB6018901335043181668FC33002C01D1DC6002E0012C45D1DE60002D05D154694318FC331C6194695C61FE -:40AA00004418956CFC34A6616B1C17D0F026F027136B36011B023340966B3F0336043E4033430F26976A2D013E403343166C3607360C3343FF2635402B4363623024C0255C -:40AA4000D36AAD001B012340546B401824022C4023430324556AFC302C40FF252343D46BA4012C402343546CF33DA4002C4023438362136AC3630020F0BD0124B3E70148DD -:40AA8000FAE7C0460100B600002070470020704710B50800FEF74AFF431E9841404210BD10B508001100FEF77DFF431E9841404210BD0000F02304481B06C91888428941E9 -:40AAC0008020800008437047FFFF0F0080208000704780204005704780204003704700207047072370B5010082888479C0791A400023052805D805F073F9151D1F21230333 -:40AB00000E230F259600B5400868816AA9431D00B54029438162002C03D10A2B12D00B2B14D070BD0823002CEBD00633012CE8D00023E6E70A23E4E70B23E2E70C23E0E71A -:40AB40000D23DEE7012393408360EAE7012393404360E6E7002313B5040081808371C3714B1C1ED0EFF30583002B0BD1EFF31083002B07D1080000F07BF8002802D00A48C1 -:40AB8000FBF794FEA188080A0E280BD8074BC018C001072319400023206000930822FEF763FF13BD0248F4E7A4710210006480000000324010B5C171FFF793FF10BD10B515 -:40ABC0008171FFF78EFF10BD020000B50020052906D8080005F004F9050D0F1113030E2000BD0820002AFBD00630012AF8D00020F6E70A20F4E70B20F2E70C20F0E70D2087 -:40AC0000EEE70000F0B50E0085B0431C1FD083B203931C0A0E2C1CD8134BE418E401012531033015090F2840FFF7CEFF07000720039BF6B20340039300962B003A000399E5 -:40AC40002000FEF711FF0A2F05D00B2F07D005B0F0BD064CE3E7039B9D40A560F7E7039B9D406560F3E7C046006480000000324070B584B20720260A04400D2E12D8FBF731 -:40AC800031FD0A4A0123915D0D0025411D4006D1A3400B439355FBF72FFD280070BD01256D42F8E70248FBF701FEC046A8050008EF71021070B505000C00FBF713FD012157 -:40ACC0000C20A14068430D00094E33189A6815400BD10A4381599A60621C5A608A4200D95D60FBF709FD200070BDFF24F9E7C04678050008F7B507000C247C43FBF7F2FCAA -:40AD00000E4D2B195B6801932E1971683800FFF7D1FF0090FF2803D0FBF7EEFC0098FEBD73682A59934201D9002373602A19536801999942F0D001335360E5E778050008D8 -:40AD400070B504000D00FBF7CDFC064BA200D158002904D1D550FBF7CFFC200070BD01246442F8E78C6F000870B504000D00FBF7B9FC064BA400E258AA4204D10022E250CB -:40AD8000FBF7BAFC70BD0248FBF790FD8C6F0008C3710210FC22054B1A70BD3A9A71BE32DA72034B034A9A605A617047A805000878050008FEFF000010B590B004004022CD -:40ADC0000021684601F0DCF90C236A46019308330993093B0B93E37C69460293637D20689373237D53730C22A35E01335A1E93416A460132D3770022FEF7FEFF80232268FE -:40AE00001B0611680B43136010B010BDF8B5837C04000E00FF2B13D10220FFF76BFF03284AD8237C3A2B00D988E0C021802289005B1846499B0002435A5002236374A074A2 -:40AE4000637C022B4DD1A47C032C07D83F23404A2340134380223D49D2008B500C2171433C4B4808C01804F0CFFF032C66D84309394A013B934264D83449A2005218A021DB -:40AE8000364E09011B0255583340354EC00035402B43FF25535053582840073DAB430025184350503F231C402E4B284A1C438023DB00D450D35842E00120FFF71BFF0F2816 -:40AEC0000CD8237C3A2B39D8C021402289005B181E499B0002435A500123AFE72248FBF7E5FC0025012B2AD1A47C0F2C26D81F4A3E330C212340134380227143134FD20043 -:40AF0000BB501B4B4808C01804F07EFF124B984219D89022114EA300DB1912010002995830400F4E3140084398503F231C40114B1C438023DB00FC50FB5800E00E4D2800C7 -:40AF4000F8BD0D4DAEE70C4DEFE7C046000001408000004000105E5FFFFF000000FFFF00FF0000FF80FF0080A17202104000004080F0FA0240FF008001004A00F7B53E4BE1 -:40AF800004000D00009299424ED013003B4A9B185A425341DFB2002F47D1394E28003100FBF766F8374901900098FBF761F801000198FBF73DF8431C5CD0334B2060C0185C -:40AFC0006B461B88000C31006060658123812800FBF76EF8FF23A374F73BE374063B23750023E12100126375013BE381A381490220742000FFF70AFF2000FFF7DDFE310068 -:40B000000A23E05EFBF754F81E4905000823E05EFBF74EF806000A23E05EFFF729FE00280DD01A48FBF742FC0127194B1B68002BB3D050221749200001F010F8F7BD0823AE -:40B04000E05EFFF715FE0028EBD10A23E05E2900FFF7D8FD0823E05E3100FFF7D3FD002FECD0502221000B4800F0F8FF0122084B1A60E3E70848D5E70105000000FBFFFF69 -:40B0800050700210B46F021000009FBF187202100C700008388100083F72021070B504000D0000680021FEF789FF29002000FFF7ADFE802322681B0611680B43136070BDAC -:40B0C000C22302689B00D058C005431E9841704710B504002000FFF7F3FF0028FAD0D02322689B00D05810BD82220368920098581A68C005C00D8023120500D4403BC01A30 -:40B10000431E9841704770B504000D002000FFF7EBFF0028FAD029002068FEF759FE70BD10B50020FFF74CFB10BD000010B50020FFF780FB002806D1C82101230248C90068 -:40B1400042581A42FCD010BD000026400378082B03D10122024B9A609A6100207047C046000038400122034BDA67BFF34F8FBFF36F8F704704E100E010B5FFF7F3FF012260 -:40B18000064B07485A60FFF795FA802100204900FFF7EAFD0022034B1A6010BD00003840B8050008107000080222024B5A635B6B7047C046FC00384070B5FFF7D3FFFFF745 -:40B1C000F3FF1A4B1C68002C2FD1012680201E60174A184B00019C501A581749174D1140C42292010A431A5080221549D20099509B582100134A2800FFF7CEFBAE60124820 -:40B20000FFF724FA002802D11048FBF74FFB8021AE6149002000FFF793FD431C01D10C48F3E70C490C48FFF78BF870BD107000084C0C000000000140FF00FFFF0000384088 -:40B2400000FF0080C8720210B80500081C7302103D730210B1B2011074730210044B10B51B68002B01D1FFF7A7FF024BD86810BD10700008FC003840F8B50224094D0A4B6A -:40B28000EF681B6864420600E41B002B01D1FFF793FF3419631D00D9BE1C0122034B2E611A60F8BDFC0038401070000800E100E010B5FFF779FFFFF755FFFBF775F910BD6E -:40B2C0000122024B1A60FC335A60704700E100E00048704714730210C317C0185840704710B5044B0A001B6801001800FBF776F910BDC046DC05000810B55143FBF762F9ED -:40B30000041E1CD00300083B5A6803239A43043A242A16D80300132A0DD900210833016041601B2A07D98160C160242A0DD1030001611833416100221A605A609A602000E1 -:40B3400010BD002100F01CFFF9E703001033F2E7014B18687047C046DC05000870B505000C1E40D0002802D0836B002B3ED00126636E334233D1A3899B0543D52100280040 -:40B3800000F052F8E36A0600002B04D0E16928009847002844DBA3891B062AD4216B002908D023004033994202D02800FBF712F900232363616C002904D02800FBF70AF999 -:40B3C0000023636400F076F90023A381636EDB0714D5A06D00F0F8FA00F074F904E00C22A35E002BCAD10026300070BD00F032F9BDE721692800FBF7EDF8CFE7A06D00F07E -:40B40000E7FAE6E7A06D00F0E1FA0C22A35E002BB4D1636E1E40E6D1A06D00F0D9FAE3E701267642B7E7C046F0B5C64600B50C23CA5E804693B20C00190740D480231B01DD -:40B4400013436268A381002A00DC70E0A66A002E31D042464146156800229BB20A60DA0400D469E0226D5B0706D56368D21A236B002B01D0E36BD21A0023E1694046B04762 -:40B48000431C3DD0A3893A4A13400022626022691BB2A3812260DB0447D44346216B1D60002908D023004033994202D04046FBF791F800232363002004BC9046F0BD2669CF -:40B4C000002EF8D022682660951B00229B0700D16269A260002D04DCEDE736182D1A002DE9DD2B003200E1694046676AB8470028F3DC40220120A38940421343A381DBE76A -:40B50000434619681D29F4D81A4B0122CB409A43EFD1A389164E6260334022691BB2A3812260DB04B9D50029B7D12065B5E7E26B002A00DD8AE7BEE700220123E16940463D -:40B54000B0470200431C02D0A389A66A8BE743461B68002BF8D01D2B01D0162B03D1434600201D60A8E74021A3890B43A381A3E7FFF7FFFF0100402070B505000C000028D5 -:40B5800002D0836B002B16D00C22A35E0026002B0FD0626ED20701D49B0513D521002800FFF742FF636E0600DB0702D4A3899B0504D5300070BD00F04DF8E5E7A06D00F046 -:40B5C00007FAF6E7A06D00F001FAE7E710B5011E04D0054B1868FFF7CFFF10BD034B0449186800F0A5F9F8E7DC0500087C73021079B5011010B5024900F09AF910BDC04677 -:40B600005DB30110002310B5040003604360836081814366C281036143618361082200215C3000F0ADFD2000064BE4612362064B58306362054BA362054BE36200F0C2F95B -:40B6400010BDC046B5C50110DDC5011019C6011045C6011070B50400144D280000F0B6F9A36B002B1DD1124A0421E263B8229200A350B92303229B00E2500833E218043BCE -:40B68000E25060680022FFF7BDFF01220921A068FFF7B8FF02221221E068FFF7B3FF0123A363280000F094F970BDC04688810008F5B5011010B5024800F088F910BDC04652 -:40B6C0009481000810B5024800F082F910BDC04694810008F8B50C000600FBF725FA204FBB685D6803239D431E4B2C1B9C466444240B1D4B013C24039C4207DD002130004E -:40B7000000F046FFBB685B19984204D03000FBF70FFA0020F8BD6142300000F039FF431C0DD00122BB682D1B15435D600F4B30001A68141B1C60FBF7FBF90120EAE7002105 -:40B74000300000F025FFBA68831A0F2BDEDD08490968401A0549086001210B435360D5E7740B0008EF0F0000FF0F0000147000087C0F0008F8B504000D1E3CD0FBF7D4F9C7 -:40B780002900083948680123050003269D434A199C46614F5368B343BE68B24256D06646536006420AD13E0008680836091A2D188868B04265D0CE68C660B0600120D618EF -:40B7C0007668064233D0554B284348604D519D4212D8ED08FF3BAA10FF3B93407A68ED0013437B60EF19BB68CF608B60B960D9602000FBF79DF9F8BD680A042850D8A809A5 -:40B80000020039303832C000381808388368032698424CD05A68B243954230D29B689842F8D1C368CB6088609960C160E0E7ED183B4E9368B34242D0D2682843DA60936022 -:40B84000364B48604D519D42D6D8C2E76246EB18024206D10A68891A88689B18CA68C260906001221A434A602E4AB96012689342BED32D4B20001968FFF72CFFB8E718007D -:40B88000CFE76646D018406830423FD190685D19D368C360986063462B434B604D51A7E7142814D802005C305B32C000ACE70123921093407A6813437B600300B2E7284319 -:40B8C000D9609960CB608B6048604D5190E7542805D8280B02006F306E32C00094E7AA225200904205D8E80B020078307732C0008AE70E4A904205D8A80C02007D307C32DF -:40B90000C00081E7FE207E2280007DE763462B434B6015606CE7C046740B0008FF0100007C0B0008800F00084470000854050000F8B54746CE4680B5B8278046BF00474479 -:40B9400089460026002F14D07B68BC685D1E0DD4A389012B07D90E22A35E013303D021004046C84706436834013DF1D23F68002FEAD130000CBC90469946F8BD70B50D4EDD -:40B980000D4D0024AD1BAD1005D0A300F35801349847A542F9D106F0DFFA084E084D0024AD1BAD1005D0A300F35801349847A542F9D170BD840F0008840F0008840F000853 -:40B9C0008C0F00087047C0467047C0467047C0467047C04610B5034B01001868FAF7F2FD10BDC046DC05000810B5034B01001868FAF7F0FD10BDC046DC050008F0B5574610 -:40BA00004546DE464E46E0B50D000B3583B00700162D00D89FE007239D4300D5C4E0A94200D9C1E0FBF780F8F823FF339D4200D88FE2680A00D1BBE0042800D962E13823C5 -:40BA40009846A80980443930C100D24E71180839CC68A14219D0032362689A431300521B0F2A00DDAAE0002A00DB88E003239C4608E06246636893435A1B0F2A00DD9DE0C4 -:40BA8000002A7CDAE468A142F3D1320034690832944200D190E10323616899438946491B0F2900DD62E172613261002900DB87E0B94A4B46914500D930E1DB08FF3A9910B2 -:40BAC000FF3A8A40DB0071689B190A4399687260E360A1609C601300CC6001218210914099426FD80B4205D103229043490004300B42FBD003239846C3009946B144CC4638 -:40BB000082466346DC68A44507D157E1002A00DB66E1E468A44500D150E14246636893435A1B0F2AF2DD01208046611905436560A068E5680836C560A8604046F160B16018 -:40BB400010434860CE608E603800E250FAF7F0FF2000083021E0102926D83800FAF7E4FF1025182302208B4EF3181A005C68083A944200D12EE1032362689A431300E26852 -:40BB8000A168CA6091600122E318596838000A435A60FAF7CDFF2000083003B03CBC90469946A246AB46F0BD0C2300203B60F4E780213F2340208900984646E7404664E7BB -:40BBC0004B46E0E70323B46862689A439046AA4203D3531B0F2B00DD86E0230043446F4A01936F4B93461B681268EB18013200D168E16C4A944663441B0B1B030093009903 -:40BC0000380000F0C5FC03008146013361D0019B834200D9FFE0644B009A9A461B689C46534662441A60019B1100834200D155E15B461B68013300D16CE14B46019A9B1ABC -:40BC400059185346196007234A46134000D124E1082189465549D21A9144CB1A009A38004A441105090D5B1A19009B4600F090FC431C00D142E14B46C01A012358441843D2 -:40BC800053461B685B441900534619604B46B3605860B44213D043460F2B00D8E8E04346072260680C3B9343063A024005201A436260E218506090600F2B00D922E13C4B72 -:40BCC0001A68914200D919603A4B1A68914200D919600323B46862689A43531B954200D9C9E00F2B00DCC6E00122290013431143651961603800B5606B60FAF719FF20008F -:40BD000008304AE714287AD9542800D9BAE06E239846280B80446F30C10096E65A0A042A73D9142A00D9D0E011005C325B31D20008235B429C46B218944463469A6803231B -:40BD40009846944500D1ABE0434651689943894500D395E092689445F6D16346DA6873686146E260A1609460CC60B6E6012360191D43656070613061C26082601A004B46A3 -:40BD80000A4342603800E150FAF7D2FE2000083003E7C046740B0008FF0100007C0F0008447000080F10000014700008081000003C7000084070000873688EE608239B46C2 -:40BDC000073BDC449B46DA4443465246134200D097E637E0DC680230A34200D155E6CAE60122E318596838000A435A60E368A268D3609A60FAF79CFE20000830CDE65B233D -:40BE0000984680445C30C1001FE69A09110039323831D2008CE7B44200D05AE74F4B009A9A461B689C465346624411001A60FFE608235B429C46E1444B469B680138994598 -:40BE400000D084E043460342F2D173688B4373604900994200D9B5E6002900D1B2E650460B4200D048E6490004300B42FBD043E601234A4653603800FAF75AFE00208CE63E -:40BE800094466AE7AA235B00984211D8DD3B9846E80B80447830C100D7E580235B01DDE68910023B8B40726813437360624657E72B4B98421CD87C239846A80C80447D3068 -:40BEC000C100C2E51033009399E6542A26D84B461A0B11006F326E31D20029E71B0500D0A6E60120009BB268434403435360E6E6FE217E237F2089009846A6E500230120ED -:40BF00009B46BDE6210038000831FAF763FB53461968D4E65B464A461A6094E6AA2149008A4206D84B46DA0B110078327731D200FEE60B498A4206D84B469A0C11007D3261 -:40BF40007C31D200F4E6FE227E219200F0E673687EE72B00E808083305E6C046147000085405000082B000290AD0002A0BD0002B0BD013780B601078431E984102B0704774 -:40BF800001A9002AF3D10020F8E702204042F5E770B5CDB2830734D0541E002A1BD00378AB4219D0032204E0013C14D30378AB4212D001301042F7D1032C0ED8002C0AD083 -:40BFC0000378AB4208D0041902E00378AB4203D001308442F9D1002070BDFF220B061B0C114019430B04084E19430368074A4B409A189A433242E3D1043C0430032CF4D885 -:40C00000DCE71400D8E7C04680808080FFFEFEFE10B5032A1CD903000B439B070FD003780C788218A34204D015E003780C78A34211D1013001318242F7D1002010BD03685E -:40C040000C68A342EBD1043A04300431032AF6D8002AE4D1F1E7181BF0E7C046F0B505000F2A2FD90B0003439B0734D116000C000300103E350901352D01451927681F60DE -:40C0800067685F60A7689F60E7681034DF6010339D42F3D10F239E431036851989191340032B1AD91E1F0023B4080134A400CF58EF500433A342FAD10324A643331D22401B -:40C0C000C918ED18002A05D00023CC5CEC5401339342FAD1F0BD0500F6E71A00F2E7C046F0B588420AD98B18984207D2531E002A03D0CA5CC254013BFBD2F0BD05000F2A2E -:40C1000008D8002AF9D00023CC5CEC5401339342FAD1F2E70B0003439B072DD115000C000300103D2F0901373F01C71926681E6066685E60A6689E60E6681034DE6010334B -:40C140009F42F3D10F24A5431035491914404519032C13D90023271FBE080136B600CC58EC500433B342FAD10326B7433C1D09192D193240C7D1C0E70500C4E72200C0E70A -:40C18000F0B5830743D0541E002A3FD0CEB20200032502E01A00013C38D3531C16702B42F8D1032C2AD9FF220A40150215432A0415430F2C14D927001A00103F3E090136B1 -:40C1C00036019E19156055609560D56010329642F8D10F2297431037DB191440032C0DD91A00271FBE080136B6009E1920C2B242FCD1032297430437DB191440002C05D07B -:40C20000C9B21C19197001339C42FBD1F0BD14000300C6E7F0B54E464546DE465746E0B585B001900E001500002900D19EE037000198083FFAF778FC7A68032314009C4384 -:40C240002B000B33B946162B47D8102110238846454546D89C4249DACC4938198B4689680290884200D1C2E001218A46406801000390504681438C4602998B46DC44614697 -:40C28000496801424DD0104200D1A2E029000198FAF798F9051E39D0012302007968083A99437F18BA4200D12EE1221F242A00D914E1132A00D9E8E003003200116819605E -:40C2C0005168596092689A60019C31002000FAF781F92000FAF72CFC1BE007218B439846B6D50C23019A0025136012E035004346E31A0F2B25D84B46012249465B6813404D -:40C3000023434B604C4463681A4362600198FAF70FFC280005B03CBC90469946A246AB46F0BD032103988C46884321188B46994221DB029A3500D36892685C46D3609A60BB -:40C34000D5E74A460120464652684946024032434E464144034372604C444B6063680831184360600198FAF735F9CFE71100FAF729F90500CDE75146114200D086E7614620 -:40C380003A68BA1A924652688A4380188346A3449B4526DB029AD3689268D3609A605346524655469268DB680835D3609A60221F242A00D996E0132A72D95346316899607D -:40C3C0007168D9601B2A00D9A4E032001033083268E03A68BA1A924651460322496891430A009346A3449B4500DA4FE7D7E703200299844649688143404609191030029014 -:40C40000814258DAD20700D540E760463A68BA1A9246526882430298511803918842E0DC5346524655469268DB680835D3609A60221F242A00D98EE0132A00D888E0534643 -:40C44000316899607168D9601B2A00D988E0320010330832116819605168596092689A6051465B46424641449960039B01989A1A01231A434A6052465268134042461343B4 -:40C4800052465360FAF754FB43E733680360736843601B2A2DD803003200083308320DE72B00320011685C4619605168D146596092689A601BE74346FA185B469A60434634 -:40C4C000C91A0123194351607A6801981340424613437B60FAF72CFB35001AE73100FFF7FFFDF1E631002800FFF7FAFD5C46D146FDE6B3688360F368C360242A15D00300C5 -:40C50000320010331032D9E6536803229343E4183500ECE65346B1681961F1685961242A0CD0320018331032BCE733693200036103007169183318324161BFE653463269E2 -:40C5400051469A613200706920331832C861A9E72B0032007EE731002800FFF7C1FD7FE75346B1681961F1685961242A03D03200183310326EE75346326951469A61320027 -:40C58000706920331832C86164E7C046740B0008002370B5064C050008002360FAF79EFA431C00D070BD2368002BFBD02B60F9E7AC81000870B50C000E25495F03F062FB78 -:40C5C000002803DB236D1B18236570BDA389024A1340A381F9E7C046FFEFFFFFF8B516001F000C228B5E05000C00DA0507D50E23C95E0022022302F0E9FF0C22A35E054A40 -:40C6000028001340A38132000E23E15E3B0001F03BFFF8BDFFEFFFFF70B50C000E25495F02F0D4FF431C06D08023A2895B011343A381206570BDA389014A1340A381F9E788 -:40C64000FFEFFFFF10B50E23C95E01F031FF10BD70B5CCB2002C3BD083070ED00378002B5BD09C4233D0032204E00378002B54D09C422CD001301042F7D1FF2529400D023B -:40C6800029430D040D4329000268264B5140D3189343244A244E8A188A43134333420CD12900043002681F4B5140D31893431D4A8A188A4313433342F2D00378002B04D1FF -:40C6C0002BE001300378002B27D09C42F9D170BD83070AD00378002BF9D0032202E00378002BF4D001301042F9D101680D4A03008A180D488A43024206D104331968094A4E -:40C700008A188A430242F8D01A781800002A06D001300378002BFBD1D9E70020D7E71800D5E7C046FFFEFEFE80808080024670B50A4392072AD11E4DEE0104C808C9541B0C -:40C740009443344017D0D0B2D9B2401A2106014310D190B299B2401A210401430AD110021902000A090A401A2102014302D1100E190E401A70BD9A42DFD010BA19BA88420D -:40C7800001D9012070BD0020C04370BD02780B7801300131002A09D09A4207D102780B7801300131002A01D09A42EFD0D01A70BD01010101031C0A7801311A700133002A1E -:40C7C000F9D1704710B5830725D00378002B24D00300032102E01A78002A1AD001330B42F9D119680E4A0F4C8A188A43224206D1043319680A4A8A188A432242F8D01A0041 -:40C800001B78002B03D0013211780029FBD1101A10BD181AFCE70300E3E70020F8E7C046FFFEFEFE8080808030B50024002A39D003000B439B0720D1032A1ED903680D68BB -:40C84000AB421AD1043A002A2CD01A4D5D199D432B00194D2B420CD024E003680C68A3420BD1043A002A1FD0124C1C199C432C421AD104300431032AEFD803780D78013A87 -:40C880009D4213D1002A0FD0002D0DD0012304E09A4209D00133002C06D0C45CCD5CAC42F6D0641B200030BD0024FBE71C00641BF8E7C046FFFEFEFE8080808030B5047846 -:40C8C000002C1DD00D78002D14D0A5420FD00B0001E0A2420BD001331A78002AF9D101300478002CEFD11A780023002A00D00300180030BD013004780B00002CE3D1F2E79D -:40C900000023F5E70123F0B54746CE469446012298460124002580B552422B198B420BD28618C75C365DB7422DD29C1AA0461D0001242B198B42F3D3444663461C600123DE -:40C940009946023B0124002598462B1999420DD946468619C75C365DB7421CD944461C1BA1461D0001242B199942F1D84346501C0133834203D362464946180011600CBC81 -:40C9800090469946F0BDB7420DD001232A00984601350124C1E7B74209D00123A846994601350124D1E7444505D00134B5E74C4504D00134C9E71D000124AEE71D000124A8 -:40C9C000C3E7C046F0B5DE4657464E464546E0B515007B4C0600A54403AA0F00280019001C00FFF78FFF8346FFAA04AB143210C39342FCD1631E2900A446002C09D0082464 -:40CA00000A7802A89200001983500131013BF6D26446039B5A46E9182800FFF7F9FA002800D074E000231A009A46631E9846594601233800A14617004446B0465B1A0193D2 -:40CA4000009156464E44321A00214044FFF7A0FA002853D1002E51D0434608219B19013B1B7802AA9B005218D358002B0AD0002F04D0039A934201D24B469B1A9A44002732 -:40CA80003000DEE700993B008F4200D20B00A3420DD24246524402E00133A34207D2E85CD15C8842F8D0019A52449246E6E7009B591E9F4200D37DE042465244505C6B5CBC -:40CAC000984200D074E07B1E9B462300B4465C4616009B4604E0EA5CF05C824203D119004B1EA342F7D166465C4601378F4263D84B46039F3000BA44DF1BA2E70020314BB9 -:40CB00009D443CBC90469946A246AB46F0BD5B46E31A5B454AD30133039300239A46631E98465A4601233800A14657464446B0469B1A00934B46FE18321A00214044FFF784 -:40CB400027FA0028DAD1002ED8D0434608219B19013B1B7802AA9B005218D358002B22D14346D819A3450CD25B46C15CEA5C914204D015E0E95CC25C914211D10133A342AB -:40CB8000F8D35B46013B02D2B9E7013BB7D3E95CC25C9142F9D0039B30009C466744C9E7009A94466744FF183000C3E75B46B2E700999AE7190098E7404650449FE7C046E7 -:40CBC000ECFBFFFF14040000F0B557464546DE464E46E0B5037885B007000D00002B35D009780A1E00D19FE02C00012602E02278002A0BD09B1A5A42534101301E4003786E -:40CC00000134002BF3D12378002B22D13800002E06D005B03CBC90469946A246AB46F0BD781CFFF715FD641B061E12D0012CF0D03F190121B84200D8391A0F001F2C0AD909 -:40CC400023002A003000FFF7BDFEE2E70B78002B6AD00020DDE703AA21002800FFF752FE039B80460200E9182800FFF7D1F900285CD1002399464346013B0093424601230B -:40CC8000B24638004E464F469B1A0193E3191A1A002150449946FFF77BF90028D9D14B46002BD6D04346B04500D233009C420FD95246D218E95CD25D91422ED15246D019DE -:40CCC00003E0E95CC25C914227D101339C42F8D1009AB04576D9BC46D4446146009BC95CEB5C99426ED1731E9B466346A4465C46B3461E0004E0E85CF15C884203D11A009D -:40CD0000531EA342F7D164465E46013696425BD8039E4846BF19A61BB8E7019A002694466744FF184846B1E7380072E74346E31A434500D24346013303930023424699460D -:40CD400001339B1A4A46B346B14638009A461600C344A7193A1A00214844FFF719F9002800D076E7002F00D173E74B46981944450FD95B46995D43464846EA5C801991428A -:40CD800004D016E0E95CC25C914212D101339C42F8D14346013B00D23BE7C15CEA5C914204D00AE0E95CC25C914206D1013BF9D22FE75644F6183800CBE7039B38009C4694 -:40CDC0006644C6E74246A0E7B9465046484420E7F0B5DE46454657464E46E0B5C3B00D00069114000F93099002F0E2FB036818001993FFF7E7FC1890AB891B0605D52B69E3 -:40CE00000793002B01D101F063F832AB25930023A34625AFBB607B6014931693159332AE17931A930A935B461B785C46002B1CD0252B02D119E0252B03D001342378002BB1 -:40CE4000F9D15B46E51A10D05B463360BB6875605B19BB607B6801337B60072B2EDC08360A9B9C46AC4463460A932378002B2ED0631C9B46002316AAD377012252429246A4 -:40CE8000002200210B9220329146203263788846002000249446594601311A00203A582A00D9FDE2D74D9200AA5897460B9B0F925B420B9304231C430B78EDE73A00069904 -:40CEC000099802F0F3FE002809D132AEC8E7BB68002B04D03A000699099802F0E7FE069B9B895B0601D501F0CEF80A9843B03CBC90469946A246AB46F0BD01220B789046B3 -:40CF00002B20C9E74B1C9B460B782A2B01D101F01BFA1A000021303A8A465946092ABCD80300110050465A469A46A34683001B1814785B0058182100531C30391A000929BE -:40CF4000F4D9524619008246230010005C46A4E780231C430B789FE78B4641461293002901D001F01FFA10231C430F9AA30601D500F088FEE30601D500F080FD630601D465 -:40CF800000F07CFD0021535E0C930432DB170D930F9201D500F086FE0C990D9A080016ABDB7F10439846020001235146013100D1FFE08021200088430890002A00D0FCE0AB -:40CFC0005246002A01D000F02CFC002B01D000F004FD012032AB20400E90119308D02723302128AAD15416AA944648336344119353460E9A0793924500DA07920023139341 -:40D000004346002B02D0079B013307930223089A1A40914602D0079B023307938423089A1A40109200D04DE20B9B079A9C1A002C00DC47E27449BA687B688846102C1FDD85 -:40D0400031001025464603E0103C0831102C15DD103201330E604D60BA607B60072BF3DD3A000699099802F021FE002800D036E7103CBA687B6832A9102CE9DCB0460E00CF -:40D08000414674600133A4183160BC607B60072B01DD00F0A8FC16ABDB7F0836984612E28B4641461293002901D001F077F907220F9B07339343013294469C4462460F925D -:40D0C0001A6816925B6801221593159B169D5B005B08984652424D4B2800414604F062FE002801D000F0FDFD0122484B52422800414603F037F8002801D000F0F2FD002252 -:40D1000000231698159903F023F8002801D001F022F816ABDB7F9846129B472B01DD00F0C7FE3B4B119380239C437D3B07930E93002308949A46139362E70022303B1500E4 -:40D140001A000300079408002C009B46A3001C190378640014191A000131303A0800092AF4D90B945846079C97E608231C430B7892E6129310231C438B46A30600D57BE17C -:40D18000E30601D500F07EFC630601D400F07AFC0F9B1A880C92002204330F9300230D920C9A002116A8C17788465146013100D0FFE6002A00D135E30894012B00D1E5E37E -:40D1C000022B00D062E3179C0F20A146B44632AB19000C9A0D9B04004D4614402C5D1E07150901392E430C701C092300340032001C43F0D10C920D9332AB5B1A119166465C -:40D200000E93F5E69073021038750210FFFFEF7FF4740210129310231C438B46A30600D511E1E30601D500F031FC630601D400F02DFC0F9B1A880C92002204330D920F9389 -:40D240000C9A0123ADE78B4641461293002901D001F090F8B84B1793A30600D5ABE0E30601D500F007FC630601D400F003FC0F9B1A880C92002204330D920F93E30700D409 -:40D28000A9E00C990D9A0B0013431A000223002A00D186E730201EA9087048256846401900781C4348707CE78B464146002901D001F083F8A30601D500F0E9FDE30601D5CA -:40D2C00000F09BFD630601D400F097FD69460F9B098D1A680433079211800F93A3E54B461C430B78D8E512930F9B8B461D1D1B6816A91A0011930023CB77002A01D100F00D -:40D30000FBFE5346013301D100F038FE524600211198FEF73DFE002801D100F054FF119BC31A1A000E93DB43DB171A4016ABDB7F0792984600230F9508949A4613935FE6F2 -:40D340000F9A1293136828AD07936B461B7F8B462B70002316A9CB77130004330F93002308949846013307930E93002311959A4613934BE68B4641461293002900D1F4E552 -:40D3800016ABD877F1E563461C430B7884E50B786C2B01D100F086FD102214437CE58B4641461293002901D000F0E8FF634B1793A30600D453E707220F9B07339343013257 -:40D3C00094469C4462460F921A685B680C920D93E30700D555E70C990D9A0800104302230200DEE68B460F9930220B680C9300230D9302331C431EAB1A7048325A700B0044 -:40D4000004330F934D4B129217930C9A0223C8E601231C430B783FE50F9B1A1D1B680B93002B00DA42E50B780F9235E50B78002800D031E50122203090462DE58B461293BC -:40D44000A30600D4EDE607220F9B07339343013294469C4462460F921A685B6811001A00080010430C910D920123020099E68B461293A30600D483E607220F9B0733934358 -:40D48000013294469C4462460F921A685B6811001A00080010430C910D920023020080E68B4641461293002901D000F07FFF129B002B00D10BE528AD2B70002316AAD37709 -:40D4C00008944EE7BC684346002B0FD016AA1F23944663443360012373607B6801340133BC607B60072B00DDB3E108364B46002B0CD01EAB3360022373607B68023401333A -:40D50000BC607B60072B00DDAFE10836109B802B00D120E153460E9A9D1A002D3CDD084A7B689146102D2CDD102221009246099C32002E004D4609E0047502101875021089 -:40D5400048750210103E0832102E16DD50461031013315605060B9607B60072BF2DD3A000699200002F0A2FB002800D0B7E4103EB9687B6832AA102EE8DCA9460C00350083 -:40D5800016004A466419013332607560BC607B60072B00DD51E10836089BDB0500D5B6E0119B33600E9B9C4673607B6864440133BC607B60072B00DD9DE00836089B5B0727 -:40D5C00041D50B9B079A9D1A002D3CDDC44A7B689046102D26DD102221009146099C32002E00069D03E0103E0832102E17DDBC4810311060484601335060B9607B60072B0E -:40D60000F1DD3A002900200002F050FB002800D065E4103EB9687B6832AA102EE7DC35000C00160042466419013324C6BC607B60072B08DD3A000699099802F037FB00289E -:40D6400000D04CE4BC680B9B07998B4200DA0B000A9A94469C4463460A93002C00D0D6E0002332AE7B60FFF7DEFB149B012B00DCAEE0119B01343360012373607B68BC60DC -:40D6800001337B60072B00DDDFE20836199A01333260189A9846944664447260BC607B60072B00DDDEE20836002200231698159902F048FD002800D0A4E1119D149B013504 -:40D6C000013B35607360E41801239C46E0444346BC607B60072B00DD8BE0083621AB33601A9B9C467360434664440133BC607B60072B00DC61E73A000699099802F0D6FA71 -:40D70000002801D0FFF7EBFBBC6832AE56E7129B652BAADD002200231698159902F012FD002800D1E2E06F4B01343360012373607B68BC6001337B60072B00DD66E3083695 -:40D740001F9B149A934200DAA4E1089BDB0700D5A0E1BC6832E70B9B079A9D1A002D00DCD8E6614A7B689146102D25DD102221009046099C32004E4603E0103D0832102D51 -:40D7800017DD40461031013316605060B9607B60072BF2DD3A000699200002F087FA002801D0FFF79CFB103DB9687B6832AA102DE7DCB1460C0016004A4664190133326054 -:40D7C0007560BC607B60072B00DD7EE20836A1E60123089A134200D04BE773607B68119A013301343260BC6098467B60072B00DC73E73A000699099802F058FA002801D0BC -:40D80000FFF76DFB7B68BC68984632AE66E73A000699099802F04AFA002800D120E7FFF75EFB089C012B00D184E1022B29D10894002300240C930D94C5E43A000699099806 -:40D8400002F034FA002801D0FFF749FBBC6832AEA2E63A000699099802F028FA002801D0FFF73DFBBC6832AE40E63A000699099802F01CFA002801D0FFF731FBBC6832AE49 -:40D8800044E60894002300240C930D940C980D995B4632AA07939146B34600E0A1464A0794464B4665465C1EC6080723CA08354311002A0003403033237028000A43EDD159 -:40D8C0000C900D9107995E468B4608994A461194C90700D53DE132AB1B1B0E93FFF788FB3875021034750210487502101F98002800DC96E2139A1499130090468B4200DDAA -:40D9000088464346002B0CDD119B44443360434673607B68BC6001337B60072B00DDB7E308364346DB434246DB171340139AD31A9846002B00DC28E1102B01DC00F0E7FC7D -:40D94000CF4A2100914610227B689246099D32004C46464604E00832103E102E00DC04E150461031013314605060B9607B60072BF1DD3A000699280002F098F9002801D0A8 -:40D98000FFF7ADFAB9687B6832AAE5E70D9B002B00D1CAE00C9C0D9D32ABB1461E00200029000A22002302F019FC013E303232700023200029000A2202F010FC030004000D -:40D9C0000D000B43EBD1320032AB9B1A11960C940D954E460E93FFF70BFB00230E9332AB1193FFF705FB3A000699099802F05EF9002801D0FFF773FA16ABDB7FBC689846BB -:40DA000032AE60E5149B5D1E002D00DC66E69C4B9946102D29DD102332009A462E0021004346099C4D4603E0103E0832102E17DD50461031013315605060B9607B60072BF1 -:40DA4000F2DD3A000699200002F030F9002801D0FFF745FA103EB9687B6832AA102EE7DCA9460C003500984616004B4675603360641929E60F9B1A68FFF7FBFB1368079390 -:40DA8000FFF782FA0F9B1A68FFF784FB0F9B1A68FFF7D1FB199BBA683360189B9C4673607B68624401331400BA607B60072B00DD02E20836149B5D1E002D00DC7EE5704A4D -:40DAC0007B689146102D25DD102221009046099C32002E004D4603E00832103E102E15DD40461031013315605060B9607B60072BF2DD3A000699200002F0D8F8002801D008 -:40DB0000FFF7EDF9B9687B6832AAE6E7A9460C00350016004A466419013332607560BC607B60072B00DC48E5E5E50C9B092B00D930E7089C27220C9B28A930338B540123DC -:40DB400016AA94460E936E33634408941193FFF74FFA302B00D10BE23023023A137032AB9B1A0E931192FFF743FAB046A14616000C004A4632604246444401337260BC601C -:40DB80007B60072B00DD9CE208361F9B149A93424CDB089AD20749D4149A1399D31A521A90469A4200DD98464246002A0FDD1399119A8C4662443260424672607A684444E0 -:40DBC0000132BC607A60072A00DD86E208364246D543ED1715405D1B002D00DCEEE4284A7B689146102D95DD102221009046099C32002E004D4603E00832103E102E85DD55 -:40DC000040461031013315605060B9607B60072BF2DD3A000699200002F048F8002801D0FFF75DF9B9687B6832AAE6E7199A3260189A944672607A6864440132BC607A605C -:40DC4000072A00DD30E20836A6E73A000699099802F02CF8002801D0FFF741F9BC687B6832AE13E53A000699099802F01FF8002801D0FFF734F97B68BC68984632AE13E5C5 -:40DC800048750210072307329A4301339C46944463460F93536812680D930C92002B01DBFFF77AF90C980D99002342428B4111001A002D2316A8C377080010430C910D9272 -:40DCC000984602002C3BFFF770F93A000699099801F0ECFF002801D0FFF701F9BC6832AE18E41699159D0A0008002B00290004F059F8002800D0E6E25346013300D10DE2E6 -:40DD00002023129A9A430E92472A00D11CE180235B0023430893159B002B00DA21E2169A0793002391461093129B662B00D1FCE1462B00D1DBE00E9A0998453A130059423B -:40DD4000594120AB0D0003931FAB0293022323AA55441B92049200930195079B4A4600F063FC129B1190672B00D039E2119B9846A844E30700D48BE20023002248460799E5 -:40DD800002F0E0F9434600280AD1239B434507D2302140465A1C23921970239B9842F9D8119A9B1A14930E9B472B00D1F6E0129B652B00DC26E2129B662B00D1F4E11F9B71 -:40DDC0001393149B139A1900914200DDD4E1E30700D549E2D343DB1711001A40672307920E911293109B002B00D0CFE016ABDB7F984600239A46FFF703F90F9A0A991368D5 -:40DE00001960130004330F93FFF70DF83A000699099801F04BFF002801D0FFF760F832AE8EE4DE4B01343360012373607B68BC6001337B60072B7ADC0836002807D1149BC9 -:40DE4000002B04D1089BDB0701D4FFF7B7FB199B3360189B191973607B68B96001337B60072B00DDF2E132000832002800DACCE111980133106014987B6044185060BC609D -:40DE8000072B00DD37E408321600FFF797FB0F990A9A0B681A60D2175A600B0004330F93FEF7C1FF4B4601311C430B78FEF7F4FFBB4B1193FFF737F93A000699099801F023 -:40DEC000F5FE002801D0FFF70AF8BC6832AEF1E540210998F8F776FB069B18601861002800D14FE24023069A5361FEF78EFF23AB1B93049320AB03931FAB0293534601930D -:40DF000003234A4600930998079B00F08DFB55461190119B9846129BA844462B00D02BE7119B1B78302B16D01F9B984424E73A000699099801F0BAFE002801D0FEF7CFFF2B -:40DF40001F98BC6832AE78E75346002B00D0DEE601339A46DBE6002200234846079902F0F1F80028E0D101235B1B1F93984403E7119A32AB9B1A0E93FFF73AF81198FEF77D -:40DF800021FC02000E900300FFF7CDF92D2316AAD377984600239A46FFF735F81F9B1393DA1C02DB9A4500DB0BE7129B023B12932C22139B48215D1E16AB9B186A465218AB -:40DFC00012781F951A70002D00DAA4E12D212B2316AA52181370092D00DC4CE116AA3B23944663449A46B146A046564600E0260028000A2102F078F8741E303121702800E6 -:40E000000A2101F08BFF05000928F0DC23004446B0464E46994603003033D8B24346023B18709A4500D8B4E142461B9B4546991A012307315B4201E0E85C013321AAD21815 -:40E04000D0708B42F8D116A98C462E224B4662449446FB1A634421AA14999B1A9C460A0062441A930E92012900DC45E1189A0E9B944663441A000E93DB43DB171A400023C0 -:40E0800007921393AEE601235B420A93FEF72DFF3A000699099801F009FE002801D0FEF71EFFBC6832AE3CE43A000699099801F0FDFD002801D0FEF712FF1F9BBC6832AE4B -:40E0C0006AE53A000699099801F0F0FD002801D0FEF705FFBC6832AE57E53A000699099801F0E4FD002801D0FEF7F9FE149B1F9ABC689B1A32AE6AE553460793062B01D968 -:40E1000006230793079B0F950E93002398469A461393244B08941193FEF778FF2023129A9A431A3B0E929A46F1E523AB1B93049320AB03931FAB02935346019303234A4666 -:40E1400000930998079B00F06FFA03005344119098465546E4E62D2316AAD3779846FEF7DBFF802212069446169B9946159B634407932D231093D7E5189A149B9446139A3F -:40E1800063440E93002A00DCCEE01A00DB43DB171A4067230792129324E6C04634750210F87402102C7502101F9B1393002B00DCD5E05246002A00D092E0E20700D58FE0CE -:40E1C00007930E930EE616ABDB7F0F959846534607930E93002308949A461393FEF710FF119B9846129BA844472B00D0C4E5E30700D58EE6239B119A9B1A14930E9B472B15 -:40E2000000D1CBE61F9B1393D2E64442103000DBD0E06E481026050003E00832103C102C38DD1031013315605660B9607B60072BF3DD3A000699099801F038FD002801D019 -:40E24000FEF74DFEB9687B6832AAE7E73A000699099801F02BFD002801D0FEF740FE1F98B9687B6832AA00E6189A139B944663441A000E938AE72E21302316AA5218137018 -:40E280002B0016AA013130335218137022ABE2E6239B85E5A94648460919013310605460B96008327B60072B00DCE1E53A000699099801F0FBFC002801D0FEF710FEB968BC -:40E2C0007B6832AAD4E5159B002B38DB16ABDB7F9846129B472B2EDC3D4B1193FEF723FF189A139B9446634453441A000E93DB43DB171A40079275E501232340139300D0C6 -:40E30000B4E60E9AD343DB171A4007926AE52F4A7B6891462DE40123139A1B399D1A16AA2C335218137056E60E9B139A981A431C1A000E932AE7274B1193FEF7F4FE2D2369 -:40E3400016AAD3779846C4E70F9B1A1D1B689A46002B36DB4B780F925946FEF79DFD5346002B01D1E30703D5189B581C0300BBE7012325E716ABD877FEF76CFF16ABD87724 -:40E38000FFF714F80C23099A13600D3B0A93FEF7ACFD16AA2E23944663445CE616ABD877FEF785FE16ABD877FEF7DDFD16ABD877FFF77DF8054881466DE716ABD877FEF770 -:40E3C00079FF01235B429A46C4E7C04648750210FC7402100075021030B504009BB01800002A2EDB82236D469B00AB8100910491002A11D00123013A5B4202920592EB8119 -:40E4000002001E9B69462000FEF7E2FC431C12DB0023009A13700CE001235B4202920592EB8102001E9B69462000FEF7D1FC431C04DB1BB030BD8B232360E9E78B2323603B -:40E44000F7E78B23012023604042F2E710B50400054882B00068009313000A002100FFF7BBFF02B010BDC046DC050008002904D0FF2A04D801200A7070470020FCE78A236E -:40E48000036001204042F7E770B50500080011000022064C22601A00F8F7F1FB431C00D070BD2368002BFBD02B60F9E7AC810008002370B5064C050008002360F8F7C0FBF9 -:40E4C000431C00D070BD2368002BFBD02B60F9E7AC810008F0B545468046DE4657464E464246E0B50C69126985B00B0002910020944200DD90E014229446634499464A460B -:40E50000013CA300D6181422424493469B4433681500591C5B461868019201F075FC031E009042D0290000274D460020B146A2463E0004009C462F0008000395634604CF4A -:40E5400015042D0C5D43120C5A43AD192B0CD21803682D041904090C0919160C2D0C1204491B120C1B0C9B1A0A149B1809041C14090C1B04194302C0B945DFD2039B4E4607 -:40E5800099465B461B685446002B0ED15B46019A043B9A4204D306E0043B013C9A4202D219680029F8D043461C610299404601F055FA00282FDB4F460020009B019D013347 -:40E5C00000932B6802CF1A04120C10180A04120C821A090C1B0C5B1A11145B1812041814120C1B04134308C5BE42EAD20199A3008C4663441A68002A0DD1043B0A009942ED -:40E6000004D306E0043B013C9A4202D219680029F8D043461C61009805B03CBC90469946A246AB46F0BDC046F0B557464E464546DE46E0B5016C99B082461D0016001F0009 -:40E64000002909D00123426C93404A608B6000F0F9FF002352461364B846002F37DB0023259A13604246D64B1A409A4218D0002200233000390001F065FD00282FD001239D -:40E68000249A1360269B002B00D12AE2CD481860013819B03CBC90469946A246AB46F0BDC94B249A1360002E0BD14346180308D1269BC648002BECD003000833269A1360AB -:40E6C000E7E7269BC248002BE3D0C31CF6E70123259A68001360430898461F00C2E716AB019317AB009332003B00504601F06CFA434683461A0D00D1D6E13B03B54C1B0BCE -:40E700001C43B54B30009846169B21009946002390440F930022B14B03F02EF8B04AB14B02F0AAFDB04AB14B01F062FE040040460D0003F08BFBAE4AAE4B02F09DFD020086 -:40E740000B002000290001F053FE04000D0003F049FB0022039000232000290001F0F8FC002800D0B1E20123039C0C93162C10D8A149E300C9183200086849683B0001F071 -:40E78000FBFC002800D11DE32300013B039300230C934B4642469A1A002306931300013B049300D5A1E2039B002B00DA84E29C460D930023049A9946110061440491229BB8 -:40E7C000092B00D98FE10124052B02DD0024043B2293229B032B01D100F0CEFC01DC00F092FC229B042B01D100F040FC01230B93229B052B01D000F08BFC239A039B944668 -:40E8000063440E93013307931D1E01DC00F049FD079B98460023524600215364172D0AD9012204335B0018001430110001328542F8D253465964504600F0DCFE5346186489 -:40E8400043460A900E2B00D961E1002C00D15EE110961197039E002E01DC00F025FD32000F21654B0A40D2009B1836111C685D68F30601D400F0CAFC604B0E401A6A5B6AA2 -:40E880001098119902F0C4F80323984608900991002E11D0594F0123334209D09C463A687B6820002900E04402F0E6FC04000D0076100837002EEED12200089809992B00FF -:40E8C00002F0A6F806000F000C9B002B09D00022404B3000390001F03BFC002801D000F0C2FD404603F0B2FA32003B0002F0C4FC0022434B01F07CFD424A0B00944663446C -:40E90000089009910993079B002B01D100F050FC039B1393079B12930B9B002B01D100F01DFD129B00205A1E334BD2009B181A685B68354902F06CF8089A099B02F01CFF42 -:40E94000089009913900300003F04CFA040003F07DFA02000B003000390002F00DFF05000E000A9A3034511CE7B2149117703300089809992A0001F0FFFB002801D000F021 -:40E98000FEFD2A0033000020124902F0F5FE02000B000898099901F0EFFB002801D000F0E7FD129B012B01D100F078FC0A9A129B9446634498464B461293149B994638E00D -:40E9C0000000F07F357502100F2700005C760210687602100000F03F01FCFFFF0000F83F61436F63A787D23FB3C8608B288AC63FFB799F501344D33F9876021070760210CB -:40EA000000001C400000C0FC0000E03F2A0033000020B94902F0B0FE089A099B01F098FB002801D000F074FDA146444501D100F033FC089809990022B04B02F01DFC00226F -:40EA4000AE4B089009912800310002F015FC0D00040003F0C7F9070003F0F8F902000B002000290002F088FE4B463037FFB25C1C1F70089A099B05000E0001F069FB00280C -:40EA8000C4D0139B03935946504600F0DBFD00232370039B249A01331360269B002B00D1A8E31C600A98F4E5169B9946179B4B441C00934BE318202B00DC7EE13100914A31 -:40EAC0004046A218D1400A004021CB1A9840104303F0FEF9631E984601238B4D0F93491918E68A48D5E50023524600215364504600F080FD5346186401235B4207930E93D0 -:40EB0000023300220B9300230A9023922293179B002B00DAABE0039A0E2A00DDA7E07C4BD2009B185C681B6804930594239B002B00DAA7E2049C059D300022002B00390037 -:40EB400001F066FF03F04EF9804603F07FF922002B0002F091FB02000B003000390002F00BFE43460A9A30331370079B06000F00541C012B4ED00022604B02F07DFB0022BB -:40EB8000002306000F0001F0DDFA002800D07AE70A9B079A9D1C9C465B46069353466244AA46049C059D914607930FE00022534B02F062FB01239C460022002306000F00A1 -:40EBC000E24401F0BFFA002800D0D9E222002B003000390001F01CFF03F004F9804603F035F922002B0002F047FB02000B003000390002F0C1FD53464246013B303206008D -:40EC00000F00D3461A70D145D0D1069B54469B46079B9A4632003B003000390001F0E8FB06000F0002000B000498059901F090FA00280CD10498059932003B0001F082FA33 -:40EC4000002800D11FE74346DB0700D41BE7651E2F780A9B06E09D4200D151E3023C27782C00013D392FF6D001372F700BE70B9A002A4FD0229A012A00DC2CE2079B5C1EA2 -:40EC80004B46A14500DAB8E21C1B079B002B00DAD4E3069B0893079B069A012194469C4462460692049A504694469C446346049300F060FD804632E0069A039BD21A5B4220 -:40ECC0009946002306920D9379E5039803F0BEF80B0002002900200001F034FA020050425041039B1B1A03933DE501239B1A06930023049357E5C0460000F03F0000244012 -:40ED00003204000012040000000010FE3475021098760210069B4C4608930023984608990B1E0EDD049A002A0BDD934200DD87E1069AD21A0692089AD21A0892049AD31A79 -:40ED400004934B46002B1AD00B9B002B00D1BBE1002C10DD41462200504600F0BFFD5A4601008046504600F00FFD05005946504600F068FCAB464B461A1B00D0A5E101215E -:40ED8000504600F0F7FC0D9B8146002B1DDD1A000100504600F0A2FD229B8146012B00DC50E100244B461B6903339B004B44586800F098FC20231B1A10E020223000D31AA5 -:40EDC000984085E600230C93E3E4229B0024012B00DC8BE10D9A0123002AE3D104991F208C466344184000D1AEE020231B1A042B00DCCCE31C23181A069B9C4684446346A6 -:40EE00000693089B9C46844463468C468444089363460493069B002B05DD59461A00504600F0BCFD8346049B002B05DD49461A00504600F0B3FD81460C9B002B00D094E0F7 -:40EE4000079B002B00DC75E10B9B002B00D1A6E0089B002B05DD41461A00504600F09EFD804643460C93002C00D050E2079C0A9A013C2300944663440893012333400793E9 -:40EE80004B4606930C9B574645465E4692469846069B300019009946FFF71CFB03000B90303329003000049300F0D8FD494604004246380000F0ECFDC3688146002B00D05A -:40EEC0001EE10100300000F0C9FD83464946380000F0B8FB5B46229A134303D1079B002B00D106E3002C00DAA8E1229B1C4303D1079B002B00D1A1E15B46002B00DD82E23F -:40EF0000694652465346097C5C1C1170089A524500D18AE2310000230A22380000F09CFB002306000A2229003800454500D1E1E000F092FB4146050000230A22380000F06C -:40EF40008BFBA2468046A3E71C20069B9C46844463460693089B9C46844463460893049B9C4684446346049354E74946584600F075FD002800DB63E7039B5946013B0393CA -:40EF80000A220023504600F067FB0B9B8346002B00D0CAE20E9B002B00DCD8E207930A9B5D460024079F9B4606E0290000230A22504600F051FB050049462800FFF78AFAA7 -:40EFC0005B46303018550134BC42EEDBAB460600079C002C00DC37E20A9B00279C46644459460122504600F0D9FC4946834600F035FD002800DC44E1651E2B780A9A06E026 -:40F00000954200D1B1E0023C23782C00013D392BF6D001332B704946504600F013FB4346002B00D12FE5002F05D0474503D03900504600F007FB4146504600F003FB22E569 -:40F04000130075E6002E00D0ABE63B030024002B00D0BFE6BA4B3B4200D1BBE6069B013401330693049B01330493B3E601230B93239B002B00DCD1E01D0098460E93079389 -:40F08000FFF7C8FB079B002B00DD53E500D0ADE0049805990022AB4B02F0EEF83B00320001F074F8002399469846002855D0239B0A9CDB4303934946504600F0C3FA4346C4 -:40F0C000002B00D1DFE4B6E74A465946504600F005FC834653E60F9A002A00D1B6E19A4A4C469446069A63440892D5E5002E00D070E6AAE700F0B0FAA24605008046C7E6F7 -:40F1000001239B46E2E600230B93229B022BAFD00024534621005C64504600F06BFA5346186401235B4207930E9302330A9023940B93ECE4229B022B00DC85E6079B002B4C -:40F14000B5D149460522504600F086FA81460100584600F083FC0028A9DD31230A9A1370039B541C01330393A5E7039B0A9A01330393312313704EE700230B93FFF73DFBE4 -:40F18000069B5C469B46079B9A467CE4404602F05DFE32003B0002F06FF800226B4B01F027F96B4A0B00944663440890099109930022644B3000390002F0DEFA089E099F66 -:40F1C00032003B0004000D0000F0D6FF002800D0B2E0802000068446390061440B0032002000290000F0B4FF002857D00023994698465CE70A98FFF74CFAE21A0D9BA146F0 -:40F200009C469444634600240D933EE5109A119B0892099302239846FFF73AFB0023524600215364504600F0E5F95346186401230A90079323930E93FFF707FB43460C93EF -:40F240005B46069AA846B3465546049E9146BA46002B10DD59460122380000F09FFB4946834600F0FBFB002800DC57E1392E00D122E10B9E31360C9B47466C1C2E709846B9 -:40F28000C9E6002803D1F30701D5B5E61C00631E1A78302AFAD0BEE6129B9946109E119F35E40125FFF7B4FA039B002B00D1D4E0109811995C420F23264A2340DB00D3186B -:40F2C0001A685B6801F0D8FF241106000F00002C00D149E1022398461F4D0123234209D09C462A686B6830003900E04401F0C4FF06000F0064100835002CEED1FFF7E4FAB2 -:40F30000039B30270133039330232B70ACE45968504600F06FF94346414604001B690C319A1C92000C30FCF799FE01222100504600F034FB0C9099E50023994698460CE718 -:40F340000000F07F000014403304000000001C400000C0FC9876021070760210129B8F49013BDB00C91808684968089A099B01F083FF149015913900300002F033FD050032 -:40F3800002F064FD02000B003000390002F0F4F9129B089009910A991A008C46303562444C1C0D709046012B1BD008980999250000227B4B01F060FF0F00060002F012FDA5 -:40F3C000040002F043FD303402000B003000390002F0D2F92C700135A845E9D14446089009911498159900226E4B01F001F8089A099B00F0ADFE002867D0139B651E0393E5 -:40F400002F780A9B2EE44346B3460C93049E069BA84699465546BA46392E4DD00C9B013647466C1C2E709846F5E54246069BB346BA46049E99462F009046D1E5069B079A35 -:40F440009B1A0893002327E40124C5E53623169A4C469B1A069A08921EE40223109E119F9846FFF731FA079B002B00D18EE60E9C002C00DC12E7039B0022013B13933000A2 -:40F48000474B390001F0F8FE060040460F00013002F0DCFC32003B0001F0EEFE0022424B00F0A6FF414A0B00944663440890099112940993FFF730FA39232B700C9B4746A0 -:40F4C0006C1C98460A9A3923A1E5149A159B0020344902F051F9089A099B00F04DFE002801D1DBE61C00631E1A78302AFAD0FFF7C8FA4346B3460C93049E069BA846994671 -:40F500005546BA46392ED7D0002C00DDB1E6B2E6139A4D4603920A9BFFF7A4FB002800D0A9E6F30700D4A6E6A0E6002341460A22504600F091F80E9B8046002B01DD07937D -:40F5400086E4229B022B1FDC0E9B079380E4229B022B19DC4946FEF7BDFF0A9B303018700E9B0600079333E502239846FFF7ACF9139B149C03930A9B1D00FFF773FB139B22 -:40F58000149C0393FFF77FFA0E9B0793D6E5042B00D13FE43C23181AD7E4C04698760210000024400000E03F00001C400000C0FC044B1B68586B002801D0F03070470248B9 -:40F5C000FBE7C046DC050008080A000870B50500080011000022064C22601A00F7F7A5FB431C00D070BD2368002BFBD02B60F9E7AC81000870B50400C06C0D0000280AD05E -:40F60000AB00C318186800280FD002681A6000230361C36070BD212204212000F6F7DEFFE0640028ECD10020F4E70126AE40721D920001212000F6F7D1FF0028F3D04560C7 -:40F640008660E4E7002906D04B689A00C36C9B181A680A6019607047F8B5CE4647468146080080B50D000C691F0000211430036801311E04360C56431B0C5343F619370C8E -:40F68000DB1936041F0C360C1B049B1908C08C42EDDC002F08D0AB689C420ADA231D9B00EB1801345F602C6128000CBC90469946F8BD6B684846591CFFF79CFF29002B69C4 -:40F6C00080469A1C92000C310C30FCF7C7FC6B689A004B46DB6C9B181A682A601D604546DCE7C0460300020C0020002A01D11B0410301A0E01D108301B021A0F01D10430EE -:40F700001B019A0F01D102309B00002B03DB01305B0000D42020704703685A0709D00022D90704D49A0720D402229B0803601000704719040022002901D11B0C1032FF213D -:40F74000194201D108321B0A190701D104321B09990701D102329B08D90704D45B0801D12022E4E701320360E1E75B0803600122DDE7C04610B50C000121FFF73BFF012316 -:40F780004461036110BDC046F0B557464E464546DE46E0B514690E6985B00F001500A64204DA3300170026000D001C0033199846BB687968984500DD0131FFF71BFF142247 -:40F7C0000300944663449B4643469B005B441900029303905B4600228B4503D2029904C39942FCD81423A4009A4614372300BC46AA44B60053440097B44401939A454FD29E -:40F8000053461B681E04360C20D05C460027009D210008CC04CD9946484613041B0C73430004000C1B18D819130C4A467343120C9B18020C9B1802041F0C120C1B041343DC -:40F840000B60AC45E4D8534627601B681E0C20D05B4600211B685C4618000F006246009D2988000C71430918C9191B0408041B0C0343236008CD60681B0C734307043F0C01 -:40F88000DB19090C5B181F0C0434AA42E8D89446236004239946019BCA44CB445345AFD84346002B0EDD029B043B1A68002A09D1424603E0043B1968002902D1013A002AF5 -:40F8C000F8D19046039B424618001A6105B03CBC90469946A246AB46F0BDC046F8B54746CE46032380B580460F00140013403AD1A4103E00002C25D043469D6C002D3BD0F5 -:40F900003E00002301279946274207D1641019D0286800281BD005002742F7D02A0031004046FFF731FF002E1BD04246D26C736894469B0063441A68641032601E60060000 -:40F94000002CE5D130000CBC90469946F8BD2A0029004046FFF718FF4B46286003600500DAE70600D2E70B4A013B9B009A580023FFF772FE0700BBE701214046FFF73AFE36 -:40F98000054B05004361012303614346986400230360B5E76077021071020000F8B54E464546DE465746E0B50E00336954119846A04443465D1CB3688346914649689D4283 -:40F9C00003DD01315B009D42FBDC5846FFF712FE030084461433002C06DD0021A4001A001B1902C29342FCD132694846970031001F2214311040CF198146002825D02022CF -:40FA0000121A9246002248460C688440504614431C6004C90433C2408F42F4D81A60002A01D0454602356346013D1D61736860469A005B46DB6C9B181A6832601E603CBCF2 -:40FA400090469946A246AB46F8BD04C904C38F42E9D904C904C38F42F7D8E4E70A69036930B50500981A11D1920014351431AB18891801E09D4209D2043B04391C680A682F -:40FA80009442F7D0944280410122104330BDC046F8B54546DE4657464E4614000B691269E0B588469D1A1AD10F0014218C4692001437A444BB18624402E09F4200D370E0DA -:40FAC000043B043A1E6811688E42F6D000D371E043463E00A04667461C00012506E0002D6ADB4746260000251437143643465968FFF780FD43468146C56018694D468300A6 -:40FB00009C462369BC449B0098460023B04414359A4600E0270004CE3C009346594608CC09041A04120C5244090C521A190C5B461B0CCB1A11145B1812041914120C1B04F3 -:40FB40008A461343291D2B600D00B045E2D8A44516D908CC1A04120C524416141B0C9B1912041E14120C1B041343B24608C5A445EFD862460324D21B053AA2430432891848 -:40FB80000439002B04D104390B680138002BFAD04B46186148463CBC90469946A246AB46F8BD0021FFF726FD01230361002381464361EFE7664699E727000E00A04614379F -:40FBC00014360C00012591E7F0B501211C0083B0089E1500FFF70EFD2303640007001B0B640D02D08022520313430193002D19D068460095FFF790FD002830D1009B7B61E8 -:40FC0000019BBB615A1E93415D1C3D61002C14D0194B9C46352364442418181A099B3460186019E001A8FFF777FD019B20307B61012301253B61002CEAD1104B9C46104BFC -:40FC40006044EB189B00FB1830605869FFF74AFD6B01181A099B1860380003B0F0BD019B20221900121A91400A00C340009901930A437A61C5E7C046CDFBFFFFCEFBFFFFBA -:40FC8000FFFFFF3F70B50500080011000022064C22601A00F7F721F8431C00D070BD2368002BFBD02B60F9E7AC810008F0B557464E46DE464546E0B5936883B001900E004A -:40FCC0009246002B70D08D6813682C0008681D0046E09022B389D200134230D03169421A9346706942001218D00F8218521090465A46501CC0194246404501D98046020004 -:40FD00008020C000034238D011000198F6F75AFC041E54D05A463169FCF7A0F9B3892A4A134080221343B381434620005A463461B8463C00584473619B1A3060B360424686 -:40FD40004946FCF7CDF9B3681C1B3368B46043443360180053469B68DF1B53469F6023D06F682B000835002FFAD01B68A0469946A742AED23C00B846E1E70198F6F726FC54 -:40FD8000041ED1D1019C31692000F6F723FC0C2323604022B38901201343B3815246002340429360536003E0002352460020536003B03CBC90469946A246AB46F0BD0C23B8 -:40FDC000019A1360E5E7C0467FFBFFFF02B4714649084900095649008E4402BC7047C04602B4714649084900095C49008E4402BC7047C04603B47146490840004900095A02 -:40FE000049008E4403BC7047002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D34E -:40FE400000E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A52413F -:40FE8000830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A5241430993 -:40FEC0008B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146A2 -:40FF0000524110467047FFE701B5002000F0F0F802BDC0460029F7D076E7704703460B437FD4002243088B4274D303098B425FD3030A8B4244D3030B8B4228D3030C8B42AB -:40FF40000DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03C01A5241430B8B4201D34B03C01AEF -:40FF80005241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241030A8B4201D30B02C01A5241CDD245 -:40FFC000C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B426D -:020000041002E8 -:4000000001D38B00C01A524143088B4201D34B00C01A5241411A00D201465241104670475DE0CA0F00D04942031000D34042534000229C4603098B422DD3030A8B4212D334 -:40004000FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D389013AD0921100E08909C3098B4201D3CB01C01A524183098B4201D38B01C01A52414309EC -:400080008B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B4201D38B00C01A5241D9D243088B4201D34B00C01A5241411A00D27C -:4000C0000146634652415B10104601D34042002B00D54942704763465B1000D3404201B5002000F005F802BD0029F8D016E770477047C046D0400B1CD1409C46203AD34040 -:400100001843524263469340184370479140031C90409C46203A9340194352426346D340194370478446101C62468C46191C634600E0C0461FB501F03DF8002801D4002168 -:40014000C8421FBD10B500F097FF4042013010BD10B501F02FF8002801DB002010BD012010BDC04610B501F025F8002801DD002010BD012010BDC04610B500F0B7FF0028BF -:4001800001DC002010BD012010BDC04610B500F0ADFF002801DA002010BD012010BDC0461C2101231B04984201D3000C10391B0A984201D3000A08391B09984201D30009C0 -:4001C000043902A2105C40187047C04604030202010101010000000000000000002B11D1002A0FD1002900D1002802D00021C943081C07B4024802A14018029003BDC046DA -:40020000F1FEFFFF03B4684601B5029800F030F8019B9E4602B00CBC7047C046F0B5CE46474615042D0C2E0080B50704140C3F0C9946030C7E435D43674363437F19340C65 -:40024000E4199C46A54203D980235B029846C4444B46514343433604360C250C24046544A4195918491920000CBC90469946F0BDF0B557464E464546DE46E0B5040083B0A2 -:400280000D00924699468B422FD82CD04946504601F056FE29000600200001F051FE331A9846203B9B4600D574E053465A4693401F005346424693401E00AF4229D826D0FC -:4002C0005B46A41BBD41002B00DA79E0002200230092019301235A4693400193012342469340009319E08242D0D900220023009201930C9B002B01D01C605D6000980199BB -:4003000003B03CBC90469946A246AB46F0BDA342D6D900220023009201934346002BE8D0FB0772081A4346467B080EE0AB4201D1A2420CD8A41A9D41012024196D41002146 -:40034000013E24184D41002E06D0AB42EED9013E24196D41002EF8D15B460098019900196941002B22DB2B005A46D3402A004446E2401C005B461500002B2CDB26009E4021 -:40038000330026004746BE403200801A994100900191AEE7424620239B1A5246DA40414613004A468A4017001F4382E7424620239B1A2A0046469A402300F3401343D5E77C -:4003C0004246202300219B1A0022009101920122DA40019282E74246202326009B1ADE402F00B446974066463B003343C9E7C046F8B54546DE4657464E460C03E0B54E0087 -:40040000C90F88460D00610A440F0C43C70019035800DB0F9B464B0A510F0B43760D400D1900D200D84500D1AEE0351A002D00DCF6E000280FD1134300D1DBE06B1E002BF0 -:4004400000D037E1BA1A9742BF41641A7F42E41B0126170024E0C64B9E424DD080231B041943382D00DD07E11F2D00DD38E12020431B9A460B00504683409946130048466D -:40048000EB401843030050468240501E8241E9401A43BA1A611A9742A441170064420C1B230262D56402650A002D00D1DFE02800FFF776FE0300083B1F2B00DDD2E02022D2 -:4004C0003C00D21A9D40D4409F4025439E4200DDC4E09E1B731C1F2B00DDF1E0202238002900D21AD840914097402C000143781E8741DC4000260F437B0709D00F233B4042 -:40050000042B05D03B1DBB42BF417F42E4191F0023022CD5964B01369E4200D19AE04546944BFF081C406007760564020743240B760D00212403230B0C0D8F4A24051C431B -:400540001440330523435B00ED075B082B43380019003CBC90469946A246AB46F8BD6446044300D111E2040067467B07C6D145466007FF080743E4087D4B9E4230D0240360 -:400580007605240B760DD4E7331A9A46002B78DD002831D076488642AED08020000401435346382B00DCE9E00A43511E8A410021D219BA42BF4109197C4217000C19230220 -:4005C000D3D56B4B01369E4200D13AE10120694B1C407B0807401F43E007074364088BE723003B4300D1CBE18022120314432403240B9EE72E007FE70800104300D1B4E0D3 -:40060000581E002800D0DEE0BA18BA429B4164185B42E418170001262302A6D50226D5E7002D6ED1701C4005400D012800DCF9E0B81A844687428041E51A40422D1A28028D -:4006400000D489E0D71BBA4292411C1B5242A51AD84629E74546002400276AE7454CF61A2C4049E73D002838854000272EE73800FFF796FD20301DE70A43511E8A41002105 -:4006800007E7002B00D0F3E0701C43055B0D012B00DCADE0364B984200D1D1E0BA18BA42BF4164187F42E419E707520817436408060021E72E48854200D193E01D00D0E658 -:4006C00029001F3EF140202B00D18DE04022D31A9D402F437D1EAF4100240F43002644E72B000800203BD8400300202D00D17DE04020451BA9400A43511E8A4100211A43F8 -:40070000C7E6002E50D01A4EB04257D080266B429946360434434B46382B00DDD6E01F2B00DD35E12026F51A2600AE40B2463E00DE40AC46350056462E436546AF407D1E70 -:40074000AF41DC403743D71BBA4292410C1B5242A41A0600D846A3E6644667462C4300D0A2E600250026002706E71E00C4E6C046FF070000FFFF7FFFFFFF0F801F2B63DC29 -:400780002020C31A080098409C46834653461000D84003005846184363469A40531E9A4153460243D94003E726003E4306D0EB439946002BC7D0944EB042ACD10C00170064 -:4007C0000600D84698E6904B9A450BD08246E7E6002800D09EE01800104300D1E9E01C001700D846884E87E6002572E7002182E723003B43002E00D0ABE0002B00D1E7E029 -:400800000B00134300D177E6BA18BA42BF4164187F42E419230200D4F2E07C4B17001C40060069E620003843002ED1D100285BD11C00144300D1A8E01C001700D8465BE6AA -:4008400006000024002797E650460B002038C34099465346202B00D195E0402350461B1A99400A43511E8A414B4600211A439FE6002E30D126003E4367D0DB439A46002B4D -:400880001CD0614EB04260D05346382B00DD96E01F2B00DD9FE02026F31A26009E409C46B34653463E00DE4033005E461E4363469F407B1E9F415346DC403743BF18974247 -:4008C000924164185242A418060078E627437C1EA741002437E74C4EB04236D080265B4236049A463443CFE71800104300D103E6B81A84466745AD41E01A6D42401B050245 -:4009000000D42CE6D71BBA4292411C1B5242A41AD846F1E51800104300D163E7F808670707438020E4080003044208D0DD08054205D1D208590711430F002C00D8467B0F35 -:40094000E4001C43FF00304ED6E50C0017000600D2E5002B38D00B00134300D142E7F808670707438020E40800030442E7D0CB080342E4D1D208490711430F001C00DEE70F -:4009800000270024D5E500216BE700250027F3E54E462500203EF5404B462E00202B2DD04025ED1AAC4027437C1EA74100243743C9E6802400252403134E0027DCE5274314 -:4009C0007C1EA741002479E70C0017000E4E93E50C00170090E556462300203EF34099465346202B0ED0402356469B1B9C4027437C1EA7414B4600241F435FE70024D2E7BA -:400A00001700B2E50024F2E7FF070000FFFF7FFFF0B557464546DE464E46E0B54C000E0387B0834692461D008046360B640DCF0F002C4FD06F4B9C4235D08023420F1B04CC -:400A4000F600134333439946C30098466A4B00269C460023644403932B031B0B9B466B00ED0F50465B0D01955ED0624A934253D05A46D1008022400F120402430A43934631 -:400A80005246D1005C4A9446002263443800684084460290E41A16430F2E00D9B4E0574BB6009B599F460300334399466CD100239846023308260393CEE7CB464146039A9D -:400AC0000197022A65D1019B4A4C9C460023002298466BE00300334399464ED0002E00D1BCE13000FFF75CFB03000B3B1C2B00DDACE11D22D31A5A460100DA4008398E40FB -:400B00001300334399465B468B40984600233C4C0026241A03939FE751465A46114329D1002293460232B1E7594601431ED05B46002B00D19EE15846FFF732FB03000B3B95 -:400B40001C2B00DD8FE102005946083A91408B461D21CB1A5146D9400B0059460B4351469B469140264B00221B1A8FE7002301229B468BE75146032288E700239846013311 -:400B800004260024039367E70323B14603930C2662E7032A00D15CE2019B012A00D0E4E113409C46002300240022984600211203130B0A0D12051A432305124C4046224074 -:400BC000134362465B00D2075B081343190007B03CBC90469946A246AB46F0BD002380229C4612039846034CE0E70023014C00229846DBE7FF07000001FCFFFF6C7702102F -:400C00000DFCFFFFFFFF0F80D94500D939E100D134E1002346464D469A46013C5B460A0E1B021A430B02170C039313041B0C3900280090460193FFF7E7F80200019B83468C -:400C40005A43280039009146FFF764F9350C09040D43A9450DD95B464544013BA84500D93AE1A94500D837E102235B429C464544E3444B46EB1A390018000493FFF7C4F831 -:400C8000019B05004343390004989946FFF742F9330409041B0C0B43994509D943446A1E984500D91AE1994500D817E1023D43444A469B1A5A4612042A4303999346100C82 -:400CC0000A0C914609045A46090C4E460D001204120C4543059151437243704352190E0CB218954203D980256D02AC466044150C09041204090C28185218834200D2CEE062 -:400D000000D1C8E01D1A53469E1AB24592415242AB1A9A46984500D117E139001800FFF773F8019B05004343390050460493FFF7F1F804980B04310C1943884209D9414476 -:400D40006B1E884500D907E1884200D804E1023D4144049BCB1A180039000493FFF754F8019B82464343390004980193FFF7D2F801980B043104090C194388420DD95346B9 -:400D80004144013B884500D9E8E0884200D8E5E002235B429C464144E244019B2D04CE1A51462943059D4F462A000B04080C1B0C5A4345437B4378435B19170CFB189D42C4 -:400DC00003D980256D02AC4660441D0C12041B04120C28189B18864200D293E000D18EE001231943A04BE318002B00DC99E04A0700D09EE05A46D20106D55A469B4B1A40FF -:400E000080239346DB00E318994A934268DD0123029A984C1A400023944698460022C5E680224B46120313420AD05B46134206D11A431203120BAC4688468E4CB6E64B4623 -:400E40001A431203120BBC468A4CAFE603005A46283B9A4000239146984657E65846FFF79FF9203040E603005246283B9A400021934677E6FFF794F920305FE6884500D2F9 -:400E8000C7E64B46DE075D0843465B081E434346DB079A46C2E60025924500D333E7039E5946B446E244B245AD416D424544EB180139984507D2984200D97FE000D1BCE092 -:400EC0001D1A8B461FE79845FAD1039D5545F2D943468B461D1A16E79B46CAE61500E7E65A46C90852070A435B0590465C0D5A460123029952021940120B8C4656E6002B1E -:400F000000D16FE746444A1EB04529D91100864200D065E7039A934200D061E762E7012149420120C21A382A21DD029B03409C4638E60F220A40042A00D15BE70A00111DFB -:400F4000914292415242934454E7474BE318002BE5DD01225242F2E71D00FAE69A461CE7B04239D86ED011003AE702933AE71F2A3CDC20239B1A0C005846994098404B1EF5 -:400F800099415B46D440D340204308431A00430709D00F230340042B05D00100081D88429B415B42D21813023AD50123029A01241A400023944698460022F7E502214942EE -:400FC0008C46039DE344AC46E244AA45AD416D424544ED182D1A96E68A1E03994D008D42894149424144761803958FE71F204042C31A5846D8400300202A28D040205D46F1 -:40100000821A954029434A1E91411943072300220B4009D00F2300220B400800042BBDD1010053075202120BC9081943012388460299002419408C46B8E55245BED88B46F9 -:40104000002560E6039D9D42C6D3110062E70025D8E780225B4612031A43019B1203120B9C468846034CA1E5FF030000FFFFFFFEFE070000FF070000F0B54F464646D646BD -:401080005C00C0B51F03DB0F9A46174B0E034D0084468046360B6D0DC90F91463F0B640D01209D4208D09C4201D0A5420BD01CBC90469946A246F0BD63463343F7D1AC42BE -:4010C000F5D13A43F3D10120BE42F0D1C845EED1514507D0002DEAD163461E433000461EB041E4E70020E2E7FF070000F0B54546DE4657464E46E0B51F033D0B2C4F0E038D -:401100004C00AB465D008446360B640DC90F90466D0DDB0FBC422AD0254FBD422DD0002C0FD130430700814678427841C0B2002D17D15F463A4314D14B460020002B0AD01B -:4011400006E0002D02D15846024301D0994218D04842012108433CBC90469946A246AB46F0BD0028F2D00120013B1843F3E737000743D1D002204042EDE75F461743CED035 -:40118000F8E7AC42E4DC03DA481E01210843E2E75E45DDD806D000205E45DCD20123481E1843D8E7C445D3D80020C445F6D3D2E7FF070000F0B54E464546DE4657465C00A0 -:4011C000E0B51F03DB0F99462A4B0E034D00C90F8446360B6D0D8B4690463F0B640D9D4220D0244B9C4222D0002D12D1304343424341DBB2002C1FD0002B0CD04B460120E2 -:40120000013B034318003CBC90469946A246AB46F0BD002C16D0CB4517D05B46594201230B43EFE7310002230143EBD1D9E7390002231143E6D1D7E73A43DDD100230028A1 -:40124000E0D0EAE73A43E6D1E7E7A542E5DC05DBBE42E2D807D00023BE42D3D25946012301390B43CEE7C445D7D80023C445F5D3C8E7C046FF070000F0B557464546DE46B2 -:401280004E46E0B50C0398464E00230B87B0070092469B46760DCD0F002E6BD06D4B9E4235D080245B46420F2404DB0014431C43C3009946684BA3469C46002300276644DD -:4012C000029343461C035A00DB0F5046240B520D984600D176E05F4B9A426DD08023410F1B040B435C49E4008C461C43C300002062444146B6186940721C0191944607439C -:401300000F2F00D9B0E0554ABF00D25997465B460343994600D087E000239B46023308270293CEE742460192022867D0032800D10EE2012800D062E1002300240022994605 -:4013400001990140CDB2002112030B0D120B1B051343434A240513401C436400ED0764082C434846210007B03CBC90469946A246AB46F0BD034399464FD05B46002B00D11D -:4013800089E15846FEF70CFF03000B3B1C2B00DD7AE11D22D31A3A0001005C46DA4008398C4013008F4023439B46B94600232D4E0027361A029384E7534623432AD10024D2 -:4013C000022096E75346234320D0002C00D157E12000FEF7E5FE03000B3B1C2B00DD49E11D21CB1A51460200D9405346083A944093400C431B4A121A00207AE70125019B21 -:40140000144C1D400023002299469CE70024002201206EE7534603206BE700239B4601330427002602934CE7032381460C27029347E780220023002512039946054C82E7B2 -:401440005C464B4602986FE75C464B46019502986AE7C046FF07000001FCFFFFAC770210FFFF0F800DFCFFFF4A464946170C1A0C1B041B0C08041900000C4143150088467F -:4014800019007D437943039589462900150045434D44029545462D0CAA46029D5544A94506D98A46802149028946CA4451460391290C0491414609042D04090C884629002A -:4014C000250C24044144240C0591210041438846210079438A466843414650448146080C48446F43824503D98021490289464F44010C894639004944029141460F040499EC -:401500003F0C88460004C01980444146049159460F0C0904090C884659438A4639005143894641464A435146090C8B467B43D2185A44934203D980235B029B46D944514606 -:401540000904090C8A46414661437C43130C12044B445244A1468A463C0041466C434D4351464D440F0C7D19A94503D98021490288464444049F0399B84641448B4683453C -:40158000804141428846514608042F04000C3F185846029910188946904292414F44BA46524299469346C244D144CB448F42BF41C245894199459B41934592417F424942AF -:4015C0002D0C52420F435B4213437F19FF185B463C19DB0D059A64021C43430213435D1EAB415A46C00D034352021343E20156D501205A0803401343E207134364085A4812 -:40160000604400284DDD5A0709D00F221A40042A05D01A1D9A429B415B42E4181300E20104D58020514AC00014406044504A904200DDE3E60125DB0862071A436402019BBF -:401640009146220B4405640D1D407CE6802259461203114208D0144206D122431203120B45469946434C6EE65B461A431203120B404C68E603005446283B9C400023B9E6B3 -:40168000FEF78EFD2030A6E60300283B9F400023BB4699468AE6FEF783FD203074E6B446ADE701252A1A382A06DD019B00241D4000230022994646E61F2A21DC20252000A2 -:4016C000AD1A1E00AB40A840D6405D1EAB4130431843D440430709D00F230340042B05D00300181D98429B415B42E418230221D50125019B01241D4000230022994622E625 -:401700001F2521006D42281AC1400800202A1DD05F35AA1A944023435C1EA341072503431D400022002D09D00F2200241A401800042AD6D1030065076402220BDB082B433D -:4017400001259946019B00241D40FCE50024E2E7802201251203224301991203120B0D409946044CEFE5C046FF030000FFFFFFFEFE070000FF070000F0B54646D6464F462B -:401780000C03C0B5CD0F4E00610A440F0C43C1005800400D84468A460F001903500F490A0143C648760DA846DB0FD200844500D1D8E001204340AB4200D1A6E06046351AE3 -:4017C000002D00DC05E1002810D10B00134300D1D7E06B1E002B00D04BE153469F1ABA458041641A4042241A01261EE0B34B9E4248D080231B041943382D00DD19E11F2D47 -:4018000000DD4CE120230F005B1B10009A409F40E840531E9A41E940074317435346DF1B611ABA45A44164420C1B230200D4C5E06402650A002D00D1F6E02800FEF7B0FCFD -:401840000300083B1F2B00DDE9E020223C00D21A9D40D4409F4025439E4200DDDBE09E1B731C1F2B00DD0AE120223800D21A290097402C009140D8407A1E9741DC40002691 -:4018800001430F437B0709D00F233B40042B05D03B1DBB42BF417F42E4191F00230225D5864B01369E4200D1AFE0854B01251C4043466207FF08640276051743240B760DB5 -:4018C0001D4000212403230B0C0D7E4A24051C431440330523435B00ED075B082B43380019001CBC90469946A246F0BD012543466207FF081743E4081D40704B9E4236D0C4 -:4019000024037605240B760DDBE76346F31A002B00DC94E06046002835D068488642B1D080273F043943382B00DCFDE00A43170000217A1E9741574457458041091944427D -:401940000C1923023AD55D4B01369E4200D14BE101225B4B1C407B0817401F43E207174364088FE70800104300D024E721E723003B4300D1B9E18022120314432403240B1E -:401980009FE72E007EE70800104300D1CAE0581E8446002800D0E7E052445245804164184042241817000126230207D50226CFE764462C4300D1B3E12C0067467B0700D04B -:4019C00062E76307FF081F4301254346E4081D4093E7002D78D1751C6D056D0D012D00DCF2E05046801A8245BF41651A7F42ED1B8446280200D48CE05046171ABA42924181 -:401A00000C1B5542651B984614E70125434600241D40002755E72A4CF61A2C4032E73D0028388540002717E73800FEF7B9FB203006E70A43170000217A1E9741EEE6002B58 -:401A400000D0E5E0731C9C465B055B0D012B00DC9FE01A4B9C4500D1C5E0524452458041641840422418E707520817436408664608E71248854200D185E01D00BCE6290045 -:401A80001F3EF140202B00D17FE04022D31A9D402F437D1EAF4100240F4300268EE72B000F00203BDF40202D71D040235D1BA9400A43511E8A4100211743AFE6FF07000040 -:401AC000FFFF7FFFFFFF0F80002E3ED0B34EB44545D0802636046D423443382D00DDA8E01F2D00DD1FE1202627005046761BB740E84007435046B040461EB041EC4038431A -:401B0000171ABA4292410C1B5242A41A664698468BE6644667462C4300D08BE6002500260027EAE61E00ADE61F2B60DC2027F81A0F00844687401000D840074360468240DE -:401B4000501E8241D9401743F5E626005046064305D0ED43002DD3D0904EB445BDD10C001700664698468DE68C4883420BD06346D9E6002D00D096E00800104300D1E2E04A -:401B80000C0017009846854E7CE6002580E700218EE7230050460343002E00D0A8E0002B00D1DEE00B00134300D16BE65244524580416418404224181700230200D4FDE6F0 -:401BC000774B66461C405DE6250050460543002ECFD1002D4FD10C00144300D1A0E00C00170098464EE666460024002785E61F000800203FF8400700202B00D18EE04020C0 -:401C0000C31A99400A43511E8A410021174392E6002E14D126005046064362D0DB43002B5CD187189742924164185242A418664687E650462043441EA041002460E7574E38 -:401C4000B4454ED0802636045B423443382B00DD7FE01F2B00DD8BE0202627005046F61AB740D84007435046B040461EB0410743DC40BF18D6E70D00154300D102E6504633 -:401C8000801A8245BF41651A7F42ED1B8446280200D48DE65046171ABA4292410C1B5242A41A9846EEE50D00154300D16BE750466707C00807438020E4080003044207D036 -:401CC000CD08054204D12C009846D70849070F437B0FE4001C43FF00304ED3E52F4EB445B4D10C0017006646CCE500270024E8E5002B39D00B00134300D144E7C00867070C -:401D000007438020E40800030442E1D0CB080342DED1D70849070F431C00D9E7002171E700250027E9E52E002700203EF740202D2FD04026751BAC4050462043441EA041C8 -:401D400000243843DCE6802400252403134E0027D3E5504620430700781E87410024BF1860E70C0017008DE50C0017000B4E89E51E002700203EF740202B0CD04026F31A3F -:401D80009C4050462043441EA04107430024BF1848E70024D0E70024F3E7C046FF070000FFFF7FFF70B50E4E0D031C0349005B002D0B490D240B5B0DB14204D00849002085 -:401DC0008B4208D070BD05430120002DFAD1044900208B42F6D114432000441EA041F1E7FF07000030B5134D0A034B00120B5B0DC90F0024AB4210DD0F4CA3420FDC802450 -:401E00000E4D64032243ED1A1F2D0BDD0C48C31ADA405442002900D11400200030BD094BCC18FAE7084CE840A44663449A400243EFE7C046FE0300001D04000033040000CA -:401E400013040000FFFFFF7FEDFBFFFF70B5002830D0C317C4185C40C50F2000FEF7A0F9174B184A1B1AD21A1F2A18DD164AD21A9440002224035B05240B5B0D0021100014 -:401E800024030A0D240B12052243104C1B05224013435B00ED075B082B43190070BD210091400A000B21081AC4405B052403240B5B0DE3E70025002300240022DEE7C04610 -:401EC0001E0400003304000013040000FFFF0F8010B5041E28D0FEF763F9154B154A1B1AD21A1F2A15DD144AD21A9440002224035B05240B5B0D0021100024030A0D240B9E -:401F0000120522430D4C1B05224013435B00590810BD210091400A000B21081AC4405B052403240B5B0DE6E7002300240022E2E71E0400003304000013040000FFFF0F8003 -:401F400010B5002903D1FEF72BF9203002E0081CFEF726F910BDC046F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC9E46704701B40248844601BC604700BFBD100008FC -:401F800001B40248844601BC604700BF950F000801B40248844601BC604700BF7D110008487000080A2B2B204D6265644F53204661756C742048616E646C6572202B2B0A33 -:401FC0000A4661756C74547970653A20004D656D4D616E6167654661756C74004275734661756C740055736167654661756C7400486172644661756C74000A0A436F6E7441 -:402000006578743A000A0A2D2D204D6265644F53204661756C742048616E646C6572202D2D0A0A004661756C7420657863657074696F6E000A52252D34643A202530386C61 -:4020400058000A53502020203A202530386C580A4C522020203A202530386C580A50432020203A202530386C580A78505352203A202530386C580A50535020203A202530C7 -:40208000386C580A4D535020203A202530386C58000A43505549443A202530386C58000A4D6F6465203A20546872656164000A50726976203A2055736572000A5072697645 -:4020C000203A2050726976696C65676564000A4D6F6465203A2048616E646C6572000A537461636B3A20505350000A537461636B3A204D5350007073615F6D61635F6F70EB -:4021000065726174696F6E007073615F686173685F6F7065726174696F6E007073615F6173796D6D65747269635F6F7065726174696F6E007073615F616561645F6F706554 -:40214000726174696F6E007073615F73796D6D65747269635F6F7065726174696F6E007073615F6B65795F6D616E6167656D656E745F6F7065726174696F6E007073615FE7 -:40218000656E74726F70795F6F7065726174696F6E007073615F63727970746F5F67656E657261746F725F6F7065726174696F6E730025732025753A2053504D20726561DD -:4021C00064206C656E677468206D69736D61746368007073615F665F696E697400000000001A0100011A0100021A0100031A010025732025753A20706172746974696F6E4F -:40220000206973204E554C4C210A0025732025753A204661696C656420746F20637265617465206D7574657820666F722073656375726520706172746974696F6E20707336 -:40224000615F66210A0025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656164206F6620706172746974696F6E2070736187 -:402280005F66210A00000000982202100B000000B01200081C0000007073615F665F6D75746578007073615F66004142434445464748494A4B4C4D4E4F5051525354555650 -:4022C0005758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2D4D4245445F434F4E465F53544F524147455F4445464178 -:40230000554C545F4B56007073615F6974735F6765745F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A00707361FF -:402340005F6974735F6765745F696E666F5F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A007073615F6974735FDF -:4023800072656D6F76655F696D706C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A007073615F6974735F7365745F696D7079 -:4023C0006C2829202D204661696C65642067657474696E67206B7673746F726520696E7374616E63650A006D6573736167655F68616E646C657200706974735F656E7472B5 -:40240000790025732025753A20556E6578706563746564206D6573736167652074797065202564210025732025753A204B5653746F726520696E6974696174696F6E206679 -:4024400061696C656420776974682073746174757320256421006974735F696E69740025732025753A204661696C656420746F20637265617465206D7574657820666F724E -:402480002073656375726520706172746974696F6E20697473210A0025732025753A204661696C656420746F20637265617465207374617274206D61696E20746872656111 -:4024C00064206F6620706172746974696F6E20697473210A00000000E82402100B000000685300081C0000006974735F6D7574657800697473007073615F686E646C5F6D9F -:4025000067725F68616E646C655F64657374726F79007073615F686E646C5F6D67725F68616E646C655F6765745F6D656D0025732025753A205B4552524F525D2048616E73 -:40254000646C65277320696E646578205B25645D20697320626967676572207468616E2068616E646C657320706F6F6C2073697A65205B25645D21200A0025732025753AB0 -:40258000205B4552524F525D2048616E646C65202564206973206E6F7420666F756E6420696E20657870656374656420696E64657821200A0025732025753A205B4552521F -:4025C0004F525D205265717565737420666F722064657374726F79206279206E6F6E2D6F776E6572206F7220667269656E64210A0025732025753A205B4552524F525D20B3 -:40260000547279696E6720746F20676574206D656D6F727920666F7220616E20696E76616C69642068616E646C6521200A0025732025753A205B4552524F525D2052657197 -:402640007565737420666F722068616E646C65206D656D6F7279206973206E6F7420616C6C6F77656420666F72207468697320706172746974696F6E21200A00696E697440 -:402680005F706172746974696F6E730025732025753A20706172746974696F6E73206973204E554C4C210A0073706D5F76616C69646174655F636F6E6E656374696F6E5F0C -:4026C000616C6C6F776564007073615F636F6E6E6563745F6173796E63007073615F636F6E6E656374007073615F63616C6C5F6173796E63007073615F63616C6C0070737D -:40270000615F636C6F73655F6173796E63007073615F636C6F73650025732025753A2050656E64696E672063616C6C206D65737361676520697320696E616363657373698D -:40274000626C650A0025732025753A20436F756C64206E6F742063726561746520612073656D6170686F726520666F7220636C6F7365206D6573736167650025732025751B -:402780003A2050656E64696E6720636C6F7365206D65737361676520697320696E61636365737369626C650A0025732025753A20636F756C64206E6F7420637265617465EC -:4027C00020612073656D6170686F726520666F7220636F6E6E656374206D6573736167650025732025753A20534944203078257820697320696E76616C6964210A00257347 -:402800002025753A206D696E6F722076657273696F6E20256420646F6573206E6F7420636F6D706C79207769746820736964202564206D696E6F722076657273696F6E2030 -:40284000256420616E64206D696E6F7220706F6C6963792025640025732025753A205349442030782578206973206E6F7420616C6C6F77656420746F2062652063616C6CD2 -:4028800065642066726F6D204E5350450A0025732025753A20506172746974696F6E20256420646964206E6F74206465636C6172652065787465726E2066756E6374696F8C -:4028C0006E730A0025732025753A205349442030782578206973206E6F7420696E20706172746974696F6E2025642065787465726E2066756E6374696F6E73206C6973746A -:402900000A0025732025753A2050656E64696E6720636F6E6E656374206D65737361676520697320696E61636365737369626C650A0076616C69646174655F696F76656343 -:40294000006368616E6E656C5F73746174655F737769746368006368616E6E656C5F73746174655F6173736572740025732025753A206368616E6E656C20696E20696E63ED -:402980006F72726563742070726F63657373696E672073746174653A202564207768696C65202564206973206578706563746564210A0025732025753A204661696C65649B -:4029C00020696F7665632056616C69646174696F6E20696E7665633D28305825702920696E6C656E3D28256429206F75747665633D283058257029206F75746C656E3D28CC -:402A00002564290A007073615F73706D5F696E6974002573202D204661696C656420746F20637265617465206368616E6E656C206D656D6F727920706F6F6C210A002573A4 -:402A4000202D204661696C656420746F2063726561746520616374697665206D65737361676573206D656D6F727920706F6F6C210A0053504D5F6163746976655F6D6573CC -:402A800073616765735F706F6F6C0053504D5F6368616E6E656C5F706F6F6C00636F70795F6D6573736167655F746F5F73706D0073706D5F726F745F736572766963655F06 -:402AC00071756575655F64657175657565007073615F67657400726561645F6F725F736B6970007073615F72656164007073615F7772697465007073615F7265706C7900B3 -:402B000025732025753A206D736720697320696E61636365737369626C650A0025732025753A207369676E756D2030782578206D7573742068617665206F6E6C79203120F3 -:402B4000626974204F4E20616E64206D757374206265206120737562736574206F662030782578210A0025732025753A20666C6167206973206E6F7420616374697665210A -:402B80000A0025732025753A205265636569766564207369676E616C202830782530387829207468617420646F6573206E6F74206D6174636820616E7920726F6F74206F67 -:402BC0006620747275737420736572766963650025732025753A20446571756575652066726F6D20656D7074792071756575650025732025753A207073615F676574202D3E -:402C000020756E6578706563746564206D65737361676520747970653D3078253038580025732025753A206D657373616765206461746120697320696E6163636573736975 -:402C4000626C650A0025732025753A20696E5F76656320697320696E61636365737369626C650A0025732025753A20696E5F7665635B25645D20697320696E616363657399 -:402C80007369626C650A0025732025753A206F75745F76656320697320696E61636365737369626C650A0025732025753A206F75745F7665635B25645D20697320696E6119 -:402CC000636365737369626C650A0025732025753A20436F756C64206E6F7420616C6C6F6361746520616374697665206D6573736167650025732025753A2062756666654F -:402D00007220697320696E61636365737369626C650A0025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F7220505341E8 -:402D40005F4950435F434F4E4E4543540025732025753A20737461747573202830582530387829206973206E6F7420616C6C6F77656420666F72205053415F4950435F43A4 -:402D8000414C4C0025732025753A207073615F7265706C792829202D20556E6578706563746564206D65737361676520747970653D3078253038580025732025753A204946 -:402DC0006E76616C6964206F75747665635F6964780A0025732025753A20496E76616C6964207772697465206F7065726174696F6E20285265717565737465642025642C73 -:402E000020417669616C61626C65202564290A0025732025753A20496E76616C696420696E7665635F6964780A006F6E5F706F707065645F6974656D00000000742E021039 -:402E400000000000FC5B0008100000007C2E02100B0000000C5C00081C0000006C2E021000000000285C000810000000515F525F53454D00515F575F53454D00515F4D5565 -:402E8000540000000000000000000000AD290010C92900106D2800108129001059280010212B0010112A0010952A00105D2800106128001051290010DB290010F529001076 -:402EC000692900106728001000000000B71DC1046E3B8209D926430DDC7604136B6BC517B24D861A0550471EB8ED08260FF0C922D6D68A2F61CB4B2B649B0C35D386CD31A6 -:402F00000AA08E3CBDBD4F3870DB114CC7C6D0481EE09345A9FD5241ACAD155F1BB0D45BC2969756758B5652C836196A7F2BD86EA60D9B6311105A6714401D79A35DDC7DC5 -:402F40007A7B9F70CD665E74E0B6239857ABE29C8E8DA191399060953CC0278B8BDDE68F52FBA582E5E66486585B2BBEEF46EABA3660A9B7817D68B3842D2FAD3330EEA9AD -:402F8000EA16ADA45D0B6CA0906D32D42770F3D0FE56B0DD494B71D94C1B36C7FB06F7C32220B4CE953D75CA28803AF29F9DFBF646BBB8FBF1A679FFF4F63EE143EBFFE55D -:402FC0009ACDBCE82DD07DEC77708634C06D4730194B043DAE56C539AB0682271C1B4323C53D002E7220C12ACF9D8E1278804F16A1A60C1B16BBCD1F13EB8A01A4F64B05C9 -:403000007DD00808CACDC90C07AB9778B0B6567C69901571DE8DD475DBDD936B6CC0526FB5E6116202FBD066BF469F5E085B5E5AD17D1D576660DC5363309B4DD42D5A49C4 -:403040000D0B1944BA16D84097C6A5AC20DB64A8F9FD27A54EE0E6A14BB0A1BFFCAD60BB258B23B69296E2B22F2BAD8A98366C8E41102F83F60DEE87F35DA9994440689D74 -:403080009D662B902A7BEA94E71DB4E0500075E4892636E93E3BF7ED3B6BB0F38C7671F7555032FAE24DF3FE5FF0BCC6E8ED7DC231CB3ECF86D6FFCB8386B8D5349B79D15C -:4030C000EDBD3ADC5AA0FBD8EEE00C6959FDCD6D80DB8E6037C64F643296087A858BC97E5CAD8A73EBB04B77560D044FE110C54B383686468F2B47428A7B005C3D66C15822 -:40310000E4408255535D43519E3B1D252926DC21F0009F2C471D5E28424D1936F550D8322C769B3F9B6B5A3B26D6150391CBD40748ED970AFFF0560EFAA011104DBDD014E3 -:40314000949B93192386521D0E562FF1B94BEEF5606DADF8D7706CFCD2202BE2653DEAE6BC1BA9EB0B0668EFB6BB27D701A6E6D3D880A5DE6F9D64DA6ACD23C4DDD0E2C02B -:4031800004F6A1CDB3EB60C97E8D3EBDC990FFB910B6BCB4A7AB7DB0A2FB3AAE15E6FBAACCC0B8A77BDD79A3C660369B717DF79FA85BB4921F4675961A163288AD0BF38C3B -:4031C000742DB081C330718599908A5D2E8D4B59F7AB085440B6C95045E68E4EF2FB4F4A2BDD0C479CC0CD43217D827B9660437F4F460072F85BC176FD0B86684A16476C57 -:4032000093300461242DC565E94B9B115E565A1587701918306DD81C353D9F0282205E065B061D0BEC1BDC0F51A69337E6BB52333F9D113E8880D03A8DD097243ACD5620E2 -:40324000E3EB152D54F6D4297926A9C5CE3B68C1171D2BCCA000EAC8A550ADD6124D6CD2CB6B2FDF7C76EEDBC1CBA1E376D660E7AFF023EA18EDE2EE1DBDA5F0AAA064F4F2 -:40328000738627F9C49BE6FD09FDB889BEE0798D67C63A80D0DBFB84D58BBC9A62967D9EBBB03E930CADFF97B110B0AF060D71ABDF2B32A66836F3A26D66B4BCDA7B75B83A -:4032C000035D36B5B440F7B10000000000000000A9030010CD030010E72E001000000000000000006D2F0010852F0010972F001000000000000000000000000000000000E0 -:40330000D56A011013151718191A1B1C1D1214161E0A010B020C030405060708090D0000D85D0210085E0210385E0210685E021010404040400000404080800005020A08C2 -:403340000C08060808505341004B4559000005020A080C08060808637C777BF26B6FC53001672BFED7AB76CA82C97DFA5947F0ADD4A2AF9CA472C0B7FD9326363FF7CC34BF -:40338000A5E5F171D8311504C723C31896059A071280E2EB27B27509832C1A1B6E5AA0523BD6B329E32F8453D100ED20FCB15B6ACBBE394A4C58CFD0EFAAFB434D33854514 -:4033C000F9027F503C9FA851A3408F929D38F5BCB6DA2110FFF3D2CD0C13EC5F974417C4A77E3D645D197360814FDC222A908846EEB814DE5E0BDBE0323A0A4906245CC20B -:40340000D3AC629195E479E7C8376D8DD54EA96C56F4EA657AAE08BA78252E1CA6B4C6E8DD741F4BBD8B8A703EB5664803F60E613557B986C11D9EE1F8981169D98E949BD0 -:403440001E87E9CE5528DF8CA1890DBFE6426841992D0FB054BB1600C66363A5F87C7C84EE777799F67B7B8DFFF2F20DD66B6BBDDE6F6FB191C5C5546030305002010103B8 -:40348000CE6767A9562B2B7DE7FEFE19B5D7D7624DABABE6EC76769A8FCACA451F82829D89C9C940FA7D7D87EFFAFA15B25959EB8E4747C9FBF0F00B41ADADECB3D4D46789 -:4034C0005FA2A2FD45AFAFEA239C9CBF53A4A4F7E47272969BC0C05B75B7B7C2E1FDFD1C3D9393AE4C26266A6C36365A7E3F3F41F5F7F70283CCCC4F6834345C51A5A5F4F7 -:40350000D1E5E534F9F1F108E2717193ABD8D873623131532A15153F0804040C95C7C752462323659DC3C35E30181828379696A10A05050F2F9A9AB50E070709241212369D -:403540001B80809BDFE2E23DCDEBEB264E2727697FB2B2CDEA75759F1209091B1D83839E582C2C74341A1A2E361B1B2DDC6E6EB2B45A5AEE5BA0A0FBA45252F6763B3B4DA4 -:40358000B7D6D6617DB3B3CE5229297BDDE3E33E5E2F2F7113848497A65353F5B9D1D16800000000C1EDED2C40202060E3FCFC1F79B1B1C8B65B5BEDD46A6ABE8DCBCB4647 -:4035C00067BEBED97239394B944A4ADE984C4CD4B05858E885CFCF4ABBD0D06BC5EFEF2A4FAAAAE5EDFBFB16864343C59A4D4DD766333355118585948A4545CFE9F9F91093 -:4036000004020206FE7F7F81A05050F0783C3C44259F9FBA4BA8A8E3A25151F35DA3A3FE804040C0058F8F8A3F9292AD219D9DBC70383848F1F5F50463BCBCDF77B6B6C12F -:40364000AFDADA754221216320101030E5FFFF1AFDF3F30EBFD2D26D81CDCD4C180C0C1426131335C3ECEC2FBE5F5FE1359797A2884444CC2E17173993C4C45755A7A7F28D -:40368000FC7E7E827A3D3D47C86464ACBA5D5DE73219192BE6737395C06060A0198181989E4F4FD1A3DCDC7F44222266542A2A7E3B9090AB0B8888838C4646CAC7EEEE29AE -:4036C0006BB8B8D32814143CA7DEDE79BC5E5EE2160B0B1DADDBDB76DBE0E03B64323256743A3A4E140A0A1E924949DB0C06060A4824246CB85C5CE49FC2C25DBDD3D36E06 -:4037000043ACACEFC46262A6399191A8319595A4D3E4E437F279798BD5E7E7328BC8C8436E373759DA6D6DB7018D8D8CB1D5D5649C4E4ED249A9A9E0D86C6CB4AC5656FA1A -:40374000F3F4F407CFEAEA25CA6565AFF47A7A8E47AEAEE9100808186FBABAD5F07878884A25256F5C2E2E72381C1C2457A6A6F173B4B4C797C6C651CBE8E823A1DDDD7C02 -:40378000E874749C3E1F1F21964B4BDD61BDBDDC0D8B8B860F8A8A85E07070907C3E3E4271B5B5C4CC6666AA904848D806030305F7F6F6011C0E0E12C26161A36A35355FF3 -:4037C000AE5757F969B9B9D01786869199C1C1583A1D1D27279E9EB9D9E1E138EBF8F8132B9898B322111133D26969BBA9D9D970078E8E89339494A72D9B9BB63C1E1E221A -:4038000015878792C9E9E92087CECE49AA5555FF50282878A5DFDF7A038C8C8F59A1A1F8098989801A0D0D1765BFBFDAD7E6E631844242C6D06868B8824141C3299999B0B8 -:403840005A2D2D771E0F0F117BB0B0CBA85454FC6DBBBBD62C16163AA5C6636384F87C7C99EE77778DF67B7B0DFFF2F2BDD66B6BB1DE6F6F5491C5C55060303003020101B4 -:40388000A9CE67677D562B2B19E7FEFE62B5D7D7E64DABAB9AEC7676458FCACA9D1F82824089C9C987FA7D7D15EFFAFAEBB25959C98E47470BFBF0F0EC41ADAD67B3D4D485 -:4038C000FD5FA2A2EA45AFAFBF239C9CF753A4A496E472725B9BC0C0C275B7B71CE1FDFDAE3D93936A4C26265A6C3636417E3F3F02F5F7F74F83CCCC5C683434F451A5A5F3 -:4039000034D1E5E508F9F1F193E2717173ABD8D8536231313F2A15150C0804045295C7C7654623235E9DC3C328301818A13796960F0A0505B52F9A9A090E07073624121299 -:403940009B1B80803DDFE2E226CDEBEB694E2727CD7FB2B29FEA75751B1209099E1D838374582C2C2E341A1A2D361B1BB2DC6E6EEEB45A5AFB5BA0A0F6A452524D763B3BA0 -:4039800061B7D6D6CE7DB3B37B5229293EDDE3E3715E2F2F97138484F5A6535368B9D1D1000000002CC1EDED604020201FE3FCFCC879B1B1EDB65B5BBED46A6A468DCBCB43 -:4039C000D967BEBE4B723939DE944A4AD4984C4CE8B058584A85CFCF6BBBD0D02AC5EFEFE54FAAAA16EDFBFBC5864343D79A4D4D5566333394118585CF8A454510E9F9F98F -:403A00000604020281FE7F7FF0A0505044783C3CBA259F9FE34BA8A8F3A25151FE5DA3A3C08040408A058F8FAD3F9292BC219D9D4870383804F1F5F5DF63BCBCC177B6B62B -:403A400075AFDADA63422121302010101AE5FFFF0EFDF3F36DBFD2D24C81CDCD14180C0C352613132FC3ECECE1BE5F5FA2359797CC884444392E17175793C4C4F255A7A789 -:403A800082FC7E7E477A3D3DACC86464E7BA5D5D2B32191995E67373A0C0606098198181D19E4F4F7FA3DCDC664422227E542A2AAB3B9090830B8888CA8C464629C7EEEEAA -:403AC000D36BB8B83C28141479A7DEDEE2BC5E5E1D160B0B76ADDBDB3BDBE0E0566432324E743A3A1E140A0ADB9249490A0C06066C482424E4B85C5C5D9FC2C26EBDD3D302 -:403B0000EF43ACACA6C46262A8399191A431959537D3E4E48BF2797932D5E7E7438BC8C8596E3737B7DA6D6D8C018D8D64B1D5D5D29C4E4EE049A9A9B4D86C6CFAAC565616 -:403B400007F3F4F425CFEAEAAFCA65658EF47A7AE947AEAE18100808D56FBABA88F078786F4A2525725C2E2E24381C1CF157A6A6C773B4B45197C6C623CBE8E87CA1DDDDFE -:403B80009CE87474213E1F1FDD964B4BDC61BDBD860D8B8B850F8A8A90E07070427C3E3EC471B5B5AACC6666D89048480506030301F7F6F6121C0E0EA3C261615F6A3535EF -:403BC000F9AE5757D069B9B9911786865899C1C1273A1D1DB9279E9E38D9E1E113EBF8F8B32B989833221111BBD2696970A9D9D989078E8EA7339494B62D9B9B223C1E1E16 -:403C00009215878720C9E9E94987CECEFFAA5555785028287AA5DFDF8F038C8CF859A1A180098989171A0D0DDA65BFBF31D7E6E6C6844242B8D06868C3824141B0299999B4 -:403C4000775A2D2D111E0F0FCB7BB0B0FCA85454D66DBBBB3A2C161663A5C6637C84F87C7799EE777B8DF67BF20DFFF26BBDD66B6FB1DE6FC55491C53050603001030201B0 -:403C800067A9CE672B7D562BFE19E7FED762B5D7ABE64DAB769AEC76CA458FCA829D1F82C94089C97D87FA7DFA15EFFA59EBB25947C98E47F00BFBF0ADEC41ADD467B3D481 -:403CC000A2FD5FA2AFEA45AF9CBF239CA4F753A47296E472C05B9BC0B7C275B7FD1CE1FD93AE3D93266A4C26365A6C363F417E3FF702F5F7CC4F83CC345C6834A5F451A5EF -:403D0000E534D1E5F108F9F17193E271D873ABD831536231153F2A15040C0804C75295C723654623C35E9DC31828301896A13796050F0A059AB52F9A07090E071236241295 -:403D4000809B1B80E23DDFE2EB26CDEB27694E27B2CD7FB2759FEA75091B1209839E1D832C74582C1A2E341A1B2D361B6EB2DC6E5AEEB45AA0FB5BA052F6A4523B4D763B9C -:403D8000D661B7D6B3CE7DB3297B5229E33EDDE32F715E2F8497138453F5A653D168B9D100000000ED2CC1ED20604020FC1FE3FCB1C879B15BEDB65B6ABED46ACB468DCB3F -:403DC000BED967BE394B72394ADE944A4CD4984C58E8B058CF4A85CFD06BBBD0EF2AC5EFAAE54FAAFB16EDFB43C586434DD79A4D335566338594118545CF8A45F910E9F98B -:403E0000020604027F81FE7F50F0A0503C44783C9FBA259FA8E34BA851F3A251A3FE5DA340C080408F8A058F92AD3F929DBC219D38487038F504F1F5BCDF63BCB6C177B627 -:403E4000DA75AFDA2163422110302010FF1AE5FFF30EFDF3D26DBFD2CD4C81CD0C14180C13352613EC2FC3EC5FE1BE5F97A2359744CC884417392E17C45793C4A7F255A785 -:403E80007E82FC7E3D477A3D64ACC8645DE7BA5D192B32197395E67360A0C060819819814FD19E4FDC7FA3DC226644222A7E542A90AB3B9088830B8846CA8C46EE29C7EEA6 -:403EC000B8D36BB8143C2814DE79A7DE5EE2BC5E0B1D160BDB76ADDBE03BDBE0325664323A4E743A0A1E140A49DB9249060A0C06246C48245CE4B85CC25D9FC2D36EBDD3FE -:403F0000ACEF43AC62A6C46291A8399195A43195E437D3E4798BF279E732D5E7C8438BC837596E376DB7DA6D8D8C018DD564B1D54ED29C4EA9E049A96CB4D86C56FAAC5612 -:403F4000F407F3F4EA25CFEA65AFCA657A8EF47AAEE947AE08181008BAD56FBA7888F078256F4A252E725C2E1C24381CA6F157A6B4C773B4C65197C6E823CBE8DD7CA1DDFA -:403F8000749CE8741F213E1F4BDD964BBDDC61BD8B860D8B8A850F8A7090E0703E427C3EB5C471B566AACC6648D8904803050603F601F7F60E121C0E61A3C261355F6A35EB -:403FC00057F9AE57B9D069B986911786C15899C11D273A1D9EB9279EE138D9E1F813EBF898B32B981133221169BBD269D970A9D98E89078E94A733949BB62D9B1E223C1E12 -:4040000087921587E920C9E9CE4987CE55FFAA5528785028DF7AA5DF8C8F038CA1F859A1898009890D171A0DBFDA65BFE631D7E642C6844268B8D06841C3824199B02999B0 -:404040002D775A2D0F111E0FB0CB7BB054FCA854BBD66DBB163A2C166363A5C67C7C84F8777799EE7B7B8DF6F2F20DFF6B6BBDD66F6FB1DEC5C554913030506001010302AC -:404080006767A9CE2B2B7D56FEFE19E7D7D762B5ABABE64D76769AECCACA458F82829D1FC9C940897D7D87FAFAFA15EF5959EBB24747C98EF0F00BFBADADEC41D4D467B37D -:4040C000A2A2FD5FAFAFEA459C9CBF23A4A4F753727296E4C0C05B9BB7B7C275FDFD1CE19393AE3D26266A4C36365A6C3F3F417EF7F702F5CCCC4F8334345C68A5A5F451EB -:40410000E5E534D1F1F108F9717193E2D8D873AB3131536215153F2A04040C08C7C7529523236546C3C35E9D181828309696A13705050F0A9A9AB52F0707090E1212362491 -:4041400080809B1BE2E23DDFEBEB26CD2727694EB2B2CD7F75759FEA09091B1283839E1D2C2C74581A1A2E341B1B2D366E6EB2DC5A5AEEB4A0A0FB5B5252F6A43B3B4D7698 -:40418000D6D661B7B3B3CE7D29297B52E3E33EDD2F2F715E848497135353F5A6D1D168B900000000EDED2CC120206040FCFC1FE3B1B1C8795B5BEDB66A6ABED4CBCB468D3B -:4041C000BEBED96739394B724A4ADE944C4CD4985858E8B0CFCF4A85D0D06BBBEFEF2AC5AAAAE54FFBFB16ED4343C5864D4DD79A33335566858594114545CF8AF9F910E987 -:40420000020206047F7F81FE5050F0A03C3C44789F9FBA25A8A8E34B5151F3A2A3A3FE5D4040C0808F8F8A059292AD3F9D9DBC2138384870F5F504F1BCBCDF63B6B6C17723 -:40424000DADA75AF2121634210103020FFFF1AE5F3F30EFDD2D26DBFCDCD4C810C0C141813133526ECEC2FC35F5FE1BE9797A2354444CC881717392EC4C45793A7A7F25581 -:404280007E7E82FC3D3D477A6464ACC85D5DE7BA19192B32737395E66060A0C0818198194F4FD19EDCDC7FA3222266442A2A7E549090AB3B8888830B4646CA8CEEEE29C7A2 -:4042C000B8B8D36B14143C28DEDE79A75E5EE2BC0B0B1D16DBDB76ADE0E03BDB323256643A3A4E740A0A1E144949DB9206060A0C24246C485C5CE4B8C2C25D9FD3D36EBDFA -:40430000ACACEF436262A6C49191A8399595A431E4E437D379798BF2E7E732D5C8C8438B3737596E6D6DB7DA8D8D8C01D5D564B14E4ED29CA9A9E0496C6CB4D85656FAAC0E -:40434000F4F407F3EAEA25CF6565AFCA7A7A8EF4AEAEE94708081810BABAD56F787888F025256F4A2E2E725C1C1C2438A6A6F157B4B4C773C6C65197E8E823CBDDDD7CA1F6 -:4043800074749CE81F1F213E4B4BDD96BDBDDC618B8B860D8A8A850F707090E03E3E427CB5B5C4716666AACC4848D89003030506F6F601F70E0E121C6161A3C235355F6AE7 -:4043C0005757F9AEB9B9D06986869117C1C158991D1D273A9E9EB927E1E138D9F8F813EB9898B32B111133226969BBD2D9D970A98E8E89079494A7339B9BB62D1E1E223C0E -:4044000087879215E9E920C9CECE49875555FFAA28287850DFDF7AA58C8C8F03A1A1F859898980090D0D171ABFBFDA65E6E631D74242C6846868B8D04141C3829999B029AC -:404440002D2D775A0F0F111EB0B0CB7B5454FCA8BBBBD66D16163A2C01000000020000000400000008000000100000002000000040000000800000001B0000003600000037 -:4044800052096AD53036A538BF40A39E81F3D7FB7CE339829B2FFF87348E4344C4DEE9CB547B9432A6C2233DEE4C950B42FAC34E082EA16628D924B2765BA2496D8BD1254E -:4044C00072F8F66486689816D4A45CCC5D65B6926C704850FDEDB9DA5E154657A78D9D8490D8AB008CBCD30AF7E45805B8B34506D02C1E8FCA3F0F02C1AFBD0301138A6B3A -:404500003A9111414F67DCEA97F2CFCEF0B4E67396AC7422E7AD3585E2F937E81C75DF6E47F11A711D29C5896FB7620EAA18BE1BFC563E4BC6D279209ADBC0FE78CD5AF467 -:404540001FDDA8338807C731B11210592780EC5F60517FA919B54A0D2DE57A9F93C99CEFA0E03B4DAE2AF5B0C8EBBB3C83539961172B047EBA77D626E169146355210C7DFF -:4045800051F4A7507E4165531A17A4C33A275E963BAB6BCB1F9D45F1ACFA58AB4BE303932030FA55AD766DF688CC7691F5024C254FE5D7FCC52ACBD726354480B562A38FF8 -:4045C000DEB15A4925BA1B6745EA0E985DFEC0E1C32F7502814CF0128D4697A36BD3F9C6038F5FE715929C95BF6D7AEB955259DAD4BE832D587421D349E069298EC9C8449A -:4046000075C2896AF48E797899583E6B27B971DDBEE14FB6F088AD17C920AC667DCE3AB463DF4A18E51A31829751336062537F45B16477E0BB6BAE84FE81A01CF9082B94F8 -:40464000704868588F45FD1994DE6C87527BF8B7AB73D323724B02E2E31F8F576655AB2AB2EB28072FB5C20386C57B9AD33708A5302887F223BFA5B202036ABAED16825C2A -:404680008ACF1C2BA779B492F307F2F04E69E2A165DAF4CD0605BED5D134621FC4A6FE8A342E539DA2F355A0058AE132A4F6EB750B83EC394060EFAA5E719F06BD6E105164 -:4046C0003E218AF996DD063DDD3E05AE4DE6BD4691548DB571C45D050406D46F605015FF1998FB24D6BDE997894043CC67D99E77B0E842BD07898B88E7195B3879C8EEDB68 -:40470000A17C0A477C420FE9F8841EC90000000009808683322BED481E1170AC6C5A724EFD0EFFFB0F8538563DAED51E362D39270A0FD964685CA6219B5B54D124362E3A77 -:404740000C0A67B19357E70FB4EE96D21B9B919E80C0C54F61DC20A25A774B691C121A16E293BA0AC0A02AE53C22E043121B171D0E090D0BF28BC7AD2DB6A8B9141EA9C875 -:4047800057F11985AF75074CEE99DDBBA37F60FDF701269F5C72F5BC44663BC55BFB7E348B432976CB23C6DCB6EDFC68B8E4F163D731DCCA426385101397224084C61120AD -:4047C000854A247DD2BB3DF8AEF93211C729A16D1D9E2F4BDCB230F30D8652EC77C1E3D02BB3166CA970B999119448FA47E96422A8FC8CC4A0F03F1A567D2CD8223390EF0D -:4048000087494EC7D938D1C18CCAA2FE98D40B36A6F581CFA57ADE28DAB78E263FADBFA42C3A9DE45078920D6A5FCC9B547E4662F68D13C290D8B8E82E39F75E82C3AFF5AC -:404840009F5D80BE69D0937C6FD52DA9CF2512B3C8AC993B10187DA7E89C636EDB3BBB7BCD2678096E5918F4EC9AB701834F9AA8E6956E65AAFFE67E21BCCF08EF15E8E634 -:40488000BAE79BD94A6F36CEEA9F09D429B07CD631A4B2AF2A3F2331C6A5943035A266C0744EBC37FC82CAA6E090D0B033A7D815F104984A41ECDAF77FCD500E1791F62FD0 -:4048C000764DD68D43EFB04DCCAA4D54E49604DF9ED1B5E34C6A881BC12C1FB84665517F9D5EEA04018C355DFA877473FB0B412EB3671D5A92DBD252E91056336DD647132A -:404900009AD7618C37A10C7A59F8148EEB133C89CEA927EEB761C935E11CE5ED7A47B13C9CD2DF5955F2733F1814CE7973C737BF53F7CDEA5FFDAA5BDF3D6F147844DB8686 -:40494000CAAFF381B968C43E3824342CC2A3405F161DC372BCE2250C283C498BFF0D954139A80171080CB3DED8B4E49C6456C1907BCB8461D532B670486C5C74D0B857420A -:404980005051F4A7537E4165C31A17A4963A275ECB3BAB6BF11F9D45ABACFA58934BE303552030FAF6AD766D9188CC7625F5024CFC4FE5D7D7C52ACB802635448FB562A3F4 -:4049C00049DEB15A6725BA1B9845EA0EE15DFEC002C32F7512814CF0A38D4697C66BD3F9E7038F5F9515929CEBBF6D7ADA9552592DD4BE83D35874212949E069448EC9C896 -:404A00006A75C28978F48E796B99583EDD27B971B6BEE14F17F088AD66C920ACB47DCE3A1863DF4A82E51A31609751334562537FE0B1647784BB6BAE1CFE81A094F9082BF4 -:404A400058704868198F45FD8794DE6CB7527BF823AB73D3E2724B0257E31F8F2A6655AB07B2EB28032FB5C29A86C57BA5D33708F2302887B223BFA5BA02036A5CED168226 -:404A80002B8ACF1C92A779B4F0F307F2A14E69E2CD65DAF4D50605BE1FD134628AC4A6FE9D342E53A0A2F35532058AE175A4F6EB390B83ECAA4060EF065E719F51BD6E1060 -:404AC000F93E218A3D96DD06AEDD3E05464DE6BDB591548D0571C45D6F0406D4FF605015241998FB97D6BDE9CC8940437767D99EBDB0E8428807898B38E7195BDB79C8EE64 -:404B000047A17C0AE97C420FC9F8841E000000008309808648322BEDAC1E11704E6C5A72FBFD0EFF560F85381E3DAED527362D39640A0FD921685CA6D19B5B543A24362E73 -:404B4000B10C0A670F9357E7D2B4EE969E1B9B914F80C0C5A261DC20695A774B161C121A0AE293BAE5C0A02A433C22E01D121B170B0E090DADF28BC7B92DB6A8C8141EA971 -:404B80008557F1194CAF7507BBEE99DDFDA37F609FF70126BC5C72F5C544663B345BFB7E768B4329DCCB23C668B6EDFC63B8E4F1CAD731DC10426385401397222084C611A9 -:404BC0007D854A24F8D2BB3D11AEF9326DC729A14B1D9E2FF3DCB230EC0D8652D077C1E36C2BB31699A970B9FA1194482247E964C4A8FC8C1AA0F03FD8567D2CEF22339009 -:404C0000C787494EC1D938D1FE8CCAA23698D40BCFA6F58128A57ADE26DAB78EA43FADBFE42C3A9D0D5078929B6A5FCC62547E46C2F68D13E890D8B85E2E39F7F582C3AFA8 -:404C4000BE9F5D807C69D093A96FD52DB3CF25123BC8AC99A710187D6EE89C637BDB3BBB09CD2678F46E591801EC9AB7A8834F9A65E6956E7EAAFFE60821BCCFE6EF15E830 -:404C8000D9BAE79BCE4A6F36D4EA9F09D629B07CAF31A4B2312A3F2330C6A594C035A26637744EBCA6FC82CAB0E090D01533A7D84AF10498F741ECDA0E7FCD502F1791F6CC -:404CC0008D764DD64D43EFB054CCAA4DDFE49604E39ED1B51B4C6A88B8C12C1F7F466551049D5EEA5D018C3573FA87742EFB0B415AB3671D5292DBD233E91056136DD64726 -:404D00008C9AD7617A37A10C8E59F81489EB133CEECEA92735B761C9EDE11CE53C7A47B1599CD2DF3F55F273791814CEBF73C737EA53F7CD5B5FFDAA14DF3D6F867844DB82 -:404D400081CAAFF33EB968C42C3824345FC2A34072161DC30CBCE2258B283C4941FF0D957139A801DE080CB39CD8B4E4906456C1617BCB8470D532B674486C5C42D0B85706 -:404D8000A75051F465537E41A4C31A175E963A276BCB3BAB45F11F9D58ABACFA03934BE3FA5520306DF6AD76769188CC4C25F502D7FC4FE5CBD7C52A44802635A38FB562F0 -:404DC0005A49DEB11B6725BA0E9845EAC0E15DFE7502C32FF012814C97A38D46F9C66BD35FE7038F9C9515927AEBBF6D59DA9552832DD4BE21D35874692949E0C8448EC992 -:404E0000896A75C27978F48E3E6B995871DD27B94FB6BEE1AD17F088AC66C9203AB47DCE4A1863DF3182E51A336097517F45625377E0B164AE84BB6BA01CFE812B94F908F0 -:404E400068587048FD198F456C8794DEF8B7527BD323AB7302E2724B8F57E31FAB2A66552807B2EBC2032FB57B9A86C508A5D33787F23028A5B223BF6ABA0203825CED1622 -:404E80001C2B8ACFB492A779F2F0F307E2A14E69F4CD65DABED50605621FD134FE8AC4A6539D342E55A0A2F3E132058AEB75A4F6EC390B83EFAA40609F065E711051BD6E5C -:404EC0008AF93E21063D96DD05AEDD3EBD464DE68DB591545D0571C4D46F040615FF6050FB241998E997D6BD43CC89409E7767D942BDB0E88B8807895B38E719EEDB79C860 -:404F00000A47A17C0FE97C421EC9F8840000000086830980ED48322B70AC1E11724E6C5AFFFBFD0E38560F85D51E3DAE3927362DD9640A0FA621685C54D19B5B2E3A24366F -:404F400067B10C0AE70F935796D2B4EE919E1B9BC54F80C020A261DC4B695A771A161C12BA0AE2932AE5C0A0E0433C22171D121B0D0B0E09C7ADF28BA8B92DB6A9C8141E6D -:404F8000198557F1074CAF75DDBBEE9960FDA37F269FF701F5BC5C723BC544667E345BFB29768B43C6DCCB23FC68B6EDF163B8E4DCCAD7318510426322401397112084C6A5 -:404FC000247D854A3DF8D2BB3211AEF9A16DC7292F4B1D9E30F3DCB252EC0D86E3D077C1166C2BB3B999A97048FA1194642247E98CC4A8FC3F1AA0F02CD8567D90EF223305 -:405000004EC78749D1C1D938A2FE8CCA0B3698D481CFA6F5DE28A57A8E26DAB7BFA43FAD9DE42C3A920D5078CC9B6A5F4662547E13C2F68DB8E890D8F75E2E39AFF582C3A4 -:4050400080BE9F5D937C69D02DA96FD512B3CF25993BC8AC7DA71018636EE89CBB7BDB3B7809CD2618F46E59B701EC9A9AA8834F6E65E695E67EAAFFCF0821BCE8E6EF152C -:405080009BD9BAE736CE4A6F09D4EA9F7CD629B0B2AF31A423312A3F9430C6A566C035A2BC37744ECAA6FC82D0B0E090D81533A7984AF104DAF741EC500E7FCDF62F1791C8 -:4050C000D68D764DB04D43EF4D54CCAA04DFE496B5E39ED1881B4C6A1FB8C12C517F4665EA049D5E355D018C7473FA87412EFB0B1D5AB367D25292DB5633E91047136DD622 -:40510000618C9AD70C7A37A1148E59F83C89EB1327EECEA9C935B761E5EDE11CB13C7A47DF599CD2733F55F2CE79181437BF73C7CDEA53F7AA5B5FFD6F14DF3DDB8678447E -:40514000F381CAAFC43EB968342C3824405FC2A3C372161D250CBCE2498B283C9541FF0D017139A8B3DE080CE49CD8B4C190645684617BCBB670D5325C74486C5742D0B802 -:40518000F4A750514165537E17A4C31A275E963AAB6BCB3B9D45F11FFA58ABACE303934B30FA5520766DF6ADCC769188024C25F5E5D7FC4F2ACBD7C53544802662A38FB5EC -:4051C000B15A49DEBA1B6725EA0E9845FEC0E15D2F7502C34CF012814697A38DD3F9C66B8F5FE703929C95156D7AEBBF5259DA95BE832DD47421D358E0692949C9C8448E8E -:40520000C2896A758E7978F4583E6B99B971DD27E14FB6BE88AD17F020AC66C9CE3AB47DDF4A18631A3182E551336097537F45626477E0B16BAE84BB81A01CFE082B94F9EC -:405240004868587045FD198FDE6C87947BF8B75273D323AB4B02E2721F8F57E355AB2A66EB2807B2B5C2032FC57B9A863708A5D32887F230BFA5B223036ABA0216825CED1E -:40528000CF1C2B8A79B492A707F2F0F369E2A14EDAF4CD6505BED50634621FD1A6FE8AC42E539D34F355A0A28AE13205F6EB75A483EC390B60EFAA40719F065E6E1051BD58 -:4052C000218AF93EDD063D963E05AEDDE6BD464D548DB591C45D057106D46F045015FF6098FB2419BDE997D64043CC89D99E7767E842BDB0898B8807195B38E7C8EEDB795C -:405300007C0A47A1420FE97C841EC9F800000000808683092BED48321170AC1E5A724E6C0EFFFBFD8538560FAED51E3D2D3927360FD9640A5CA621685B54D19B362E3A246B -:405340000A67B10C57E70F93EE96D2B49B919E1BC0C54F80DC20A261774B695A121A161C93BA0AE2A02AE5C022E0433C1B171D12090D0B0E8BC7ADF2B6A8B92D1EA9C81469 -:40538000F119855775074CAF99DDBBEE7F60FDA301269FF772F5BC5C663BC544FB7E345B4329768B23C6DCCBEDFC68B6E4F163B831DCCAD76385104297224013C6112084A1 -:4053C0004A247D85BB3DF8D2F93211AE29A16DC79E2F4B1DB230F3DC8652EC0DC1E3D077B3166C2B70B999A99448FA11E9642247FC8CC4A8F03F1AA07D2CD8563390EF2201 -:40540000494EC78738D1C1D9CAA2FE8CD40B3698F581CFA67ADE28A5B78E26DAADBFA43F3A9DE42C78920D505FCC9B6A7E4662548D13C2F6D8B8E89039F75E2EC3AFF582A0 -:405440005D80BE9FD0937C69D52DA96F2512B3CFAC993BC8187DA7109C636EE83BBB7BDB267809CD5918F46E9AB701EC4F9AA883956E65E6FFE67EAABCCF082115E8E6EF28 -:40548000E79BD9BA6F36CE4A9F09D4EAB07CD629A4B2AF313F23312AA59430C6A266C0354EBC377482CAA6FC90D0B0E0A7D8153304984AF1ECDAF741CD500E7F91F62F17C4 -:4054C0004DD68D76EFB04D43AA4D54CC9604DFE4D1B5E39E6A881B4C2C1FB8C165517F465EEA049D8C355D01877473FA0B412EFB671D5AB3DBD25292105633E9D647136D1E -:40550000D7618C9AA10C7A37F8148E59133C89EBA927EECE61C935B71CE5EDE147B13C7AD2DF599CF2733F5514CE7918C737BF73F7CDEA53FDAA5B5F3D6F14DF44DB86787A -:40554000AFF381CA68C43EB924342C38A3405FC21DC37216E2250CBC3C498B280D9541FFA80171390CB3DE08B4E49CD856C19064CB84617B32B670D56C5C7448B85742D0FE -:405580007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3E7F7F7F3F3435363738393A3B3C3D7F7F7F407F7FAC -:4055C0007F000102030405060708090A0B0C0D0E0F101112131415161718197F7F7F7F7F7F1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132337F7F7F7F7F89 -:405600000502000080000000BF590210100000000000000010000000A45702102B08000080000000535902100C0000000100000010000000C85702100B050000800000003D -:405640009B590210100000000000000010000000A45702100201000080000000E3590210000000000000000010000000A45702100E06000080000000775902100C00000087 -:4056800001000000100000006C58021006020000C0000000B3590210100000000000000010000000A45702102C080000C0000000475902100C00000001000000100000002D -:4056C000C85702100C050000C00000008F590210100000000000000010000000A457021003010000C0000000D7590210000000000000000010000000A45702100F06000049 -:40570000C00000006B5902100C00000001000000100000006C5802100702000000010000A7590210100000000000000010000000A45702102D080000000100003B590210BB -:405740000C0000000100000010000000C85702100D0500000001000083590210100000000000000010000000A45702100401000000010000CB590210000000000000000071 -:4057800010000000A457021010060000000100005F5902100C00000001000000100000006C5802100200000015A3001005A30010EFA2001000000000E7A20010DFA20010AB -:4057C000C7A20010B7A20010020000000000000000000000000000000000000073A2001073A200105DA200104DA200100900000000000000000000000000000039A2001079 -:405800001DA200101DA2001005A20010F5A100104807000000010000325902100C0000000000000001000000EC570210090000000000000000000000000000000000000015 -:40584000D9A10010D9A10010C1A10010B1A10010490A000000010000205902100C00000000000000010000002C5802100200000000000000000000000000000000000000BC -:40588000A9A20010A9A2001091A2001081A20010020000005456021003000000E0560210040000006C5702100500000000560210060000008C5602100700000018570210EB -:4058C0000B000000385602100C000000C45602100D000000505702100E000000705602100F000000FC56021010000000885702102B0000001C5602102C000000A8560210BA -:405900002D0000003457021048000000105802104900000050580210000000000000000043484143484132302D504F4C5931333035004348414348413230004145532D3272 -:4059400035362D43434D004145532D3139322D43434D004145532D3132382D43434D004145532D3235362D47434D004145532D3139322D47434D004145532D3132382D4717 -:40598000434D004145532D3235362D435452004145532D3139322D435452004145532D3132382D435452004145532D3235362D434243004145532D3139322D4342430041BF -:4059C00045532D3132382D434243004145532D3235362D454342004145532D3139322D454342004145532D3132382D454342000004001800800100003A5B02100300170029 -:405A000000010000445B0210000000000000000000000000303030303030303030303030303030303030303030303030303030303030303030303030303030303030303074 -:405A4000303030310046464646464646464646464646464646464646464646464639394445463833363134364243394231423444323238333000354541364633383941331F -:405A8000384238424338314537363737353342313541413535363945313738324533304142453744323500343030303030303030303030303030303030303030303030309E -:405AC0003030303030303030303030303030303030303030303030003746464646464646464646464646464646464646464646464646464646464646464646464646464675 -:405B0000464646464646464600353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535007365637033382F -:405B40003472310073656370323536723100303144423432003134444546394445413246373943443635383132363331413543463544334544003938414100383333354492 -:405B8000433136334242313234423635313239433936464445393333443844373233413730414144433837334436443534413742423044004B60D2273E3CCE3BF6B053CC52 -:405BC000B0061D65BC86987655BDEBB3E7933AAAD835C65A96C298D84539A1F4A033EB2D817D0377F240A463E5E6BCF847422CE1F2D1176BF551BF376840B6CBCE5E316BE4 -:405C00005733CE2B169E0F7C4AEBE78E9B7F1AFEE242E34F512563FCC2CAB9F3849E17A7ADFAE6BCFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 -:405C400000000000000000000000000001000000FFFFFFFFEF2AECD3EDC8852A9DD12E8A8D3956C65A8713508F081403124181FE6E9C1D18192DF8E36B058E98E4E73EE23E -:405C8000A72F31B3B70A7672385E543A6C2955BF5DF20255382A5482E041F759989BA78B623B1D6E74AD20F31EC7B18E37058BBE22CA87AA5F0EEA907C1D437A9D817E1DE8 -:405CC000CEB1600AC0B8F0B51331DAE97C149A28BD1DF4F829DC9292BF989E5D6F2C26964ADE17367329C5CC6A19ECEC7AA7B048B20D1A58DF2D37F4814D63C7FFFFFFFF3B -:405D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C -:405D4000FFFFFFFF000000000000000000000000201C000000000000403800000000000060240000000000008070000000000000A06C000000000000C048000000000000EB -:405D8000E05400000000000000E100000000000020FD00000000000040D900000000000060C50000000000008091000000000000A08D000000000000C0A9000000000000CC -:405DC000E0B5000000000000D85D0210085E0210385E0210685E021005000000F76102101C00000040000000FDEB0010F5EB0010EDEB0010D9EB0010C3EB0010B3EB0010F4 -:405E0000ABEB0010A3EB00100600000024620210200000004000000007EC0010F5EB0010EDEB0010E3EB0010C3EB0010B3EB0010ABEB0010A3EB00100700000051620210EB -:405E400030000000800000006BEC001063EC00105BEC001047EC001031EC001021EC001019EC001011EC0010080000007E620210400000008000000075EC001063EC00101C -:405E80005BEC001051EC001031EC001021EC001019EC001011EC00102B810400220000009C60021008000000445B0210445B021003000000985E0210050000003A5B0210D1 -:405EC0003A5B021004000000000000000000000000000000000000000000000014600210090000001E60021030610210050000002860021009000000326002106361021013 -:405F0000060000003C6002100900000046600210966102100700000050600210090000005A600210C961021008000000000000000000000000000000000000000000000001 -:405F4000A560021009000000AF600210BD60021001000000C160021007000000C9600210D860021002000000E760021005000000ED600210F56002100300000000000000C8 -:405F8000000000000000000000000000000000002A864886F70D020800686D616353484132323400484D41432D5348412D323234002A864886F70D020900686D61635348A0 -:405FC0004132353600484D41432D5348412D323536002A864886F70D020A00686D616353484133383400484D41432D5348412D333834002A864886F70D020B00686D61631F -:4060000053484135313200484D41432D5348412D353132006086480165030402040069642D736861323234006086480165030402010069642D7368613235360060864801F6 -:4060400065030402020069642D736861333834006086480165030402030069642D736861353132002B0E03020700646573434243004445532D434243002A864886F70D03CE -:4060800007006465732D656465332D636263004445532D454445332D434243002A8648CE3D030107002A864886F70D01010100727361456E6372797074696F6E00525341D1 -:4060C000002A8648CE3D02010069642D65635075626C69634B65790047656E65726963204543206B6579002B8104010C0069642D65634448004543206B657920666F7220FF -:4061000045434448002A864886F70D01010E0073686132323457697468525341456E6372797074696F6E005253412077697468205348412D323234002A864886F70D010131 -:406140000B0073686132353657697468525341456E6372797074696F6E005253412077697468205348412D323536002A864886F70D01010C007368613338345769746852AD -:406180005341456E6372797074696F6E005253412077697468205348412D333834002A864886F70D01010D0073686135313257697468525341456E6372797074696F6E0084 -:4061C0005253412077697468205348412D353132002A8648CE3D0403010065636473612D776974682D534841323234004543445341207769746820534841323234002A8607 -:4062000048CE3D0403020065636473612D776974682D534841323536004543445341207769746820534841323536002A8648CE3D0403030065636473612D776974682D5328 -:406240004841333834004543445341207769746820534841333834002A8648CE3D0403040065636473612D776974682D534841353132004543445341207769746820534890 -:4062800041353132002A864886F70D01010A005253415353412D505353002B060105050703010069642D6B702D7365727665724175746800544C5320576562205365727624 -:4062C00065722041757468656E7469636174696F6E002B060105050703020069642D6B702D636C69656E744175746800544C532057656220436C69656E74204175746865C5 -:406300006E7469636174696F6E002B060105050703030069642D6B702D636F64655369676E696E6700436F6465205369676E696E67002B060105050703040069642D6B7056 -:406340002D656D61696C50726F74656374696F6E00452D6D61696C2050726F74656374696F6E002B060105050703080069642D6B702D74696D655374616D70696E670054CF -:40638000696D65205374616D70696E67002B060105050703090069642D6B702D4F4353505369676E696E67004F435350205369676E696E6700551D130069642D63652D62F0 -:4063C00061736963436F6E73747261696E747300426173696320436F6E73747261696E747300551D0F0069642D63652D6B6579557361676500551D250069642D63652D6532 -:4064000078744B6579557361676500457874656E646564204B657920557361676500551D110069642D63652D7375626A656374416C744E616D65005375626A65637420418E -:406440006C74204E616D65006086480186F84201010069642D6E657473636170652D6365727474797065004E65747363617065204365727469666963617465205479706548 -:40648000005504030069642D61742D636F6D6D6F6E4E616D6500436F6D6D6F6E204E616D6500434E005504060069642D61742D636F756E7472794E616D6500436F756E74E6 -:4064C0007279005504070069642D61742D6C6F63616C697479004C6F63616C697479005504080069642D61742D73746174650053746174650053540055040A0069642D61CF -:40650000742D6F7267616E697A6174696F6E4E616D65004F7267616E697A6174696F6E004F0055040B0069642D61742D6F7267616E697A6174696F6E616C556E69744E614F -:406540006D65004F726720556E6974004F55002A864886F70D01090100656D61696C4164647265737300452D6D61696C2061646472657373005504050069642D61742D737A -:40658000657269616C4E756D6265720053657269616C206E756D626572005504100069642D61742D706F7374616C4164647265737300506F7374616C206164647265737325 -:4065C000005504110069642D61742D706F7374616C436F646500506F7374616C20636F6465005504040069642D61742D7375724E616D65005375726E616D6500534E0055F4 -:40660000042A0069642D61742D676976656E4E616D6500476976656E206E616D6500474E0055042B0069642D61742D696E697469616C7300496E697469616C730055042CA8 -:406640000069642D61742D67656E65726174696F6E5175616C69666965720047656E65726174696F6E207175616C69666965720055040C0069642D61742D7469746C6500DF -:406680005469746C650055042E0069642D61742D646E5175616C69666965720044697374696E67756973686564204E616D65207175616C6966696572005504410069642D76 -:4066C00061742D70736575646F6E796D0050736575646F6E796D000992268993F22C6401190069642D646F6D61696E436F6D706F6E656E7400446F6D61696E20636F6D702B -:406700006F6E656E740044430055042D0069642D61742D756E697175654964656E74696669657200556E69717565204964656E7469666965720050726F632D547970653A5B -:4067400020342C454E4352595054454400000000F867021098670210C86702106867021065636B65792E5100040000003C6802107FEF0010A7EF001091F100102DF1001019 -:406780000000000000000000FFF0001007F100101DF1001085EF001002000000486802107FEF001071EF0010B5F1001047F100100000000000000000FFF00010E9F0001098 -:4067C000D9F0001085EF001003000000426802107FEF001099EF001000000000000000000000000000000000FFF00010E9F00010D9F0001085EF001001000000BD600210F2 -:40680000E1EF001039EF00108DF000105DF0001025F00010EDEF0010D9EF0010BFEF0010AFEF00104DEF00107273612E4E007273612E45005253412D616C740045434453C7 -:40684000410045435F4448004543002D2D2D2D2D454E44205253412050524956415445204B45592D2D2D2D2D002D2D2D2D2D424547494E2052534120505249564154452052 -:406880004B45592D2D2D2D2D002D2D2D2D2D454E442045432050524956415445204B45592D2D2D2D2D002D2D2D2D2D424547494E2045432050524956415445204B45592D2A -:4068C0002D2D2D2D002D2D2D2D2D454E442050524956415445204B45592D2D2D2D2D002D2D2D2D2D424547494E2050524956415445204B45592D2D2D2D2D002D2D2D2D2DBB -:40690000454E4420525341205055424C4943204B45592D2D2D2D2D002D2D2D2D2D424547494E20525341205055424C4943204B45592D2D2D2D2D002D2D2D2D2D454E4420C4 -:406940005055424C4943204B45592D2D2D2D2D002D2D2D2D2D424547494E205055424C4943204B45592D2D2D2D2D00020305070B0D1113171D1F25292B2F353B3D43474997 -:406980004F53596165676B6D717F83898B95979DA3A7ADB3B5BFC1C5C7D3DFE3E5E9EFF1FB000000982F8A4291443771CFFBC0B5A5DBB5E95BC25639F111F159A4823F9282 -:4069C000D55E1CAB98AA07D8015B8312BE853124C37D0C55745DBE72FEB1DE80A706DC9B74F19BC1C1699BE48647BEEFC69DC10FCCA10C246F2CE92DAA84744ADCA9B05C3E -:406A0000DA88F97652513E986DC631A8C82703B0C77F59BFF30BE0C64791A7D55163CA0667292914850AB72738211B2EFC6D2C4D130D385354730A65BB0A6A762EC9C28106 -:406A4000852C7292A1E8BFA24B661AA8708B4BC2A3516CC719E892D1240699D685350EF470A06A1016C1A419086C371E4C774827B5BCB034B30C1C394AAAD84E4FCA9C5B70 -:406A8000F36F2E68EE828F746F63A5781478C8840802C78CFAFFBE90EB6C50A4F7A3F9BEF27871C60000000022AE28D7982F8A42CD65EF23914437712F3B4DECCFFBC0B5BE -:406AC000BCDB8981A5DBB5E938B548F35BC2563919D005B6F111F1599B4F19AFA4823F9218816DDAD55E1CAB420203A398AA07D8BE6F7045015B83128CB2E44EBE853124AA -:406B0000E2B4FFD5C37D0C556F897BF2745DBE72B196163BFEB1DE803512C725A706DC9B942669CF74F19BC1D24AF19EC1699BE4E3254F388647BEEFB5D58C8BC69DC10F04 -:406B4000659CAC77CCA10C2475022B596F2CE92D83E4A66EAA84744AD4FB41BDDCA9B05CB5531183DA88F976ABDF66EE52513E981032B42D6DC631A83F21FB98C82703B05B -:406B8000E40EEFBEC77F59BFC28FA83DF30BE0C625A70A934791A7D56F8203E05163CA06706E0E0A67292914FC2FD246850AB72726C9265C38211B2EED2AC45AFC6D2C4D4C -:406BC000DFB3959D130D3853DE63AF8B54730A65A8B2773CBB0A6A76E6AEED472EC9C2813B358214852C72926403F14CA1E8BFA2013042BC4B661AA89197F8D0708B4BC2DE -:406C000030BE5406A3516CC71852EFD619E892D110A96555240699D62A20715785350EF4B8D1BB3270A06A10C8D0D2B816C1A41953AB4151086C371E99EB8EDF4C77482746 -:406C4000A8489BE1B5BCB034635AC9C5B30C1C39CB8A41E34AAAD84E73E363774FCA9C5BA3B8B2D6F36F2E68FCB2EF5DEE828F74602F17436F63A57872ABF0A11478C8847B -:406C8000EC39641A0802C78C281E6323FAFFBE90E9BD82DEEB6C50A41579C6B2F7A3F9BE2B5372E3F27871C69C6126EACE3E27CA07C2C021C7B886D11EEBE0CDD67DDAEA4E -:406CC00078D16EEE7F4F7DF5BA6F1772AA67F006A698C8A2C57D630AAE0DF9BE04983F111B471C13350B711B847D0423F577DB289324C7407BABCA32BCBEC9150ABE9E3C73 -:406D00004C0D109CC4671D43B6423ECBBED4C54C2A7E65FC9C297F59ECFAD63AAB6FCB5F1758474A8C19446C0000000000000000293D0110413D0110DD3F0110E33C011087 -:406D400095400110553D01106D410110BD40011015410110653C0110653C0110A53C0110C73C01106D3C01108D3C01106B76005444425300202A2F3F3A3B227C3C3E5C00A9 -:406D80000000000000000000254A0110494A0110F55C0110C949011099580110654901106D510110FD510110B5490110215B0110BD4C0110F1590110A14A011011500110BC -:406DC0005D4A011055550110F9550110D46D0210B8650008B9B101105DB2011065B10110A9B1011079B20110C1B2011079B10110D1B201102E2E2E0A0000000000000000F9 -:406E000000000000F1690110716A01107D6A0110216A0110DD690110ED690110C1650110E9690110A5300010B3300010E3690110B92E0010C32E0010CD2E0010D72E0010C2 -:406E4000E12E0010416A0110E52E001061706C69636174696F6E5F756E6E616D65645F6D75746578006D616C6C6F635F6D7574657800656E765F6D757465780073696E6781 -:406E80006C65746F6E5F6D75746578006D61696E005254582056352E342E300000000000000000000000000000000000000000000000000000000000000000000000000010 -:406EC000000000000000000000000000000000000000000003000000E803000005000000F4660008100000000000000000000000000000000000000000000000000000002D -:406F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000406F02107C6F0210646F021004000000000000009A -:406F4000AA6F021000000000FC67000844000000406B000800020000010000000100000000000000000000000000000034670008340000006867000850000000A06F021061 -:406F800000000000B86700084400000040680008000300002800000001000000000000007274785F74696D6572007274785F69646C6500000200000000006140120000009C -:406FC00000010000000068401207000000050000000066401205000000060000000064401203000004060000000067401206000000070000000065401204000000080000BB -:407000000000654012040000000900000000634012020000000A00000000624012010000000B00000000664012050000000C00000000674012060000000D000000006740CF -:4070400012060000FFFF0000FFFFFFFF00000000030000000000614012001500010100000000684012071500010500000000664012051500010600000000644012031500AE -:40708000050600000000674012061500010700000000654012041500010800000000654012041500010900000000634012021500010A00000000624012011500010B000089 -:4070C0000000664012051500010C00000000674012061500010D00000000674012061500FFFF0000FFFFFFFF000000000A0000000100000004000000040000000A0A000CCE -:407100000B0000000100000000000000050000000B0B000C10000000446D000835940110030000000100000001000000000000000503600004000000010000000000000007 -:40714000010000000604600008000000846D00084594011008000000010000000200000002000000080800030900000001000000000000000300000009090003080000006F -:40718000046F00082594011000127A0000E1F50500000000000000000000010000001000000000504750494F2070696E207265736572766174696F6E20636F6E666C69635C -:4071C000742E004E564943206368616E6E656C2063726F73732D636865636B206661696C6564206F6E2072656C656173652E00547279696E6720746F207265736572766502 -:40720000206E6F6E206578697374696E6720706F72742F70696E210053657269616C2054582F52582070696E207265736572766174696F6E20636F6E666C6963742E0053AB -:40724000657269616C2070696E6F7574206D69736D617463682E205265717565737465642070696E7320527820616E642054782063616E2774206265207573656420666F2F -:4072800072207468652073616D652053657269616C20636F6D6D756E69636174696F6E2E0053657269616C3A2063616E6E6F742061737369676E20636C6F636B2064697680 -:4072C000696465722E000000FFFFFFFF00000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000BE -:40730000000000000000000000000000030000000100000040420F0020000000504D2063616C6C6261636B20726567697374726174696F6E206661696C656421004D6963B4 -:40734000726F7365636F6E64207469636B6572204E564943206368616E6E656C207265736572766174696F6E20636F6E666C6963742E000000005A0003000000E005000809 -:4073800043000000504F5349580000002E0000002CD40110A0D40110A0D4011010D40110A0D40110A0D40110A0D40110A0D40110A0D40110A0D4011018D40110FACE0110C5 -:4073C000A0D40110B4CE011004CF0110A0D4011050CF01103AD101103AD101103AD101103AD101103AD101103AD101103AD101103AD101103AD10110A0D40110A0D40110D6 -:40740000A0D40110A0D40110A0D40110A0D40110A0D40110A0D40110A0D40110A0D4011058CF0110A0D00110A0D40110A0D00110A0D40110A0D40110A0D40110A0D4011051 -:407440006AD10110A0D40110A0D4011072D10110A0D40110A0D40110A0D40110A0D40110A0D4011014D20110A0D40110A0D4011046D20110A0D40110A0D40110A0D4011010 -:40748000A0D40110A0D40110A0D40110A0D40110A0D40110A0D40110A0D4011040D3011074D30110A0D00110A0D00110A0D0011086D3011074D30110A0D40110A0D401105E -:4074C0008ED30110A0D40110A8D201106ED40110E4D30110DED20110A0D40110E6D20110A0D401103CD40110A0D40110A0D401109ED30110494E4600696E66004E414E00B7 -:407500006E616E0030313233343536373839414243444546000000003031323334353637383961626364656600000000286E756C6C290000300000002020202020202020CE -:4075400020202020202020203030303030303030303030303030303000202020202020202020282828282820202020202020202020202020202020202088101010101010FB -:40758000101010101010101010040404040404040404041010101010101041414141414101010101010101010101010101010101010101011010101010104242424242421D -:4075C0000202020202020202020202020202020202020202101010102000000000000000000000000000000000000000000000000000000000000000000000000000000003 -:40760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A -:4076400000000000000000000000000000000000000000000000000000000000496E66696E697479000000004E614E00000000000080E03779C34143176E05B5B5B89346E7 -:40768000F5F93FE9034F384D321D30F94877825A3CBF737FDD4F1575000000000000F03F000000000000244000000000000059400000000000408F40000000000088C34061 -:4076C00000000000006AF8400000000080842E4100000000D01263410000000084D797410000000065CDCD41000000205FA00242000000E876483742000000A2941A6D42FB -:40770000000040E59C30A2420000901EC4BCD64200003426F56B0C430080E03779C3414300A0D8855734764300C84E676DC1AB43003D9160E458E143408CB5781DAF154448 -:4077400050EFE2D6E41A4B4492D54D06CFF08044F64AE1C7022DB544B49DD9794378EA4405000000190000007D000000080C0210EA0B0210A40B0210C20A0210A40B021084 -:40778000DC0B0210A40B0210C20A0210EA0B0210EA0B0210DC0B0210C20A0210BA0A0210BA0A0210BA0A0210200E02106814021028130210281302102413021040140210B3 -:4077C000401402103214021024130210401402103214021040140210241302104814021048140210481402104C160210000000000000001000000008C000000018780210DD -:40780000C0000008B011000090120008206F00001089FD7F0100000000000000000F000010000000000000000100000001000000010000000000000000000000010F00003E -:4078400020000000000000000100000001000000010000000000000000000000020F000040000000000000000100000001000000010000000000000000000000030F00007F -:4078800080000000000000000100000001000000010000000000000000000000040F000000010000000000000100000001000000010000000000000000000000050F00001A -:4078C00000020000000000000100000001000000010000000000000000000000060F000000040000000000000100000001000000010000000000000000000000070F000051 -:4079000000080000000000000100000001000000010000000000000000000000080F000000100000000000000100000001000000010000000000000000000000090F0000FA -:40794000002000000000000001000000010000000100000000000000000000000A0F000000400000000000000100000001000000010000000000000000000000A4220210B0 -:4079800000000000CC120008440000001013000800400000180000000000000000000000001A010010000000000000000100000000000000010000000000000000000000ED -:4079C000011A010020000000000000000100000000000000010000000000000000000000021A010040000000000000000100000000000000010000000000000000000000EA -:407A0000031A010080000000000000000100000000000000010000000000000000000000F2240210000000008453000844000000C85300080004000018000000000000001C -:407A4000000000002300000000000000F07F000000000000000000000B000000E02102100400000000000000000000000A00000000000000F0000000000000000000000058 -:407A80000400000000000000000000000000000000000000722A0210000000005859000824000000C8570008900100008B2A0210000000006C5A0008240000007C590008E9 -:407AC000F00000000000000000000000000000000A000000905A0008000000000A000000305B00080000000000000000D05B0008E45B00080100000081C101108964011031 -:407B0000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051 -:407B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005 -:407B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5 -:407BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085 -:407C0000B0810008FD700110916E0210C08CFB0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033 -:407C40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 -:407C8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080F0FA0200127A0000E1F50580F0FA020000A8617C -:407CC00080F0FA0250C300003200000002FF00000700000002000000FF0000000F00000000000000FFFF00000300000000000000FFFF00000000000000000000FFFF0000BE -:407D0000FF0000000000000000000000000000004DB101100100000007000000D00500080000000000000000000000000000384000000000E005000800000000CC0800080F -:407D4000340900089C090008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011 -:407D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3 -:407DC000000000000000000000000000000000000000000000000000000000000000000001000000000000000E33CDAB34126DE6ECDE05000B000000000000000000000056 -:407E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042 -:407E40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002 -:407E800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C2 -:407EC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082 -:407F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041 -:407F40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 -:407F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1 -:407FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081 -:408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040 -:408040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -:4080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0 -:4080C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080 -:40810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F -:4081400000000000000000000000000000000000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000BC -:408180004300000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000039 -:4081C00043000000000000000000000000000000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000F9 -:4082000043000000000000000000000000000000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000B8 -:408240006DE4011065BF011000000000587502108C730210147502101475021014750210147502101475021014750210147502101475021014750210FFFFFFFFFFFFFFFF0C -:40828000FFFFFFFFFFFF00000100415343494900000000000000000000000000000000000000000000000000000041534349490000000000000000000000000000000000F1 -:4082C0000000000000000000000000000000000000000000740B0008740B00087C0B00087C0B0008840B0008840B00088C0B00088C0B0008940B0008940B00089C0B0008E9 -:408300009C0B0008A40B0008A40B0008AC0B0008AC0B0008B40B0008B40B0008BC0B0008BC0B0008C40B0008C40B0008CC0B0008CC0B0008D40B0008D40B0008DC0B00084D -:40834000DC0B0008E40B0008E40B0008EC0B0008EC0B0008F40B0008F40B0008FC0B0008FC0B0008040C0008040C00080C0C00080C0C0008140C0008140C00081C0C000806 -:408380001C0C0008240C0008240C00082C0C00082C0C0008340C0008340C00083C0C00083C0C0008440C0008440C00084C0C00084C0C0008540C0008540C00085C0C0008BD -:4083C0005C0C0008640C0008640C00086C0C00086C0C0008740C0008740C00087C0C00087C0C0008840C0008840C00088C0C00088C0C0008940C0008940C00089C0C00087D -:408400009C0C0008A40C0008A40C0008AC0C0008AC0C0008B40C0008B40C0008BC0C0008BC0C0008C40C0008C40C0008CC0C0008CC0C0008D40C0008D40C0008DC0C00083C -:40844000DC0C0008E40C0008E40C0008EC0C0008EC0C0008F40C0008F40C0008FC0C0008FC0C0008040D0008040D00080C0D00080C0D0008140D0008140D00081C0D0008F5 -:408480001C0D0008240D0008240D00082C0D00082C0D0008340D0008340D00083C0D00083C0D0008440D0008440D00084C0D00084C0D0008540D0008540D00085C0D0008AC -:4084C0005C0D0008640D0008640D00086C0D00086C0D0008740D0008740D00087C0D00087C0D0008840D0008840D00088C0D00088C0D0008940D0008940D00089C0D00086C -:408500009C0D0008A40D0008A40D0008AC0D0008AC0D0008B40D0008B40D0008BC0D0008BC0D0008C40D0008C40D0008CC0D0008CC0D0008D40D0008D40D0008DC0D00082B -:40854000DC0D0008E40D0008E40D0008EC0D0008EC0D0008F40D0008F40D0008FC0D0008FC0D0008040E0008040E00080C0E00080C0E0008140E0008140E00081C0E0008E4 -:408580001C0E0008240E0008240E00082C0E00082C0E0008340E0008340E00083C0E00083C0E0008440E0008440E00084C0E00084C0E0008540E0008540E00085C0E00089B -:4085C0005C0E0008640E0008640E00086C0E00086C0E0008740E0008740E00087C0E00087C0E0008840E0008840E00088C0E00088C0E0008940E0008940E00089C0E00085B -:408600009C0E0008A40E0008A40E0008AC0E0008AC0E0008B40E0008B40E0008BC0E0008BC0E0008C40E0008C40E0008CC0E0008CC0E0008D40E0008D40E0008DC0E00081A -:40864000DC0E0008E40E0008E40E0008EC0E0008EC0E0008F40E0008F40E0008FC0E0008FC0E0008040F0008040F00080C0F00080C0F0008140F0008140F00081C0F0008D3 -:408680001C0F0008240F0008240F00082C0F00082C0F0008340F0008340F00083C0F00083C0F0008440F0008440F00084C0F00084C0F0008540F0008540F00085C0F00088A -:4086C0005C0F0008640F0008640F00086C0F00086C0F0008FFFFFFFF00000200E9000010E13B0110C100001000000000F7B50D00019000F029F90600032820D12D4B1B699C -:40870000002B02DA2C4D2800FEBD002000F044F92A4FB842F6D00023294A1900012000F02BF9041EEED1002000F036F9254BB84203D09C42E6D00134F5E79C42E2D000F0EA -:4087400033F9214A04000121204800F00DF9002801D0194D06E0019B002B1BD1ADB2ED0006D11B4D032E1DD0200000F0F5F8CAE73E22184B06211A60174A184B1A60A32228 -:40878000174BD2009950174A9D50995899580029FCDAE6E70D4A1369002BFCDB00F00CF90500DFE70121002000F0EEF80028F9D1DAE7C046C0002340050052000101880036 -:4087C00074050008F04902003C6F00080000234001005000040126401E1F000008012640000026401C05000010B54378FF2B0DD100F0DAF8064BDB685A680123116819431F -:40880000116011681942FCD100F0A6F810BDC04680002340F0B52A4E33003268002AFCDA0222F1680A43F260F268D2071BD5254C2549F76822690D68BFB22D0A2D063D4320 -:40884000FF2712023F043A402A439025F26022691E4E2D0132402A4322610A68324015430D6022690A6800225A605A68042218490C6922430A6101281FD030BF1A68002A43 -:40888000FCDADA68D20711D50E49104C0869DA682040120C1206120C02430B480A610168DA682140120E12020A4302600221DA688A43DA6000225A60F0BD20BFDEE7C04636 -:4088C000E00023400000214090002140FF00FFFF00ED00E00423134A11690B43136101281DD030BF104B19001A68002AFCDA0F4A1069002810D10E480E4B186006200E4BDD -:4089000018600E4B383018600D4B0630186018680028FCDA0B4B136100234B60704720BFE0E7C04600ED00E0E0002340FC0025401E1F0000080126401805264004012640FC -:408940001C052640AAAAAAAA01B40248844601BC604700BF8D93011001B40248844601BC604700BFFBA3011001B40248844601BC604700BFB59A011001B40248844601BC3E -:40898000604700BFA59B011001B40248844601BC604700BF259D011001B40248844601BC604700BF999D011001B40248844601BC604700BFF3A3011001B40248844601BCF5 -:4089C000604700BFD1980110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097 -:0200000490303A -:020000001133BA -:0200000490501A -:0C0000000005E20721002101000032335E -:00000001FF diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/analogin_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/analogin_api.c index 9e57aa551b2..9ef28d9258f 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,19 +164,49 @@ 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); } +const PinMap *analogin_pinmap() +{ + return PinMap_ADC; +} + #endif // DEVICE_ANALOGIN diff --git a/targets/TARGET_Cypress/TARGET_PSOC6/analogout_api.c b/targets/TARGET_Cypress/TARGET_PSOC6/analogout_api.c index 98be6545307..0fd185b7830 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) @@ -146,5 +159,10 @@ uint16_t analogout_read_u16(dac_t *obj) return value; } +const PinMap *analogout_pinmap() +{ + return PinMap_DAC; +} + #endif // DEVICE_ANALOGIN 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 7141757bf06..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 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 76cc0afda86..513130da3b1 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); } @@ -265,13 +259,13 @@ 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_LPTICKER -static cy_en_syspm_status_t i2c_pm_callback(cy_stc_syspm_callback_params_t *callback_params) +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_LPTICKER @@ -279,40 +273,62 @@ static cy_en_syspm_status_t i2c_pm_callback(cy_stc_syspm_callback_params_t *call 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_LPTICKER - 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 + } 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,11 +495,31 @@ 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); } } +const PinMap *i2c_master_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_master_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + +const PinMap *i2c_slave_sda_pinmap() +{ + return PinMap_I2C_SDA; +} + +const PinMap *i2c_slave_scl_pinmap() +{ + return PinMap_I2C_SCL; +} + #if DEVICE_I2C_ASYNCH void i2c_transfer_asynch(i2c_t *obj_in, @@ -477,7 +552,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 +571,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 0513b0b92e7..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,34 +21,26 @@ #ifndef MBED_MBED_RTX_H #define MBED_MBED_RTX_H -#if defined(TARGET_MCU_PSOC6_M0) - -#ifdef TARGET_PSA +#if defined(TARGET_CY8CKIT_062_4343W) #ifndef INITIAL_SP -#define INITIAL_SP (PSA_SECURE_RAM_START + PSA_SECURE_RAM_SIZE) -#endif // INITIAL_SP -#else +#define INITIAL_SP (0x08002000 + 0x000FD800) /* Ram origin + length */ +#endif +#elif defined(TARGET_CY8CKIT_062_BLE) #ifndef INITIAL_SP -#define INITIAL_SP (0x08000000 + 0x00010000) // Ram origin + length -#endif // INITIAL_SP - -#endif // TARGET_PSA -#elif defined(TARGET_MCU_PSOC6_M4) - -#ifdef TARGET_PSA +#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 (PSA_NON_SECURE_RAM_START + PSA_NON_SECURE_RAM_SIZE) -#endif // INITIAL_SP -#else +#define INITIAL_SP (0x08002000 + 0x000FD800) /* Ram origin + length */ +#endif +#elif defined(TARGET_CYW943012P6EVB_01) #ifndef INITIAL_SP -#define INITIAL_SP (0x08010000 + 0x00037800) // Ram origin + length -#endif // INITIAL_SP -#endif // TARGET_PSA - -#else - -#error "Unknown board" - +#define INITIAL_SP (0x08002000 + 0x00045800) /* Ram origin + length */ +#endif #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 0ba07af1f71..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; @@ -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; @@ -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; @@ -171,16 +176,16 @@ 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; + 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; + cy_stc_syspm_callback_params_t pm_callback_params; + cy_stc_syspm_callback_t pm_callback_handler; #endif }; #endif // DEVICE_PWMOUT @@ -192,7 +197,7 @@ struct analogin_s { SAR_Type *base; PinName pin; uint32_t channel_mask; - uint32_t clock; + en_clk_dst_t clock; }; #endif // DEVICE_ANALOGIN @@ -202,7 +207,7 @@ struct analogin_s { struct dac_s { CTDAC_Type *base; PinName pin; - uint32_t clock; + en_clk_dst_t clock; }; #endif // DEVICE_ANALOGOUT 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 1ea8352f53d..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 @@ -140,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 @@ -246,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) { + // Store current index + uint32_t first_index = p_alloc->current_index; - 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) { + // 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; + } } } @@ -277,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(); } @@ -292,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(); } @@ -335,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. @@ -376,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; } @@ -455,17 +540,17 @@ void cy_srm_initialize(void) } #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/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/device.h b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/device.h new file mode 100644 index 00000000000..684220204d0 --- /dev/null +++ b/targets/TARGET_Cypress/TARGET_PSOC6/psoc6pdl/devices/include/device.h @@ -0,0 +1,24 @@ +/* + * 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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_DEVICE_H +#define MBED_DEVICE_H + +#include "cmsis.h" +#include "objects.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, /**